From 673ac3205e36c37e9109a15597c598ddad13c322 Mon Sep 17 00:00:00 2001 From: Kevin Ness Date: Mon, 25 Aug 2025 13:24:17 -0500 Subject: [PATCH 01/12] Initial pass at blog post for next release --- blog/boa-release-21.md | 208 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 blog/boa-release-21.md diff --git a/blog/boa-release-21.md b/blog/boa-release-21.md new file mode 100644 index 00000000..00652cd6 --- /dev/null +++ b/blog/boa-release-21.md @@ -0,0 +1,208 @@ +--- +layout: post +tags: [post] +title: "Boa release v0.21" +description: "Boa release v0.21" +authors: boa-dev +--- + +## Summary + +Boa v0.21 is now available! After 9 months of development we are very +happy to present you the latest release of the Boa JavaScript engine. +Boa makes it easy to embed a JS engine in your projects, and you can +even use it from WebAssembly. See the [about](/about) page for more +info. + +In this release, our conformance has grown from 89.92% to 93.94% in the +official ECMAScript Test Suite (Test262). Our growth in conformance is +driven by increased conformance for Temporal (discussed further below) +with the rest of the development effort being focused on performance and +runtime features. We will continue to implement more of the +specification; however, as of the current moment, Boa's conformance +aligns with the major browser engine's conformance, so future increases +in conformance will be minor or bound to the feature size going forward. + +You can check the full list of changes [here][changelog], and the full +information on conformance [here][conformance]. + + + +## Feature Highlights + +### Temporal + +There has been a lot of progress made on Temporal, the new Stage 3 +date/time proposal. With this release, Boa's conformance on Temporal +grew from 40.67% to 97.06%. As of this moment, Boa is the second most +conformant Temporal implementation behind SpiderMonkey with others soon +to follow. + +The implementation is backed by the `temporal_rs` date/time Rust +library, which we went over briefly in our June +[blog post](./2025-06-15-temporal-impl-1.md) with hopefully another post +in the not too distant future. So far, `temporal_rs` has been used in +both V8 and Keisel to implement Temporal as well. + +Temporal can be used from `boa_cli` or enabled in `boa_engine` with the +`experimental` or `temporal` feature. + +You can also try out Temporal directly in Rust using `temporal_rs`: + +``` +cargo add temporal_rs +``` + +#### Special thanks + +Special thanks to all the student's from University of Bergen as well as +Shane Carr ([@sffc](https://github.com/@sffc)) and Manish Goregaokar +([@manishearth](https://github.com/@manishearth)) from ICU4X for their +contributions and help with `temporal_rs`. + +### New Set methods + +Boa now supports the new set methods added in ES2025. + +These new methods are: + +- `Set.prototype.intersection(other)` +- `Set.prototype.union(other)` +- `Set.prototype.difference(other)` +- `Set.prototype.symmetricDifference(other)` +- `Set.prototype.isSubsetOf(other)` +- `Set.prototype.isSupersetOf(other)` +- `Set.prototype.isDisjointFrom(other)` + +Thanks to [@Hemenguelbindi](https://github.com/@Hemenguelbindi) for +their work on this feature. + +### Float16 support for TypedArrays, Dataview and Math built-ins + +Boa now supports `f16` types for the TypedArray, Dataview, and Math +built-ins. + +```javascript +const x = new Float16Array([37, 42]); +console.log(x[1]); // 42 +``` + +### Error.isError + +Boa now supports `Error.isError`, which is accepted for ES2026. + +```javascript +let check = Error.isError(new Error()); // returns true +``` + +### Math.sumPrecise + +Boa now supports `Math.sumPrecise`, which is accepted for ES2026. + +```javascript +let sum = Math.sumPrecise([1.0, 2.5]); +console.log(sum); // 3.5 +``` + +## Boa Runtime + +Work on Boa's runtime crate has continued with additional APIs added. + +### Additional APIs + +Additional APIs added the the Runtime crate include: + +- `fetch` +- `setTimeout` +- `setInterval` +- `clearInterval` +- `queueMicrotask` + +### Conformance testing + +We've added some support for conformance testing runtime features +against the Web Platform Tests (WPT). + +## Performance + +### Register VM + +With this release, Boa's virtual machine (VM) moved from a stack based +VM to a register based VM. + +## New Contributors + +TODO + +## Looking Forward + +### Garbage collector rewrite + +This has been long overdue. Boa's garbage collector is a forked and +modified verison of `rust-gc`, and we have long been pushing our forked +gc to its limits. + +We have seen plenty of evidence that simply swapping allocators can +increase Boa's performance, and work on this will hopefully resume soon. +If you're interested in garbage collectors and/or would be interested in +helping out, feel free to join our GC room on [Matrix]. + +### Runtime functionality + +The `boa_runtime` crate was initially meant to contain functionality +that was not meant to exist in the core engine, primarily our console +implementation. Noticeably, we have since added more runtime features to +the crate with more expected in the next release. + +Our current plan is if there is enough interest and the crate becomes +too large, we will split `boa_runtime` into it's own repository. If you +are interested in implementing any runtime features, feel free to reach +out. + +## How can you support Boa? + +Boa is an independent JavaScript engine implementing the ECMAScript +specification, and we rely on the support of the community to keep it +going. If you want to support us, you can do so by donating to our [open +collective]. Proceeeds here go towards this very website, the domain +name, and remunerating members of the team who have worked on the +features released. + +If financial contribution is not your strength, you can contribute by +asking to be assigned to one of our [open issues], and asking for +mentoring if you don't know your way around the engine. Our +[contribution guide] should help you here. If you are more used to +working with JavaScript or frontend web development, we also welcome +help to improve our web presence, either in [our website], or in our +[testing representation] page or benchmarks page. You can also +contribute to our Criterion benchmark comparison GitHub [action]. + +We are also looking to improve the documentation of the engine, both for +developers of the engine itself and for users of the engine. Feel free +to contact us in [Matrix]. + +[open collective]: https://opencollective.com/boa +[open issues]: + https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+no%3Aassignee +[contribution guide]: + https://github.com/boa-dev/boa/blob/main/CONTRIBUTING.md +[our website]: https://github.com/boa-dev/boa-dev.github.io +[testing representation]: https://github.com/boa-dev/boa/issues/820 +[action]: https://github.com/boa-dev/criterion-compare-action +[Matrix]: https://matrix.to/#/#boa:matrix.org + +## Thank You + +Once again, big thanks to [all the contributors][contributors] of this +release!!! + +[contributors]: + https://github.com/boa-dev/boa/graphs/contributors?from=2024-12-05&to=2025-08-30&type=c +[changelog]: https://github.com/boa-dev/boa/blob/v0.21/CHANGELOG.md +[conformance]: https://boajs.dev/boa/test262/ +[feed]: https://boajs.dev/blog/rss.xml +[collective]: https://opencollective.com/boa +[easy_issues]: + https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3AE-Easy +[first_issues]: + https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 From 35878d7f5ef3c4f327e4d029c788ceb2762d10d4 Mon Sep 17 00:00:00 2001 From: Kevin Ness Date: Wed, 27 Aug 2025 22:24:53 -0500 Subject: [PATCH 02/12] Small adjustments + add backtrace section with gif --- blog/boa-release-21/img/backtrace.gif | Bin 0 -> 51491 bytes .../index.md} | 31 +++++++++++++----- blog/boa-release-21/tapes/backtrace.tape | 30 +++++++++++++++++ 3 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 blog/boa-release-21/img/backtrace.gif rename blog/{boa-release-21.md => boa-release-21/index.md} (86%) create mode 100644 blog/boa-release-21/tapes/backtrace.tape diff --git a/blog/boa-release-21/img/backtrace.gif b/blog/boa-release-21/img/backtrace.gif new file mode 100644 index 0000000000000000000000000000000000000000..a65a17dbbf86518f6bccc094e719170cd4d8e7c2 GIT binary patch literal 51491 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 { throw new Error() }; oops();" > yikes.js ` + +Enter + +Type@100ms "boa yikes.js" + +Enter + +Sleep 4s + +Hide + +Type "rm yikes.js" + +Enter + From f6b41639eb7001c49c7ff47f736c51cb2199c78c Mon Sep 17 00:00:00 2001 From: Kevin Ness <46825870+nekevss@users.noreply.github.com> Date: Wed, 3 Sep 2025 18:28:20 -0500 Subject: [PATCH 03/12] Update blog/boa-release-21/index.md Co-authored-by: Hans Larsen --- blog/boa-release-21/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 2656a6b6..4f95624c 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -91,8 +91,8 @@ This release adds support for `f16` types for the TypedArray, Dataview, and Math built-ins. ```javascript -const x = new Float16Array([37, 42]); -console.log(x[1]); // 42 +const x = new Float16Array([37, 42.123456]); +console.log(x[1]); // 42.125 ``` ### Error.isError From e321f6933afd8216799399f98ea6431be51f4330 Mon Sep 17 00:00:00 2001 From: Kevin Ness <46825870+nekevss@users.noreply.github.com> Date: Wed, 3 Sep 2025 18:28:25 -0500 Subject: [PATCH 04/12] Update blog/boa-release-21/index.md Co-authored-by: Hans Larsen --- blog/boa-release-21/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 4f95624c..ae596de9 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -111,8 +111,8 @@ We've opted for using the new [`xsum`](https://crates.io/crates/xsum) summation for the underlying implementation. ```javascript -let sum = Math.sumPrecise([1.0, 2.5]); -console.log(sum); // 3.5 +let sum = Math.sumPrecise([1e20, 0.1, -1e20]); +console.log(sum); // 0.1 ``` ## Boa Runtime From 099029b72b72ebb76262ec4dde933422ec44e315 Mon Sep 17 00:00:00 2001 From: Kevin Ness Date: Sat, 6 Sep 2025 13:06:15 -0500 Subject: [PATCH 05/12] A few more changes / updates --- blog/boa-release-21/index.md | 67 +++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index ae596de9..22812211 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -17,9 +17,9 @@ info. In this release, our conformance has grown from 89.92% to 93.94% in the official ECMAScript Test Suite (Test262). Our growth in conformance is driven by increased conformance for Temporal (discussed further below) -with the rest of the development effort being focused on performance and -runtime features. We will continue to implement more of the -specification; however, as of the current moment, Boa's conformance +with the rest of the development effort being focused on performance, +internal improvements, and runtime features. We will continue to implement +more of the specification; however, as of the current moment, Boa's conformance aligns with the major browser engine's conformance, so future increases in conformance will be minor or bound to the feature size going forward. @@ -34,15 +34,13 @@ information on conformance [here][conformance]. There has been a lot of progress made on Temporal, the new Stage 3 date/time proposal. With this release, Boa's conformance on Temporal -grew from 40.67% to 97.06%. As of this moment, Boa is the second most -conformant Temporal implementation behind SpiderMonkey with others soon -to follow. +grew from 40.67% to ~97%. The implementation is backed by the `temporal_rs` date/time Rust library, which we went over briefly in our June [blog post](./2025-06-15-temporal-impl-1.md) with hopefully another post -in the not too distant future. So far, `temporal_rs` has been used in -both V8 and Keisel to implement Temporal as well. +in the not too distant future. So far, `temporal_rs` has also been used in +both V8 and Keisel to implement Temporal. Temporal can be used from `boa_cli` or enabled in `boa_engine` with the `experimental` or `temporal` feature. @@ -62,13 +60,19 @@ and help with `temporal_rs`. ### Span nodes and error backtraces -We also closed an outstanding issue of supporting span nodes in our parser and AST. This -allowed us to implement backtraces to provide better debugging information when using -Boa. +We also add support for span nodes in our parser and AST. Span nodes mark the start and +end index in the source code for a specific token. + +As a result, this release of Boa supports error backtraces when an exception is thrown +as seen below. ![backtrace-example](./img/backtrace.gif) -### New Set methods +This feature will greatly help with debugging errors when using Boa. + +### Specification updates + +#### Set methods This release adds support for the new set methods added in ES2025. @@ -85,7 +89,7 @@ The new methods are: Thanks to [@Hemenguelbindi](https://github.com/@Hemenguelbindi) for their work on this feature. -### Float16 support for TypedArrays, Dataview and Math built-ins +#### Float16 support for TypedArrays, Dataview and Math built-ins This release adds support for `f16` types for the TypedArray, Dataview, and Math built-ins. @@ -95,7 +99,7 @@ const x = new Float16Array([37, 42.123456]); console.log(x[1]); // 42.125 ``` -### Error.isError +#### Error.isError This release adds support for `Error.isError`, which is accepted for ES2026. @@ -103,7 +107,7 @@ This release adds support for `Error.isError`, which is accepted for ES2026. let check = Error.isError(new Error()); // returns true ``` -### Math.sumPrecise +#### Math.sumPrecise This release adds support for `Math.sumPrecise`, which is accepted for ES2026. @@ -136,12 +140,22 @@ against the Web Platform Tests (WPT). ## Performance -### Register VM +### NaN Boxing + +With this release, Boa's `JsValue` will use nan-boxing by default. The NaN boxing of `JsValue` +increased memory and runtime performance over the older enum. -With this release, Boa's virtual machine (VM) moved from a stack based -VM to a register based VM. +As a note, the current implementation is not compatible with all platforms. While we hope +to address this in the future. The legacy enum JsValue will be available via the `jsvalue-enum` +feature flag. -TODO: Potentially add more here +Unfamiliar with NaN Boxing? We won't go over it in depth here, but we recommend +[this article](https://piotrduperas.com/posts/nan-boxing) to learn more. + +### Register VM + +Boa's virtual machine (VM) moved from a stack based VM to a register based VM in +[PR #3798](https://github.com/boa-dev/boa/pull/3798). ## New Contributors @@ -163,14 +177,19 @@ helping out, feel free to join our GC room on [Matrix]. ### Runtime functionality The `boa_runtime` crate was initially meant to contain functionality -that was not meant to exist in the core engine, primarily our console -implementation. Noticeably, we have since added more runtime features to -the crate with more expected in the next release. +that was not meant to exist in the core ECMAScript implementation, for instance +the console implementation. Noticeably, we have since added more runtime +features to the crate with even more features expected in the next release. Our current plan is if there is enough interest and the crate becomes too large, we will split `boa_runtime` into it's own repository. If you -are interested in implementing any runtime features, feel free to reach -out. +are interested in implementing any runtime features or contributing to +a runtime, feel free to reach out. + +### Continuing improvement of performance + +As mentioned on previous release posts, we will continue to further work +on improving Boa's overall performance. ## How can you support Boa? From 378a295a6525f804c41e175b22a34d0029225a28 Mon Sep 17 00:00:00 2001 From: Kevin Ness Date: Sat, 6 Sep 2025 13:12:23 -0500 Subject: [PATCH 06/12] Add intl / ecma402 to looking forward --- blog/boa-release-21/index.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 22812211..290b8e7b 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -169,10 +169,11 @@ This has been long overdue. Boa's garbage collector is a forked and modified verison of `rust-gc`, and we have long been pushing our forked gc to its limits. -We have seen plenty of evidence that simply swapping allocators can -increase Boa's performance, and work on this will hopefully resume soon. -If you're interested in garbage collectors and/or would be interested in -helping out, feel free to join our GC room on [Matrix]. +We have seen some evidence from previous pull requests that simply swapping +allocators from Rust's global allocator can increase Boa's performance, and +work on this will hopefully resume soon. If you're interested in garbage +collectors and/or would be interested in helping out, feel free to join our +GC room on [Matrix]. ### Runtime functionality @@ -186,11 +187,17 @@ too large, we will split `boa_runtime` into it's own repository. If you are interested in implementing any runtime features or contributing to a runtime, feel free to reach out. -### Continuing improvement of performance +### Continuing performance improvements As mentioned on previous release posts, we will continue to further work on improving Boa's overall performance. +### `Intl` and ECMA402 conformance + +We currently have some general support for the ECMA402 and ECMAScript's `Intl` object. We +will continue to some general work on ECMA402 conformance to allow Boa to be fully usable +for internationalization use cases. + ## How can you support Boa? Boa is an independent JavaScript engine implementing the ECMAScript From d0e52ce1880ddfde115efff4bfaa4e4f84da9e47 Mon Sep 17 00:00:00 2001 From: jedel1043 Date: Sat, 4 Oct 2025 12:16:59 -0600 Subject: [PATCH 07/12] Update deps and fix most warnings --- blog/boa-release-21/index.md | 4 +- docusaurus.config.ts | 4 +- package-lock.json | 2286 ++++++++++++++++++++-------------- package.json | 34 +- 4 files changed, 1377 insertions(+), 951 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 290b8e7b..8f2aae5b 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -38,7 +38,7 @@ grew from 40.67% to ~97%. The implementation is backed by the `temporal_rs` date/time Rust library, which we went over briefly in our June -[blog post](./2025-06-15-temporal-impl-1.md) with hopefully another post +[blog post](../2025-06-15-temporal-impl-1.md) with hopefully another post in the not too distant future. So far, `temporal_rs` has also been used in both V8 and Keisel to implement Temporal. @@ -143,7 +143,7 @@ against the Web Platform Tests (WPT). ### NaN Boxing With this release, Boa's `JsValue` will use nan-boxing by default. The NaN boxing of `JsValue` -increased memory and runtime performance over the older enum. +increased memory and runtime performance over the older enum. As a note, the current implementation is not compatible with all platforms. While we hope to address this in the future. The legacy enum JsValue will be available via the `jsvalue-enum` diff --git a/docusaurus.config.ts b/docusaurus.config.ts index d5470224..efa3e86b 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -23,7 +23,6 @@ const config: Config = { projectName: "boa-dev.github.io", onBrokenLinks: "throw", - onBrokenMarkdownLinks: "warn", // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want @@ -53,6 +52,9 @@ const config: Config = { markdown: { mermaid: true, + hooks: { + onBrokenMarkdownLinks: "warn" + } }, themes: ["@docusaurus/theme-mermaid"], diff --git a/package-lock.json b/package-lock.json index 53c2c454..11efdf46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,93 +10,150 @@ "license": "ISC", "dependencies": { "@boa-dev/boa_wasm": "^0.20.0", - "@docusaurus/core": "^3.8.1", - "@docusaurus/plugin-content-pages": "^3.8.1", - "@docusaurus/preset-classic": "^3.8.1", - "@docusaurus/theme-mermaid": "^3.8.1", + "@docusaurus/core": "^3.9.1", + "@docusaurus/plugin-content-pages": "^3.9.1", + "@docusaurus/preset-classic": "^3.9.1", + "@docusaurus/theme-mermaid": "^3.9.1", "@mdx-js/react": "^3.1.1", "@monaco-editor/react": "^4.7.0", "chart.js": "^4.5.0", "clsx": "^2.1.1", "prism-react-renderer": "^2.4.1", - "react": "^19.1.1", + "react": "^19.2.0", "react-chartjs-2": "^5.3.0", - "react-dom": "^19.1.1" + "react-dom": "^19.2.0" }, "devDependencies": { - "@docusaurus/eslint-plugin": "^3.8.1", - "@docusaurus/module-type-aliases": "^3.8.1", - "@docusaurus/plugin-client-redirects": "^3.8.1", - "@docusaurus/tsconfig": "^3.8.1", - "@docusaurus/types": "^3.8.1", + "@docusaurus/eslint-plugin": "^3.9.1", + "@docusaurus/module-type-aliases": "^3.9.1", + "@docusaurus/plugin-client-redirects": "^3.9.1", + "@docusaurus/tsconfig": "^3.9.1", + "@docusaurus/types": "^3.9.1", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.35.0", - "@typescript-eslint/eslint-plugin": "^8.42.0", - "@typescript-eslint/parser": "^8.42.0", - "eslint": "^9.35.0", + "@eslint/js": "^9.37.0", + "@typescript-eslint/eslint-plugin": "^8.45.0", + "@typescript-eslint/parser": "^8.45.0", + "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", - "globals": "^16.3.0", + "globals": "^16.4.0", "prettier": "3.6.2", - "typescript": "^5.9.2" + "typescript": "^5.9.3" }, "engines": { "node": ">=20" } }, + "node_modules/@ai-sdk/gateway": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-1.0.33.tgz", + "integrity": "sha512-v9i3GPEo4t3fGcSkQkc07xM6KJN75VUv7C1Mqmmsu2xD8lQwnQfsrgAXyNuWe20yGY0eHuheSPDZhiqsGKtH1g==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.10", + "@vercel/oidc": "^3.0.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/provider": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.10.tgz", + "integrity": "sha512-T1gZ76gEIwffep6MWI0QNy9jgoybUHE7TRaHB5k54K8mF91ciGFlbtCGxDYhMH3nCRergKwYFIDeFF0hJSIQHQ==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/react": { + "version": "2.0.60", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.60.tgz", + "integrity": "sha512-Ev0MC0I7eDcCH4FnrHzK48g9bJjyF3F67MMq76qoVsbtcs6fGIO5RjmYgPoFeSo8/yQ5EM6i/14yfcD0oB+moA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider-utils": "3.0.10", + "ai": "5.0.60", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.25.76 || ^4.1.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, "node_modules/@algolia/abtesting": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.3.0.tgz", - "integrity": "sha512-KqPVLdVNfoJzX5BKNGM9bsW8saHeyax8kmPFXul5gejrSPN3qss7PgsFH5mMem7oR8tvjvNkia97ljEYPYCN8Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.5.0.tgz", + "integrity": "sha512-W/ohRkbKQsqDWALJg28X15KF7Tcyg53L1MfdOkLgvkcCcofdzGHSimHHeNG05ojjFw9HK8+VPhe/Vwq4MozIJg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/autocomplete-core": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz", - "integrity": "sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz", + "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.17.9", - "@algolia/autocomplete-shared": "1.17.9" + "@algolia/autocomplete-plugin-algolia-insights": "1.19.2", + "@algolia/autocomplete-shared": "1.19.2" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz", - "integrity": "sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz", + "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" + "@algolia/autocomplete-shared": "1.19.2" }, "peerDependencies": { "search-insights": ">= 1 < 3" } }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz", - "integrity": "sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==", - "license": "MIT", - "dependencies": { - "@algolia/autocomplete-shared": "1.17.9" - }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, "node_modules/@algolia/autocomplete-shared": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz", - "integrity": "sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz", + "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==", "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", @@ -104,99 +161,99 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.37.0.tgz", - "integrity": "sha512-Dp2Zq+x9qQFnuiQhVe91EeaaPxWBhzwQ6QnznZQnH9C1/ei3dvtmAFfFeaTxM6FzfJXDLvVnaQagTYFTQz3R5g==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.39.0.tgz", + "integrity": "sha512-Vf0ZVe+qo3sHDrCinouJqlg8VoxM4Qo/KxNIqMYybkuctutfnp3kIY9OmESplOQ/9NGBthU9EG+4d5fBibWK/A==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.37.0.tgz", - "integrity": "sha512-wyXODDOluKogTuZxRII6mtqhAq4+qUR3zIUJEKTiHLe8HMZFxfUEI4NO2qSu04noXZHbv/sRVdQQqzKh12SZuQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.39.0.tgz", + "integrity": "sha512-V16ITZxYIwcv1arNce65JZmn94Ft6vKlBZ//gXw8AvIH32glJz1KcbaVAUr9p7PYlGZ/XVHP6LxDgrpNdtwgcA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.37.0.tgz", - "integrity": "sha512-GylIFlPvLy9OMgFG8JkonIagv3zF+Dx3H401Uo2KpmfMVBBJiGfAb9oYfXtplpRMZnZPxF5FnkWaI/NpVJMC+g==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.39.0.tgz", + "integrity": "sha512-UCJTuwySEQeiKPWV3wruhuI/wHbDYenHzgL9pYsvh6r/u5Z+g61ip1iwdAlFp02CnywzI9O7+AQPh2ManYyHmQ==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.37.0.tgz", - "integrity": "sha512-T63afO2O69XHKw2+F7mfRoIbmXWGzgpZxgOFAdP3fR4laid7pWBt20P4eJ+Zn23wXS5kC9P2K7Bo3+rVjqnYiw==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.39.0.tgz", + "integrity": "sha512-s0ia8M/ZZR+iO2uLNTBrlQdEb6ZMAMcKMHckp5mcoglxrf8gHifL4LmdhGKdAxAn3UIagtqIP0RCnIymHUbm7A==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.37.0.tgz", - "integrity": "sha512-1zOIXM98O9zD8bYDCJiUJRC/qNUydGHK/zRK+WbLXrW1SqLFRXECsKZa5KoG166+o5q5upk96qguOtE8FTXDWQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.39.0.tgz", + "integrity": "sha512-vZPIt7Lw+toNsHZUiPhNIc1Z3vUjDp7nzn6AMOaPC73gEuTq2iLPNvM06CSB6aHePo5eMeJIP5YEKBUQUA/PJA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.37.0.tgz", - "integrity": "sha512-31Nr2xOLBCYVal+OMZn1rp1H4lPs1914Tfr3a34wU/nsWJ+TB3vWjfkUUuuYhWoWBEArwuRzt3YNLn0F/KRVkg==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.39.0.tgz", + "integrity": "sha512-jcPQr3iKTWNVli2NYHPv02aNLwixDjPCpOgMp9CZTvEiPI6Ec4jHX+oFr3LDZagOFY9e1xJhc/JrgMGGW1sHnw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.37.0.tgz", - "integrity": "sha512-DAFVUvEg+u7jUs6BZiVz9zdaUebYULPiQ4LM2R4n8Nujzyj7BZzGr2DCd85ip4p/cx7nAZWKM8pLcGtkTRTdsg==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.39.0.tgz", + "integrity": "sha512-/IYpF10BpthGZEJQZMhMqV4AqWr5avcWfZm/SIKK1RvUDmzGqLoW/+xeJVX9C8ZnNkIC8hivbIQFaNaRw0BFZQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" @@ -209,81 +266,81 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.37.0.tgz", - "integrity": "sha512-pkCepBRRdcdd7dTLbFddnu886NyyxmhgqiRcHHaDunvX03Ij4WzvouWrQq7B7iYBjkMQrLS8wQqSP0REfA4W8g==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.39.0.tgz", + "integrity": "sha512-IgSHKUiuecqLfBlXiuCSdRTdsO3/yvpmXrMFz8fAJ8M4QmDtHkOuD769dmybRYqsbYMHivw+lir4BgbRGMtOIQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.37.0.tgz", - "integrity": "sha512-fNw7pVdyZAAQQCJf1cc/ih4fwrRdQSgKwgor4gchsI/Q/ss9inmC6bl/69jvoRSzgZS9BX4elwHKdo0EfTli3w==", + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.39.0.tgz", + "integrity": "sha512-8Xnd4+609SKC/hqVsuFc4evFBmvA2765/4NcH+Dpr756SKPbL1BY0X8kVxlmM3YBLNqnduSQxHxpDJUK58imCA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.37.0.tgz", - "integrity": "sha512-U+FL5gzN2ldx3TYfQO5OAta2TBuIdabEdFwD5UVfWPsZE5nvOKkc/6BBqP54Z/adW/34c5ZrvvZhlhNTZujJXQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.39.0.tgz", + "integrity": "sha512-D7Ye2Ss/5xqUkQUxKm/VqEJLt5kARd9IMmjdzlxaKhGgNlOemTay0lwBmOVFuJRp7UODjp5c9+K+B8g0ORObIw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "@algolia/client-common": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.37.0.tgz", - "integrity": "sha512-Ao8GZo8WgWFABrU7iq+JAftXV0t+UcOtCDL4mzHHZ+rQeTTf1TZssr4d0vIuoqkVNnKt9iyZ7T4lQff4ydcTrw==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.39.0.tgz", + "integrity": "sha512-mgPte1ZJqpk9dkVs44J3wKAbHATvHZNlSpzhMdjMLIg/3qTycSZyDiomLiSlxE8CLsxyBAOJWnyKRHfom+Z1rg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0" + "@algolia/client-common": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.37.0.tgz", - "integrity": "sha512-H7OJOXrFg5dLcGJ22uxx8eiFId0aB9b0UBhoOi4SMSuDBe6vjJJ/LeZyY25zPaSvkXNBN3vAM+ad6M0h6ha3AA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.39.0.tgz", + "integrity": "sha512-LIrCkrxu1WnO3ev1+w6NnZ12JZL/o+2H9w6oWnZAjQZIlA/Ym6M9QHkt+OQ/SwkuoiNkW3DAo+Pi4A2V9FPtqg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0" + "@algolia/client-common": "5.39.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.37.0.tgz", - "integrity": "sha512-npZ9aeag4SGTx677eqPL3rkSPlQrnzx/8wNrl1P7GpWq9w/eTmRbOq+wKrJ2r78idlY0MMgmY/mld2tq6dc44g==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.39.0.tgz", + "integrity": "sha512-6beG+egPwXmvhAg+m0STCj+ZssDcjrLzf4L05aKm2nGglMXSSPz0cH/rM+kVD9krNfldiMctURd4wjojW1fV0w==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.37.0" + "@algolia/client-common": "5.39.0" }, "engines": { "node": ">= 14.0.0" @@ -303,9 +360,9 @@ } }, "node_modules/@antfu/utils": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.0.tgz", - "integrity": "sha512-Oq1d9BGZakE/FyoEtcNeSwM7MpDO2vUBi11RWBZXf75zPsbUVWmUs03EqkRFrcgbXyKTas0BdZWC1wcuSoqSAw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-TMilPqXyii1AsiEii6l6ubRzbo76p6oshUSYPaKsmXDavyMLqjzVDkcp3pHp5ELMUNJHATcEOGxKTTsX9yYhGg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -2229,9 +2286,9 @@ } }, "node_modules/@csstools/postcss-alpha-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.0.tgz", - "integrity": "sha512-r2L8KNg5Wriq5n8IUQcjzy2Rh37J5YjzP9iOyHZL5fxdWYHB08vqykHQa4wAzN/tXwDuCHnhQDGCtxfS76xn7g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz", + "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==", "funding": [ { "type": "github", @@ -2247,7 +2304,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2319,9 +2376,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.11.tgz", - "integrity": "sha512-AtH22zLHTLm64HLdpv5EedT/zmYTm1MtdQbQhRZXxEB6iYtS6SrS1jLX3TcmUWMFzpumK/OVylCm3HcLms4slw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz", + "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==", "funding": [ { "type": "github", @@ -2337,7 +2394,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2348,9 +2405,9 @@ } }, "node_modules/@csstools/postcss-color-function-display-p3-linear": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.0.tgz", - "integrity": "sha512-7q+OuUqfowRrP84m/Jl0wv3pfCQyUTCW5MxDIux+/yty5IkUUHOTigCjrC0Fjy3OT0ncGLudHbfLWmP7E1arNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz", + "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==", "funding": [ { "type": "github", @@ -2366,7 +2423,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2377,9 +2434,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.11.tgz", - "integrity": "sha512-cQpXBelpTx0YhScZM5Ve0jDCA4RzwFc7oNafzZOGgCHt/GQVYiU8Vevz9QJcwy/W0Pyi/BneY+KMjz23lI9r+Q==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz", + "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==", "funding": [ { "type": "github", @@ -2395,7 +2452,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2406,9 +2463,9 @@ } }, "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.1.tgz", - "integrity": "sha512-c7hyBtbF+jlHIcUGVdWY06bHICgguV9ypfcELU3eU3W/9fiz2dxM8PqxQk2ndXYTzLnwPvNNqu1yCmQ++N6Dcg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz", + "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==", "funding": [ { "type": "github", @@ -2424,7 +2481,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2435,9 +2492,9 @@ } }, "node_modules/@csstools/postcss-content-alt-text": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.7.tgz", - "integrity": "sha512-cq/zWaEkpcg3RttJ5+GdNwk26NwxY5KgqgtNL777Fdd28AVGHxuBvqmK4Jq4oKhW1NX4M2LbgYAVVN0NZ+/XYQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz", + "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==", "funding": [ { "type": "github", @@ -2452,7 +2509,36 @@ "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/utilities": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-contrast-color-function": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz", + "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2543,9 +2629,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.11.tgz", - "integrity": "sha512-8M3mcNTL3cGIJXDnvrJ2oWEcKi3zyw7NeYheFKePUlBmLYm1gkw9Rr/BA7lFONrOPeQA3yeMPldrrws6lqHrug==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz", + "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==", "funding": [ { "type": "github", @@ -2561,7 +2647,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2572,9 +2658,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.11.tgz", - "integrity": "sha512-9meZbsVWTZkWsSBazQips3cHUOT29a/UAwFz0AMEXukvpIGGDR9+GMl3nIckWO5sPImsadu4F5Zy+zjt8QgCdA==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz", + "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==", "funding": [ { "type": "github", @@ -2590,7 +2676,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2601,9 +2687,9 @@ } }, "node_modules/@csstools/postcss-ic-unit": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.3.tgz", - "integrity": "sha512-RtYYm2qUIu9vAaHB0cC8rQGlOCQAUgEc2tMr7ewlGXYipBQKjoWmyVArqsk7SEr8N3tErq6P6UOJT3amaVof5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz", + "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==", "funding": [ { "type": "github", @@ -2616,7 +2702,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -2711,9 +2797,9 @@ } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.10.tgz", - "integrity": "sha512-g7Lwb294lSoNnyrwcqoooh9fTAp47rRNo+ILg7SLRSMU3K9ePIwRt566sNx+pehiCelv4E1ICaU1EwLQuyF2qw==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz", + "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==", "funding": [ { "type": "github", @@ -2728,7 +2814,7 @@ "dependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2962,9 +3048,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.11.tgz", - "integrity": "sha512-9f03ZGxZ2VmSCrM4SDXlAYP+Xpu4VFzemfQUQFL9OYxAbpvDy0FjDipZ0i8So1pgs8VIbQI0bNjFWgfdpGw8ig==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz", + "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==", "funding": [ { "type": "github", @@ -2980,7 +3066,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -2991,9 +3077,9 @@ } }, "node_modules/@csstools/postcss-progressive-custom-properties": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.0.tgz", - "integrity": "sha512-fWCXRasX17N1NCPTCuwC3FJDV+Wc031f16cFuuMEfIsYJ1q5ABCa59W0C6VeMGqjNv6ldf37vvwXXAeaZjD9PA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", + "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==", "funding": [ { "type": "github", @@ -3043,9 +3129,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.11.tgz", - "integrity": "sha512-oQ5fZvkcBrWR+k6arHXk0F8FlkmD4IxM+rcGDLWrF2f31tWyEM3lSraeWAV0f7BGH6LIrqmyU3+Qo/1acfoJng==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz", + "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==", "funding": [ { "type": "github", @@ -3061,7 +3147,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -3270,21 +3356,24 @@ } }, "node_modules/@docsearch/css": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.9.0.tgz", - "integrity": "sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.1.0.tgz", + "integrity": "sha512-nuNKGjHj/FQeWgE9t+i83QD/V67QiaAmGY7xS9TVCRUiCqSljOgIKlsLoQZKKVwEG8f+OWKdznzZkJxGZ7d06A==", "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.9.0.tgz", - "integrity": "sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.1.0.tgz", + "integrity": "sha512-4GHI7TT3sJZ2Vs4Kjadv7vAkMrTsJqHvzvxO3JA7UT8iPRKaDottG5o5uNshPWhVVaBYPC35Ukf8bfCotGpjSg==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-core": "1.17.9", - "@algolia/autocomplete-preset-algolia": "1.17.9", - "@docsearch/css": "3.9.0", - "algoliasearch": "^5.14.2" + "@ai-sdk/react": "^2.0.30", + "@algolia/autocomplete-core": "1.19.2", + "@docsearch/css": "4.1.0", + "ai": "^5.0.30", + "algoliasearch": "^5.28.0", + "marked": "^16.3.0", + "zod": "^4.1.8" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -3308,9 +3397,9 @@ } }, "node_modules/@docusaurus/babel": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.8.1.tgz", - "integrity": "sha512-3brkJrml8vUbn9aeoZUlJfsI/GqyFcDgQJwQkmBtclJgWDEQBKKeagZfOgx0WfUQhagL1sQLNW0iBdxnI863Uw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.1.tgz", + "integrity": "sha512-/uoi3oG+wvbVWNBRfPrzrEslOSeLxrQEyWMywK51TLDFTANqIRivzkMusudh5bdDty8fXzCYUT+tg5t697jYqg==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", @@ -3323,28 +3412,28 @@ "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/utils": "3.9.1", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/bundler": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.8.1.tgz", - "integrity": "sha512-/z4V0FRoQ0GuSLToNjOSGsk6m2lQUG4FRn8goOVoZSRsTrU8YR2aJacX5K3RG18EaX9b+52pN4m1sL3MQZVsQA==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.1.tgz", + "integrity": "sha512-E1c9DgNmAz4NqbNtiJVp4UgjLtr8O01IgtXD/NDQ4PZaK8895cMiTOgb3k7mN0qX8A3lb8vqyrPJ842+yMpuUg==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.8.1", - "@docusaurus/cssnano-preset": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", + "@docusaurus/babel": "3.9.1", + "@docusaurus/cssnano-preset": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", "babel-loader": "^9.2.1", "clean-css": "^5.3.3", "copy-webpack-plugin": "^11.0.0", @@ -3365,7 +3454,7 @@ "webpackbar": "^6.0.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/faster": "*" @@ -3377,18 +3466,18 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.8.1.tgz", - "integrity": "sha512-ENB01IyQSqI2FLtOzqSI3qxG2B/jP4gQPahl2C3XReiLebcVh5B5cB9KYFvdoOqOWPyr5gXK4sjgTKv7peXCrA==", - "license": "MIT", - "dependencies": { - "@docusaurus/babel": "3.8.1", - "@docusaurus/bundler": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.1.tgz", + "integrity": "sha512-FWDk1LIGD5UR5Zmm9rCrXRoxZUgbwuP6FBA7rc50DVfzqDOMkeMe3NyJhOsA2dF0zBE3VbHEIMmTjKwTZJwbaA==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.9.1", + "@docusaurus/bundler": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/mdx-loader": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -3422,14 +3511,14 @@ "update-notifier": "^6.0.2", "webpack": "^5.95.0", "webpack-bundle-analyzer": "^4.10.2", - "webpack-dev-server": "^4.15.2", + "webpack-dev-server": "^5.2.2", "webpack-merge": "^6.0.1" }, "bin": { "docusaurus": "bin/docusaurus.mjs" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@mdx-js/react": "^3.0.0", @@ -3438,9 +3527,9 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.8.1.tgz", - "integrity": "sha512-G7WyR2N6SpyUotqhGznERBK+x84uyhfMQM2MmDLs88bw4Flom6TY46HzkRkSEzaP9j80MbTN8naiL1fR17WQug==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.1.tgz", + "integrity": "sha512-2y7+s7RWQMqBg+9ejeKwvZs7Bdw/hHIVJIodwMXbs2kr+S48AhcmAfdOh6Cwm0unJb0hJUshN0ROwRoQMwl3xg==", "license": "MIT", "dependencies": { "cssnano-preset-advanced": "^6.1.2", @@ -3449,13 +3538,13 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/eslint-plugin": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.8.1.tgz", - "integrity": "sha512-moiMzNuUpWaIcoEqZP4FzFGk4j8Gg/fYJYc9lpTWZplsy4GswGZw150rPuFcZ1lW65kuKVeGqu/E60JG37AX5Q==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/eslint-plugin/-/eslint-plugin-3.9.1.tgz", + "integrity": "sha512-GHOjHgX/x04IO/fw4s0Ea3Y/0hagpiO60uBByPg/A1HxnOdJmczxtA7ykexvyNwHs0UDNtrfok1gc89b4Y61CA==", "dev": true, "license": "MIT", "dependencies": { @@ -3463,7 +3552,7 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "eslint": ">=6" @@ -3599,27 +3688,27 @@ } }, "node_modules/@docusaurus/logger": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.8.1.tgz", - "integrity": "sha512-2wjeGDhKcExEmjX8k1N/MRDiPKXGF2Pg+df/bDDPnnJWHXnVEZxXj80d6jcxp1Gpnksl0hF8t/ZQw9elqj2+ww==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.1.tgz", + "integrity": "sha512-C9iFzXwHzwvGlisE4bZx+XQE0JIqlGAYAd5LzpR7fEDgjctu7yL8bE5U4nTNywXKHURDzMt4RJK8V6+stFHVkA==", "license": "MIT", "dependencies": { "chalk": "^4.1.2", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.8.1.tgz", - "integrity": "sha512-DZRhagSFRcEq1cUtBMo4TKxSNo/W6/s44yhr8X+eoXqCLycFQUylebOMPseHi5tc4fkGJqwqpWJLz6JStU9L4w==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.1.tgz", + "integrity": "sha512-/1PY8lqry8jCt0qZddJSpc0U2sH6XC27kVJZfpA7o2TiQ3mdBQyH5AVbj/B2m682B1ounE+XjI0LdpOkAQLPoA==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", @@ -3643,7 +3732,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3651,12 +3740,12 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.8.1.tgz", - "integrity": "sha512-6xhvAJiXzsaq3JdosS7wbRt/PwEPWHr9eM4YNYqVlbgG1hSK3uQDXTVvQktasp3VO6BmfYWPozueLWuj4gB+vg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.1.tgz", + "integrity": "sha512-YBce3GbJGGcMbJTyHcnEOMvdXqg41pa5HsrMCGA5Rm4z0h0tHS6YtEldj0mlfQRhCG7Y0VD66t2tb87Aom+11g==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.8.1", + "@docusaurus/types": "3.9.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -3670,24 +3759,24 @@ } }, "node_modules/@docusaurus/plugin-client-redirects": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.8.1.tgz", - "integrity": "sha512-F+86R7PBn6VNgy/Ux8w3ZRypJGJEzksbejQKlbTC8u6uhBUhfdXWkDp6qdOisIoW0buY5nLqucvZt1zNJzhJhA==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.9.1.tgz", + "integrity": "sha512-+1InCGvAnw46H+TnVqxaYlJC0qy9AY5gTMgTx2ZFryjAsImJNs3i1pEYW/iUTVbOdtWRj3E/87E4ehbBIaA1TA==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "eta": "^2.2.0", "fs-extra": "^11.1.1", "lodash": "^4.17.21", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3695,19 +3784,19 @@ } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.8.1.tgz", - "integrity": "sha512-vNTpMmlvNP9n3hGEcgPaXyvTljanAKIUkuG9URQ1DeuDup0OR7Ltvoc8yrmH+iMZJbcQGhUJF+WjHLwuk8HSdw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.1.tgz", + "integrity": "sha512-vT6kIimpJLWvW9iuWzH4u7VpTdsGlmn4yfyhq0/Kb1h4kf9uVouGsTmrD7WgtYBUG1P+TSmQzUUQa+ALBSRTig==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/mdx-loader": "3.9.1", + "@docusaurus/theme-common": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", @@ -3720,7 +3809,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", @@ -3729,20 +3818,20 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.8.1.tgz", - "integrity": "sha512-oByRkSZzeGNQByCMaX+kif5Nl2vmtj2IHQI2fWjCfCootsdKZDPFLonhIp5s3IGJO7PLUfe0POyw0Xh/RrGXJA==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.1.tgz", + "integrity": "sha512-DyLk9BIA6I9gPIuia8XIL+XIEbNnExam6AHzRsfrEq4zJr7k/DsWW7oi4aJMepDnL7jMRhpVcdsCxdjb0/A9xg==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/mdx-loader": "3.9.1", + "@docusaurus/module-type-aliases": "3.9.1", + "@docusaurus/theme-common": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", @@ -3754,7 +3843,7 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3762,22 +3851,22 @@ } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.8.1.tgz", - "integrity": "sha512-a+V6MS2cIu37E/m7nDJn3dcxpvXb6TvgdNI22vJX8iUTp8eoMoPa0VArEbWvCxMY/xdC26WzNv4wZ6y0iIni/w==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.1.tgz", + "integrity": "sha512-/1wFzRnXYASI+Nv9ck9IVPIMw0O5BGQ8ZVhDzEwhkL+tl44ycvSnY6PIe6rW2HLxsw61Z3WFwAiU8+xMMtMZpg==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/mdx-loader": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3785,36 +3874,36 @@ } }, "node_modules/@docusaurus/plugin-css-cascade-layers": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.8.1.tgz", - "integrity": "sha512-VQ47xRxfNKjHS5ItzaVXpxeTm7/wJLFMOPo1BkmoMG4Cuz4nuI+Hs62+RMk1OqVog68Swz66xVPK8g9XTrBKRw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.1.tgz", + "integrity": "sha512-/QyW2gRCk/XE3ttCK/ERIgle8KJ024dBNKMu6U5SmpJvuT2il1n5jR/48Pp/9wEwut8WVml4imNm6X8JsL5A0Q==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/plugin-debug": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.8.1.tgz", - "integrity": "sha512-nT3lN7TV5bi5hKMB7FK8gCffFTBSsBsAfV84/v293qAmnHOyg1nr9okEw8AiwcO3bl9vije5nsUvP0aRl2lpaw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.1.tgz", + "integrity": "sha512-qPeAuk0LccC251d7jg2MRhNI+o7niyqa924oEM/AxnZJvIpMa596aAxkRImiAqNN6+gtLE1Hkrz/RHUH2HDGsA==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", "fs-extra": "^11.1.1", "react-json-view-lite": "^2.3.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3822,18 +3911,18 @@ } }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.8.1.tgz", - "integrity": "sha512-Hrb/PurOJsmwHAsfMDH6oVpahkEGsx7F8CWMjyP/dw1qjqmdS9rcV1nYCGlM8nOtD3Wk/eaThzUB5TSZsGz+7Q==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.1.tgz", + "integrity": "sha512-k4Qq2HphqOrIU/CevGPdEO1yJnWUI8m0zOJsYt5NfMJwNsIn/gDD6gv/DKD+hxHndQT5pacsfBd4BWHZVNVroQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3841,19 +3930,19 @@ } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.8.1.tgz", - "integrity": "sha512-tKE8j1cEZCh8KZa4aa80zpSTxsC2/ZYqjx6AAfd8uA8VHZVw79+7OTEP2PoWi0uL5/1Is0LF5Vwxd+1fz5HlKg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.1.tgz", + "integrity": "sha512-n9BURBiQyJKI/Ecz35IUjXYwXcgNCSq7/eA07+ZYcDiSyH2p/EjPf8q/QcZG3CyEJPZ/SzGkDHePfcVPahY4Gg==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3861,18 +3950,18 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.8.1.tgz", - "integrity": "sha512-iqe3XKITBquZq+6UAXdb1vI0fPY5iIOitVjPQ581R1ZKpHr0qe+V6gVOrrcOHixPDD/BUKdYwkxFjpNiEN+vBw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.1.tgz", + "integrity": "sha512-rZAQZ25ZuXaThBajxzLjXieTDUCMmBzfAA6ThElQ3o7Q+LEpOjCIrwGFau0KLY9HeG6x91+FwwsAM8zeApYDrg==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3880,23 +3969,23 @@ } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.8.1.tgz", - "integrity": "sha512-+9YV/7VLbGTq8qNkjiugIelmfUEVkTyLe6X8bWq7K5qPvGXAjno27QAfFq63mYfFFbJc7z+pudL63acprbqGzw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.1.tgz", + "integrity": "sha512-k/bf5cXDxAJUYTzqatgFJwmZsLUbIgl6S8AdZMKGG2Mv2wcOHt+EQNN9qPyWZ5/9cFj+Q8f8DN+KQheBMYLong==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3904,22 +3993,22 @@ } }, "node_modules/@docusaurus/plugin-svgr": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.8.1.tgz", - "integrity": "sha512-rW0LWMDsdlsgowVwqiMb/7tANDodpy1wWPwCcamvhY7OECReN3feoFwLjd/U4tKjNY3encj0AJSTxJA+Fpe+Gw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.1.tgz", + "integrity": "sha512-TeZOXT2PSdTNR1OpDJMkYqFyX7MMhbd4t16hQByXksgZQCXNyw3Dio+KaDJ2Nj+LA4WkOvsk45bWgYG5MAaXSQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "@svgr/core": "8.1.0", "@svgr/webpack": "^8.1.0", "tslib": "^2.6.0", "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3927,29 +4016,29 @@ } }, "node_modules/@docusaurus/preset-classic": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.8.1.tgz", - "integrity": "sha512-yJSjYNHXD8POMGc2mKQuj3ApPrN+eG0rO1UPgSx7jySpYU+n4WjBikbrA2ue5ad9A7aouEtMWUoiSRXTH/g7KQ==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.1.tgz", + "integrity": "sha512-ZHga2xsxxsyd0dN1BpLj8S889Eu9eMBuj2suqxdw/vaaXu/FjJ8KEGbcaeo6nHPo8VQcBBnPEdkBtSDm2TfMNw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/plugin-content-blog": "3.8.1", - "@docusaurus/plugin-content-docs": "3.8.1", - "@docusaurus/plugin-content-pages": "3.8.1", - "@docusaurus/plugin-css-cascade-layers": "3.8.1", - "@docusaurus/plugin-debug": "3.8.1", - "@docusaurus/plugin-google-analytics": "3.8.1", - "@docusaurus/plugin-google-gtag": "3.8.1", - "@docusaurus/plugin-google-tag-manager": "3.8.1", - "@docusaurus/plugin-sitemap": "3.8.1", - "@docusaurus/plugin-svgr": "3.8.1", - "@docusaurus/theme-classic": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/theme-search-algolia": "3.8.1", - "@docusaurus/types": "3.8.1" + "@docusaurus/core": "3.9.1", + "@docusaurus/plugin-content-blog": "3.9.1", + "@docusaurus/plugin-content-docs": "3.9.1", + "@docusaurus/plugin-content-pages": "3.9.1", + "@docusaurus/plugin-css-cascade-layers": "3.9.1", + "@docusaurus/plugin-debug": "3.9.1", + "@docusaurus/plugin-google-analytics": "3.9.1", + "@docusaurus/plugin-google-gtag": "3.9.1", + "@docusaurus/plugin-google-tag-manager": "3.9.1", + "@docusaurus/plugin-sitemap": "3.9.1", + "@docusaurus/plugin-svgr": "3.9.1", + "@docusaurus/theme-classic": "3.9.1", + "@docusaurus/theme-common": "3.9.1", + "@docusaurus/theme-search-algolia": "3.9.1", + "@docusaurus/types": "3.9.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3957,27 +4046,26 @@ } }, "node_modules/@docusaurus/theme-classic": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.8.1.tgz", - "integrity": "sha512-bqDUCNqXeYypMCsE1VcTXSI1QuO4KXfx8Cvl6rYfY0bhhqN6d2WZlRkyLg/p6pm+DzvanqHOyYlqdPyP0iz+iw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/plugin-content-blog": "3.8.1", - "@docusaurus/plugin-content-docs": "3.8.1", - "@docusaurus/plugin-content-pages": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/theme-translations": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.1.tgz", + "integrity": "sha512-LrAIu/mQ04nG6s1cssC0TMmICD8twFIIn/hJ5Pd9uIPQvtKnyAKEn12RefopAul5KfMo9kixPaqogV5jIJr26w==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/mdx-loader": "3.9.1", + "@docusaurus/module-type-aliases": "3.9.1", + "@docusaurus/plugin-content-blog": "3.9.1", + "@docusaurus/plugin-content-docs": "3.9.1", + "@docusaurus/plugin-content-pages": "3.9.1", + "@docusaurus/theme-common": "3.9.1", + "@docusaurus/theme-translations": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", - "copy-text-to-clipboard": "^3.2.0", "infima": "0.2.0-alpha.45", "lodash": "^4.17.21", "nprogress": "^0.2.0", @@ -3990,7 +4078,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -3998,15 +4086,15 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.8.1.tgz", - "integrity": "sha512-UswMOyTnPEVRvN5Qzbo+l8k4xrd5fTFu2VPPfD6FcW/6qUtVLmJTQCktbAL3KJ0BVXGm5aJXz/ZrzqFuZERGPw==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.1.tgz", + "integrity": "sha512-j9adi961F+6Ps9d0jcb5BokMcbjXAAJqKkV43eo8nh4YgmDj7KUNDX4EnOh/MjTQeO06oPY5cxp3yUXdW/8Ggw==", "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", + "@docusaurus/mdx-loader": "3.9.1", + "@docusaurus/module-type-aliases": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -4017,7 +4105,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "@docusaurus/plugin-content-docs": "*", @@ -4026,43 +4114,49 @@ } }, "node_modules/@docusaurus/theme-mermaid": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.8.1.tgz", - "integrity": "sha512-IWYqjyTPjkNnHsFFu9+4YkeXS7PD1xI3Bn2shOhBq+f95mgDfWInkpfBN4aYvx4fTT67Am6cPtohRdwh4Tidtg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.9.1.tgz", + "integrity": "sha512-aKMFlQfxueVBPdCdrNSshG12fOkJXSn1sb6EhI/sGn3UpiTEiazJm4QLP6NoF78mqq8O5Ar2Yll+iHWLvCsuZQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.8.1", - "@docusaurus/module-type-aliases": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", + "@docusaurus/core": "3.9.1", + "@docusaurus/module-type-aliases": "3.9.1", + "@docusaurus/theme-common": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", "mermaid": ">=11.6.0", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { + "@mermaid-js/layout-elk": "^0.1.9", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@mermaid-js/layout-elk": { + "optional": true + } } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.8.1.tgz", - "integrity": "sha512-NBFH5rZVQRAQM087aYSRKQ9yGEK9eHd+xOxQjqNpxMiV85OhJDD4ZGz6YJIod26Fbooy54UWVdzNU0TFeUUUzQ==", - "license": "MIT", - "dependencies": { - "@docsearch/react": "^3.9.0", - "@docusaurus/core": "3.8.1", - "@docusaurus/logger": "3.8.1", - "@docusaurus/plugin-content-docs": "3.8.1", - "@docusaurus/theme-common": "3.8.1", - "@docusaurus/theme-translations": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-validation": "3.8.1", - "algoliasearch": "^5.17.1", - "algoliasearch-helper": "^3.22.6", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.1.tgz", + "integrity": "sha512-WjM28bzlgfT6nHlEJemkwyGVpvGsZWPireV/w+wZ1Uo64xCZ8lNOb4xwQRukDaLSed3oPBN0gSnu06l5VuCXHg==", + "license": "MIT", + "dependencies": { + "@docsearch/react": "^3.9.0 || ^4.1.0", + "@docusaurus/core": "3.9.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/plugin-content-docs": "3.9.1", + "@docusaurus/theme-common": "3.9.1", + "@docusaurus/theme-translations": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-validation": "3.9.1", + "algoliasearch": "^5.37.0", + "algoliasearch-helper": "^3.26.0", "clsx": "^2.0.0", "eta": "^2.2.0", "fs-extra": "^11.1.1", @@ -4071,7 +4165,7 @@ "utility-types": "^3.10.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", @@ -4079,33 +4173,34 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.8.1.tgz", - "integrity": "sha512-OTp6eebuMcf2rJt4bqnvuwmm3NVXfzfYejL+u/Y1qwKhZPrjPoKWfk1CbOP5xH5ZOPkiAsx4dHdQBRJszK3z2g==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.1.tgz", + "integrity": "sha512-mUQd49BSGKTiM6vP9+JFgRJL28lMIN3PUvXjF3rzuOHMByUZUBNwCt26Z23GkKiSIOrRkjKoaBNTipR/MHdYSQ==", "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/tsconfig": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.8.1.tgz", - "integrity": "sha512-XBWCcqhRHhkhfolnSolNL+N7gj3HVE3CoZVqnVjfsMzCoOsuQw2iCLxVVHtO+rePUUfouVZHURDgmqIySsF66A==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.9.1.tgz", + "integrity": "sha512-stdzM1dNDgRO0OvxeznXlE3N1igUoeHPNJjiKqyffLizgpVgNXJBAWeG6fuoYiCH4udGUBqy2dyM+1+kG2/UPQ==", "dev": true, "license": "MIT" }, "node_modules/@docusaurus/types": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.8.1.tgz", - "integrity": "sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.1.tgz", + "integrity": "sha512-ElekJ29sk39s5LTEZMByY1c2oH9FMtw7KbWFU3BtuQ1TytfIK39HhUivDEJvm5KCLyEnnfUZlvSNDXeyk0vzAA==", "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/history": "^4.7.11", + "@types/mdast": "^4.0.2", "@types/react": "*", "commander": "^5.1.0", "joi": "^17.9.2", @@ -4134,14 +4229,14 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.8.1.tgz", - "integrity": "sha512-P1ml0nvOmEFdmu0smSXOqTS1sxU5tqvnc0dA4MTKV39kye+bhQnjkIKEE18fNOvxjyB86k8esoCIFM3x4RykOQ==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.1.tgz", + "integrity": "sha512-YAL4yhhWLl9DXuf5MVig260a6INz4MehrBGFU/CZu8yXmRiYEuQvRFWh9ZsjfAOyaG7za1MNmBVZ4VVAi/CiJA==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.8.1", - "@docusaurus/types": "3.8.1", - "@docusaurus/utils-common": "3.8.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/types": "3.9.1", + "@docusaurus/utils-common": "3.9.1", "escape-string-regexp": "^4.0.0", "execa": "5.1.1", "file-loader": "^6.2.0", @@ -4162,31 +4257,31 @@ "webpack": "^5.88.1" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-common": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.8.1.tgz", - "integrity": "sha512-zTZiDlvpvoJIrQEEd71c154DkcriBecm4z94OzEE9kz7ikS3J+iSlABhFXM45mZ0eN5pVqqr7cs60+ZlYLewtg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.1.tgz", + "integrity": "sha512-4M1u5Q8Zn2CYL2TJ864M51FV4YlxyGyfC3x+7CLuR6xsyTVNBNU4QMcPgsTHRS9J2+X6Lq7MyH6hiWXyi/sXUQ==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.8.1", + "@docusaurus/types": "3.9.1", "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.8.1.tgz", - "integrity": "sha512-gs5bXIccxzEbyVecvxg6upTwaUbfa0KMmTj7HhHzc016AGyxH2o73k1/aOD0IFrdCsfJNt37MqNI47s2MgRZMA==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.1.tgz", + "integrity": "sha512-5bzab5si3E1udrlZuVGR17857Lfwe8iFPoy5AvMP9PXqDfoyIKT7gDQgAmxdRDMurgHaJlyhXEHHdzDKkOxxZQ==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.8.1", - "@docusaurus/utils": "3.8.1", - "@docusaurus/utils-common": "3.8.1", + "@docusaurus/logger": "3.9.1", + "@docusaurus/utils": "3.9.1", + "@docusaurus/utils-common": "3.9.1", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -4194,13 +4289,13 @@ "tslib": "^2.6.0" }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.8.0.tgz", - "integrity": "sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -4242,19 +4337,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4302,9 +4400,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.35.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.35.0.tgz", - "integrity": "sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", "dev": true, "license": "MIT", "engines": { @@ -4325,13 +4423,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.2", + "@eslint/core": "^0.16.0", "levn": "^0.4.1" }, "engines": { @@ -4412,9 +4510,9 @@ "license": "MIT" }, "node_modules/@iconify/utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.1.tgz", - "integrity": "sha512-A78CUEnFGX8I/WlILxJCuIJXloL0j/OJ9PSchPAfCargEIKmUBWvvEMmKWB5oONwiUqlNt+5eRufdkLxeHIWYw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.0.2.tgz", + "integrity": "sha512-EfJS0rLfVuRuJRn4psJHtK2A9TqVnkxPpHY6lYHiB9+8eSuudsxbwMiavocG45ujOo6FJ+CIRlRnlOGinzkaGQ==", "license": "MIT", "dependencies": { "@antfu/install-pkg": "^1.1.0", @@ -4514,15 +4612,128 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", + "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.14.0.tgz", + "integrity": "sha512-LpWbYgVnKzphN5S6uss4M25jJ/9+m6q6UJoeN6zTkK4xAGhKsiBRPVeF7OYMWonn5repMQbE5vieRXcMUrKDKw==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.1", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@kurkle/color": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", @@ -4656,6 +4867,15 @@ "node": ">= 8" } }, + "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/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", @@ -4753,6 +4973,12 @@ "micromark-util-symbol": "^1.0.1" } }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -5108,9 +5334,9 @@ } }, "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", "license": "MIT" }, "node_modules/@types/d3-axis": { @@ -5379,18 +5605,6 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/express/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==", @@ -5514,12 +5728,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", - "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", + "version": "24.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.6.2.tgz", + "integrity": "sha512-d2L25Y4j+W3ZlNAeMKcy7yDsK425ibcAOO2t7aPTz6gNMH0z2GThtwENCDc0d/Pw9wgyRqE5Px1wkV7naz8ang==", "license": "MIT", "dependencies": { - "undici-types": "~7.10.0" + "undici-types": "~7.13.0" } }, "node_modules/@types/node-forge": { @@ -5550,9 +5764,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.12.tgz", - "integrity": "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.0.tgz", + "integrity": "sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==", "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -5591,9 +5805,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "license": "MIT" }, "node_modules/@types/sax": { @@ -5613,12 +5827,11 @@ "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", + "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==", "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, @@ -5632,14 +5845,24 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", + "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/sockjs": { @@ -5689,17 +5912,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.42.0.tgz", - "integrity": "sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.45.0.tgz", + "integrity": "sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.42.0", - "@typescript-eslint/type-utils": "8.42.0", - "@typescript-eslint/utils": "8.42.0", - "@typescript-eslint/visitor-keys": "8.42.0", + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/type-utils": "8.45.0", + "@typescript-eslint/utils": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -5713,7 +5936,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.42.0", + "@typescript-eslint/parser": "^8.45.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -5729,16 +5952,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.42.0.tgz", - "integrity": "sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.45.0.tgz", + "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.42.0", - "@typescript-eslint/types": "8.42.0", - "@typescript-eslint/typescript-estree": "8.42.0", - "@typescript-eslint/visitor-keys": "8.42.0", + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", "debug": "^4.3.4" }, "engines": { @@ -5754,14 +5977,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.42.0.tgz", - "integrity": "sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.45.0.tgz", + "integrity": "sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.42.0", - "@typescript-eslint/types": "^8.42.0", + "@typescript-eslint/tsconfig-utils": "^8.45.0", + "@typescript-eslint/types": "^8.45.0", "debug": "^4.3.4" }, "engines": { @@ -5776,14 +5999,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.42.0.tgz", - "integrity": "sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.45.0.tgz", + "integrity": "sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.42.0", - "@typescript-eslint/visitor-keys": "8.42.0" + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5794,9 +6017,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.42.0.tgz", - "integrity": "sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.45.0.tgz", + "integrity": "sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==", "dev": true, "license": "MIT", "engines": { @@ -5811,15 +6034,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.42.0.tgz", - "integrity": "sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.45.0.tgz", + "integrity": "sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.42.0", - "@typescript-eslint/typescript-estree": "8.42.0", - "@typescript-eslint/utils": "8.42.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0", + "@typescript-eslint/utils": "8.45.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -5836,9 +6059,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.42.0.tgz", - "integrity": "sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.45.0.tgz", + "integrity": "sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==", "dev": true, "license": "MIT", "engines": { @@ -5850,16 +6073,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.42.0.tgz", - "integrity": "sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.45.0.tgz", + "integrity": "sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.42.0", - "@typescript-eslint/tsconfig-utils": "8.42.0", - "@typescript-eslint/types": "8.42.0", - "@typescript-eslint/visitor-keys": "8.42.0", + "@typescript-eslint/project-service": "8.45.0", + "@typescript-eslint/tsconfig-utils": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/visitor-keys": "8.45.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5905,16 +6128,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.42.0.tgz", - "integrity": "sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.45.0.tgz", + "integrity": "sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.42.0", - "@typescript-eslint/types": "8.42.0", - "@typescript-eslint/typescript-estree": "8.42.0" + "@typescript-eslint/scope-manager": "8.45.0", + "@typescript-eslint/types": "8.45.0", + "@typescript-eslint/typescript-estree": "8.45.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5929,13 +6152,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.42.0.tgz", - "integrity": "sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.45.0.tgz", + "integrity": "sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.42.0", + "@typescript-eslint/types": "8.45.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -5965,6 +6188,15 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, + "node_modules/@vercel/oidc": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.1.tgz", + "integrity": "sha512-V/YRVrJDqM6VaMBjRUrd6qRMrTKvZjHdVdEmdXsOZMulTa3iK98ijKTc3wldBmst6W5rHpqMoKllKcBAHgN7GQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -6233,6 +6465,24 @@ "node": ">=8" } }, + "node_modules/ai": { + "version": "5.0.60", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.60.tgz", + "integrity": "sha512-80U/3kmdBW6g+JkLXpz/P2EwkyEaWlPlYtuLUpx/JYK9F7WZh9NnkYoh1KvUi1Sbpo0NyurBTvX0a2AG9mmbDA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/gateway": "1.0.33", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.10", + "@opentelemetry/api": "1.9.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -6298,25 +6548,25 @@ } }, "node_modules/algoliasearch": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.37.0.tgz", - "integrity": "sha512-y7gau/ZOQDqoInTQp0IwTOjkrHc4Aq4R8JgpmCleFwiLl+PbN2DMWoDUWZnrK8AhNJwT++dn28Bt4NZYNLAmuA==", - "license": "MIT", - "dependencies": { - "@algolia/abtesting": "1.3.0", - "@algolia/client-abtesting": "5.37.0", - "@algolia/client-analytics": "5.37.0", - "@algolia/client-common": "5.37.0", - "@algolia/client-insights": "5.37.0", - "@algolia/client-personalization": "5.37.0", - "@algolia/client-query-suggestions": "5.37.0", - "@algolia/client-search": "5.37.0", - "@algolia/ingestion": "1.37.0", - "@algolia/monitoring": "1.37.0", - "@algolia/recommend": "5.37.0", - "@algolia/requester-browser-xhr": "5.37.0", - "@algolia/requester-fetch": "5.37.0", - "@algolia/requester-node-http": "5.37.0" + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.39.0.tgz", + "integrity": "sha512-DzTfhUxzg9QBNGzU/0kZkxEV72TeA4MmPJ7RVfLnQwHNhhliPo7ynglEWJS791rNlLFoTyrKvkapwr/P3EXV9A==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.5.0", + "@algolia/client-abtesting": "5.39.0", + "@algolia/client-analytics": "5.39.0", + "@algolia/client-common": "5.39.0", + "@algolia/client-insights": "5.39.0", + "@algolia/client-personalization": "5.39.0", + "@algolia/client-query-suggestions": "5.39.0", + "@algolia/client-search": "5.39.0", + "@algolia/ingestion": "1.39.0", + "@algolia/monitoring": "1.39.0", + "@algolia/recommend": "5.39.0", + "@algolia/requester-browser-xhr": "5.39.0", + "@algolia/requester-fetch": "5.39.0", + "@algolia/requester-node-http": "5.39.0" }, "engines": { "node": ">= 14.0.0" @@ -6602,6 +6852,15 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.12.tgz", + "integrity": "sha512-vAPMQdnyKCBtkmQA6FMCBvU9qFIppS3nzyXnEM+Lo2IAhG4Mpjv9cCxMudhgV3YdNNJv6TNqXy97dfRVL2LmaQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -6750,9 +7009,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.4.tgz", - "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", "funding": [ { "type": "opencollective", @@ -6769,9 +7028,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001737", - "electron-to-chromium": "^1.5.211", - "node-releases": "^2.0.19", + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { @@ -6787,6 +7047,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -6914,9 +7189,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001741", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz", - "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==", + "version": "1.0.30001747", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001747.tgz", + "integrity": "sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg==", "funding": [ { "type": "opencollective", @@ -7473,18 +7748,6 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "license": "MIT" }, - "node_modules/copy-text-to-clipboard": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz", - "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/copy-webpack-plugin": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", @@ -7708,9 +7971,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", - "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", + "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" @@ -7924,9 +8187,9 @@ } }, "node_modules/cssdb": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.0.tgz", - "integrity": "sha512-lyATYGyvXwQ8h55WeQeEHXhI+47rl52pXSYkFK/ZrCbAJSgVIaPFjYc3RM8TpRHKk7W3wsAZImmLps+P5VyN9g==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.2.tgz", + "integrity": "sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==", "funding": [ { "type": "opencollective", @@ -8608,9 +8871,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -8689,16 +8952,32 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "license": "BSD-2-Clause", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "license": "MIT", "dependencies": { - "execa": "^5.0.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -8901,9 +9180,9 @@ } }, "node_modules/dompurify": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", - "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz", + "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -8990,9 +9269,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.214", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.214.tgz", - "integrity": "sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==", + "version": "1.5.230", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.230.tgz", + "integrity": "sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -9061,9 +9340,9 @@ } }, "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==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" @@ -9177,20 +9456,20 @@ } }, "node_modules/eslint": { - "version": "9.35.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.35.0.tgz", - "integrity": "sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.1", - "@eslint/core": "^0.15.2", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.35.0", - "@eslint/plugin-kit": "^0.3.5", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -9547,6 +9826,15 @@ "node": ">=0.8.x" } }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -10031,9 +10319,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", - "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -10044,18 +10332,6 @@ "node": ">=14.14" } }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "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==", - "license": "ISC" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -10149,27 +10425,6 @@ "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "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", - "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/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -10182,6 +10437,22 @@ "node": ">= 6" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", @@ -10204,9 +10475,9 @@ } }, "node_modules/globals": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.3.0.tgz", - "integrity": "sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", "dev": true, "license": "MIT", "engines": { @@ -10665,27 +10936,11 @@ "node_modules/hpack.js/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==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } }, "node_modules/html-escaper": { "version": "2.0.2", @@ -10932,6 +11187,15 @@ "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -11029,17 +11293,6 @@ "node": ">=12" } }, - "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.", - "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", @@ -11231,6 +11484,39 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -11247,10 +11533,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -11490,6 +11788,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -11528,9 +11832,9 @@ } }, "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", + "version": "0.16.23", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.23.tgz", + "integrity": "sha512-7VlC1hsEEolL9xNO05v9VjrvWZePkCVBJqj8ruICxYjZfHaHbaU53AlP+PODyFIXEnaEIEWi3wJy7FPZ95JAVg==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -11846,15 +12150,15 @@ } }, "node_modules/marked": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", - "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.3.0.tgz", + "integrity": "sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==", "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/math-intrinsics": { @@ -12284,15 +12588,21 @@ } }, "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "license": "Unlicense", + "version": "4.48.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.48.1.tgz", + "integrity": "sha512-vWO+1ROkhOALF1UnT9aNOOflq5oFDlqwTXaPg6duo07fBLxSH0+bcF0TY1lbA1zTNKyGgDxgaDdKx5MaewLX5A==", + "license": "Apache-2.0", "dependencies": { - "fs-monkey": "^1.0.4" + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" }, - "engines": { - "node": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" } }, "node_modules/merge-descriptors": { @@ -12320,12 +12630,12 @@ } }, "node_modules/mermaid": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.11.0.tgz", - "integrity": "sha512-9lb/VNkZqWTRjVgCV+l1N+t4kyi94y+l5xrmBmbbxZYkfRl5hEDaTPMOcaWKCl1McG8nBEaMlWwkcAEEgjhBgg==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.12.0.tgz", + "integrity": "sha512-ZudVx73BwrMJfCFmSSJT84y6u5brEoV8DOItdHomNLz32uBjNrelm7mg95X7g+C6UoQH/W6mBLGDEDv73JdxBg==", "license": "MIT", "dependencies": { - "@braintree/sanitize-url": "^7.0.4", + "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.1", "@mermaid-js/parser": "^0.6.2", "@types/d3": "^7.4.3", @@ -12335,12 +12645,12 @@ "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.13", + "dayjs": "^1.11.18", "dompurify": "^3.2.5", "katex": "^0.16.22", "khroma": "^2.1.0", "lodash-es": "^4.17.21", - "marked": "^15.0.7", + "marked": "^16.2.1", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", @@ -14284,9 +14594,19 @@ } }, "node_modules/monaco-editor": { - "version": "0.52.2", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", - "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "version": "0.53.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.53.0.tgz", + "integrity": "sha512-0WNThgC6CMWNXXBxTbaYYcunj08iB5rnx4/G56UOPeL9UVIUGGHA1GR0EWIh9Ebabj7NpCRawQ5b0hfN1jQmYQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/trusted-types": "^1.0.6" + } + }, + "node_modules/monaco-editor/node_modules/@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", "license": "MIT", "peer": true }, @@ -14393,9 +14713,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.20.tgz", - "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", "license": "MIT" }, "node_modules/normalize-path": { @@ -14417,9 +14737,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.2.tgz", - "integrity": "sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", + "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==", "license": "MIT", "engines": { "node": ">=14.16" @@ -14573,15 +14893,6 @@ "node": ">= 0.8" } }, - "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==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", @@ -14723,16 +15034,20 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", "retry": "^0.13.1" }, "engines": { - "node": ">=8" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-timeout": { @@ -14914,15 +15229,6 @@ "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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", @@ -15208,9 +15514,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.11.tgz", - "integrity": "sha512-zfqoUSaHMko/k2PA9xnaydVTHqYv5vphq5Q2AHcG/dCdv/OkHYWcVWfVTBKZ526uzT8L7NghuvSw3C9PxlKnLg==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz", + "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==", "funding": [ { "type": "github", @@ -15226,7 +15532,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -15522,9 +15828,9 @@ } }, "node_modules/postcss-double-position-gradients": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.3.tgz", - "integrity": "sha512-Dl0Z9sdbMwrPslgOaGBZRGo3TASmmgTcqcUODr82MTYyJk6devXZM6MlQjpQKMJqlLJ6oL1w78U7IXFdPA5+ug==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz", + "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==", "funding": [ { "type": "github", @@ -15537,7 +15843,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -15682,9 +15988,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.11.tgz", - "integrity": "sha512-BEA4jId8uQe1gyjZZ6Bunb6ZsH2izks+v25AxQJDBtigXCjTLmCPWECwQpLTtcxH589MVxhs/9TAmRC6lUEmXQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz", + "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==", "funding": [ { "type": "github", @@ -15700,7 +16006,7 @@ "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -16271,9 +16577,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.3.1.tgz", - "integrity": "sha512-8ZOOWVwQ0iMpfEYkYo+U6W7fE2dJ/tP6dtEFwPJ66eB5JjnFupfYh+y6zo+vWDO72nGhKOVdxwhTjfzcSNRg4Q==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz", + "integrity": "sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==", "funding": [ { "type": "github", @@ -16286,22 +16592,23 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/postcss-alpha-function": "^1.0.0", + "@csstools/postcss-alpha-function": "^1.0.1", "@csstools/postcss-cascade-layers": "^5.0.2", - "@csstools/postcss-color-function": "^4.0.11", - "@csstools/postcss-color-function-display-p3-linear": "^1.0.0", - "@csstools/postcss-color-mix-function": "^3.0.11", - "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.1", - "@csstools/postcss-content-alt-text": "^2.0.7", + "@csstools/postcss-color-function": "^4.0.12", + "@csstools/postcss-color-function-display-p3-linear": "^1.0.1", + "@csstools/postcss-color-mix-function": "^3.0.12", + "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2", + "@csstools/postcss-content-alt-text": "^2.0.8", + "@csstools/postcss-contrast-color-function": "^2.0.12", "@csstools/postcss-exponential-functions": "^2.0.9", "@csstools/postcss-font-format-keywords": "^4.0.0", "@csstools/postcss-gamut-mapping": "^2.0.11", - "@csstools/postcss-gradients-interpolation-method": "^5.0.11", - "@csstools/postcss-hwb-function": "^4.0.11", - "@csstools/postcss-ic-unit": "^4.0.3", + "@csstools/postcss-gradients-interpolation-method": "^5.0.12", + "@csstools/postcss-hwb-function": "^4.0.12", + "@csstools/postcss-ic-unit": "^4.0.4", "@csstools/postcss-initial": "^2.0.1", "@csstools/postcss-is-pseudo-class": "^5.0.3", - "@csstools/postcss-light-dark-function": "^2.0.10", + "@csstools/postcss-light-dark-function": "^2.0.11", "@csstools/postcss-logical-float-and-clear": "^3.0.0", "@csstools/postcss-logical-overflow": "^2.0.0", "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", @@ -16311,10 +16618,10 @@ "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.11", - "@csstools/postcss-progressive-custom-properties": "^4.2.0", + "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-progressive-custom-properties": "^4.2.1", "@csstools/postcss-random-function": "^2.0.1", - "@csstools/postcss-relative-color-syntax": "^3.0.11", + "@csstools/postcss-relative-color-syntax": "^3.0.12", "@csstools/postcss-scope-pseudo-class": "^4.0.1", "@csstools/postcss-sign-functions": "^1.1.4", "@csstools/postcss-stepped-value-functions": "^4.0.9", @@ -16322,27 +16629,27 @@ "@csstools/postcss-trigonometric-functions": "^4.0.9", "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.21", - "browserslist": "^4.25.1", + "browserslist": "^4.26.0", "css-blank-pseudo": "^7.0.1", "css-has-pseudo": "^7.0.3", "css-prefers-color-scheme": "^10.0.0", - "cssdb": "^8.4.0", + "cssdb": "^8.4.2", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^7.0.11", + "postcss-color-functional-notation": "^7.0.12", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", "postcss-custom-media": "^11.0.6", "postcss-custom-properties": "^14.0.6", "postcss-custom-selectors": "^8.0.5", "postcss-dir-pseudo-class": "^9.0.1", - "postcss-double-position-gradients": "^6.0.3", + "postcss-double-position-gradients": "^6.0.4", "postcss-focus-visible": "^10.0.1", "postcss-focus-within": "^9.0.1", "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", - "postcss-lab-function": "^7.0.11", + "postcss-lab-function": "^7.0.12", "postcss-logical": "^8.1.0", "postcss-nesting": "^13.0.2", "postcss-opacity-percentage": "^3.0.0", @@ -16713,9 +17020,9 @@ } }, "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" @@ -16875,9 +17182,9 @@ } }, "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -16894,15 +17201,15 @@ } }, "node_modules/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.1" + "react": "^19.2.0" } }, "node_modules/react-fast-compare": { @@ -17127,9 +17434,9 @@ "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==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2" @@ -17139,17 +17446,17 @@ } }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -17189,29 +17496,17 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/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==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/rehype-raw": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", @@ -17586,22 +17881,6 @@ "node": ">=0.10.0" } }, - "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", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", @@ -17638,6 +17917,18 @@ "node": ">=12.0.0" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17700,9 +17991,9 @@ "license": "ISC" }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/schema-dts": { @@ -17712,9 +18003,9 @@ "license": "Apache-2.0" }, "node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", @@ -18410,9 +18701,9 @@ } }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { "node": ">=12" @@ -18422,9 +18713,9 @@ } }, "node_modules/string-width/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==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -18610,10 +18901,23 @@ "node": ">= 10" } }, + "node_modules/swr": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.6.tgz", + "integrity": "sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/tapable": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", - "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "license": "MIT", "engines": { "node": ">=6" @@ -18710,6 +19014,34 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -18773,6 +19105,22 @@ "node": ">=6" } }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -18913,9 +19261,9 @@ } }, "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -18933,9 +19281,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.13.0.tgz", + "integrity": "sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -18970,18 +19318,18 @@ } }, "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==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "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": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "license": "MIT", "engines": { "node": ">=4" @@ -19213,9 +19561,9 @@ } }, "node_modules/update-notifier/node_modules/chalk": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz", - "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -19299,6 +19647,15 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -19481,9 +19838,9 @@ } }, "node_modules/webpack": { - "version": "5.101.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", - "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", + "version": "5.102.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.0.tgz", + "integrity": "sha512-hUtqAR3ZLVEYDEABdBioQCIqSoguHbFn1K7WlPPWSuXmx0031BD73PSE35jKyftdSh4YLDoQNgK4pqBt5Q82MA==", "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", @@ -19494,7 +19851,7 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.24.5", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", @@ -19507,9 +19864,9 @@ "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.2", - "tapable": "^2.1.1", + "tapable": "^2.2.3", "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", + "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, "bin": { @@ -19564,44 +19921,50 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", - "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "license": "MIT", "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-middleware/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==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/webpack-dev-middleware/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==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -19617,54 +19980,52 @@ } }, "node_modules/webpack-dev-server": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", - "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.5", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", + "express": "^4.21.2", "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.4", - "ws": "^8.13.0" + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "webpack": { @@ -19675,6 +20036,36 @@ } } }, + "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.18.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", @@ -19921,9 +20312,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { "node": ">=12" @@ -19933,9 +20324,9 @@ } }, "node_modules/wrap-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==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", "engines": { "node": ">=12" @@ -19945,9 +20336,9 @@ } }, "node_modules/wrap-ansi/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==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -19959,12 +20350,6 @@ "url": "https://github.com/chalk/strip-ansi?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==", - "license": "ISC" - }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -19998,6 +20383,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", @@ -20041,6 +20456,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.11.tgz", + "integrity": "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 36d6612b..aa024b3d 100644 --- a/package.json +++ b/package.json @@ -28,34 +28,34 @@ }, "dependencies": { "@boa-dev/boa_wasm": "^0.20.0", - "@docusaurus/core": "^3.8.1", - "@docusaurus/plugin-content-pages": "^3.8.1", - "@docusaurus/preset-classic": "^3.8.1", - "@docusaurus/theme-mermaid": "^3.8.1", + "@docusaurus/core": "^3.9.1", + "@docusaurus/plugin-content-pages": "^3.9.1", + "@docusaurus/preset-classic": "^3.9.1", + "@docusaurus/theme-mermaid": "^3.9.1", "@mdx-js/react": "^3.1.1", "@monaco-editor/react": "^4.7.0", "chart.js": "^4.5.0", "clsx": "^2.1.1", "prism-react-renderer": "^2.4.1", - "react": "^19.1.1", + "react": "^19.2.0", "react-chartjs-2": "^5.3.0", - "react-dom": "^19.1.1" + "react-dom": "^19.2.0" }, "devDependencies": { - "@docusaurus/eslint-plugin": "^3.8.1", - "@docusaurus/module-type-aliases": "^3.8.1", - "@docusaurus/plugin-client-redirects": "^3.8.1", - "@docusaurus/tsconfig": "^3.8.1", - "@docusaurus/types": "^3.8.1", + "@docusaurus/eslint-plugin": "^3.9.1", + "@docusaurus/module-type-aliases": "^3.9.1", + "@docusaurus/plugin-client-redirects": "^3.9.1", + "@docusaurus/tsconfig": "^3.9.1", + "@docusaurus/types": "^3.9.1", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.35.0", - "@typescript-eslint/eslint-plugin": "^8.42.0", - "@typescript-eslint/parser": "^8.42.0", - "eslint": "^9.35.0", + "@eslint/js": "^9.37.0", + "@typescript-eslint/eslint-plugin": "^8.45.0", + "@typescript-eslint/parser": "^8.45.0", + "eslint": "^9.37.0", "eslint-config-prettier": "^10.1.8", - "globals": "^16.3.0", + "globals": "^16.4.0", "prettier": "3.6.2", - "typescript": "^5.9.2" + "typescript": "^5.9.3" }, "browserslist": { "production": [ From 01c3ef04dd885a31b58fe7e135b0054e96f1c757 Mon Sep 17 00:00:00 2001 From: jedel1043 Date: Mon, 6 Oct 2025 09:50:19 -0600 Subject: [PATCH 08/12] feat: add sections for JobExecutor, ModuleLoader and async changes --- blog/boa-release-21/img/backtrace.gif | Bin 51491 -> 72870 bytes blog/boa-release-21/img/native-backtrace.gif | Bin 0 -> 175139 bytes blog/boa-release-21/index.md | 182 +++++++++++++++--- blog/boa-release-21/tapes/backtrace.tape | 1 - .../tapes/native-backtrace.tape | 35 ++++ 5 files changed, 187 insertions(+), 31 deletions(-) create mode 100644 blog/boa-release-21/img/native-backtrace.gif create mode 100644 blog/boa-release-21/tapes/native-backtrace.tape diff --git a/blog/boa-release-21/img/backtrace.gif b/blog/boa-release-21/img/backtrace.gif index a65a17dbbf86518f6bccc094e719170cd4d8e7c2..d82d23b5c26ded979f28fd7af8e56e111d6d4c25 100644 GIT binary patch literal 72870 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 QIcG98Ymc()xQ0^ztjq%7PUBl`ky(VsCof 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Ⓢybqy4L*Dd_(Zro_-UI;P|neu+$}b_$`8`6%lqz{%e$X((B{

JNyQe^ z-`EC3c&XH0dRn_bq^don?pjUV&8KyD?8<74?5rEO15fK8KdsklI5|;s`uWq-uT;*w z4mtB~^E&44^=&$W`u8Dce;htGbNI+l6#+O@0ILJO99y`%4V`st^U$#;KPwhF z*Y&a>%$khNnsRGU1G2Vp+q1@!(cxd$@rIw#H*Of*vehZjYGDf4cAjDS9ahL~#`)`0Gg9n=d z<-kg&B zyWudQ`J=J|#rNvp(i-1_2}UAy7^!*uw^pHAU-Gs>yWQ|=04$4@dkP~Lj8Yu~2k!oT zHAk)T?Nt&0iE|zptx9Z8y?&`E=*+PJoaQ-Mj`JMeCuZsk7zv$9F4Yxer_hNny=Ka1N zXMf}Qa}U80nlcmkMCI<$ZRu|Pq=5QbWnaWgz=14nrHcQY>gz^a*6(QrA#T%$iU2p| zHf>FN_Q<#0y@`p9sZf#%+@I5U8p zPSi=u+*s0x>?lBJ!WzEauZUUzqv~NJ?GmCKE@J_PyEzCB7r{=8YzFroweuo~xk&?< zVA9z&YrB19seGZO$GixLnAltx`&-lgU*D03>tl)6$}8=_PgGJK1hb?cW?1|kn>mte zB_3P&E=a^ev$oi29(AeiZDX+2n+K5V30>A2C%6689t|mMH3L<&9-buH&4!q}4_$0# zMRJaU4M{V*UL1Syr1SD0XF?QK0VwAqw5c|lt@%C)-WUrC&?Ck>a?9LiZqA?H)B#}y z?jupEer(0I1O-A=r*J9t4GY~dJR8w$Q09i|KPUO1*)CltQhT|eb*52Q3?Lo>D$)1+ z@s=_?W|1_2RtG?J>L^~Vlrk_hO)PDA`Z^(^Tle|m%twe}gap;zZSoT2+(FSl^Va2a zv&pfy@h?3H;;sw3zn0--zUWe&v&~nV}cZoZgvaB~ox8L3x{xl;*SB1k3&w#F;f=Cc5hIrHn zeSR{r!e0O&u$V?Wmi8a(*8aWd@g9sn0)%6CPYdN9-5$PM@J3thZr0}anT&r;y&g*B z%gWVTa=3lN`|aPp(ExqeuF~<}#}?#vx{RFVxhLjtfX?0}Y2H4zQ8LHCi^sJ#a_$K3 zJ(BUGD4p1;s7Ha%m!ZCkH?E&k&vI2tU)VS+c=0Dg_lA$ms#r0DBEKrwHkYtBVqxQ8 zlsxJj2+NRwOcf(27`=s!$S4I48DTF29Z&e>WGF%HPXwXx)^5)T9N9)8$eP`(-eBI0K$I?Bk)sW3t@ z`_1|L)U#gIsOjEWnNxDQ6`oJm<5hdombiZnHy9;6c$la^v^PUuRcFWM>D6wRS;-38 zrgn(msvDn2qM^dJUCb+MZ`tcN{57BPAn4?W>``OKT-9v}$mX)?Cby;Iy-()M^GDh} zu`0*@4(eV|wh1jO`vbK^6be2J^OQ|pRT?g-_5{nJnjU9W za-{-27J0-*Y07DS05X2bPb#2l3MvN#9rtiQlj2xKhqaM8hgG-@}}#w{L8 zWMFDUV;WTVp89TYJ8|*Xar4_7X%g-E`c`oOMjbG;DbHnqUhAci(G0XF`);%U? zxM4Z0Y~C>`O*B7|PYbjOqZFCpM>a+jmfeU2ChcuH(S`NsF9TG&;-~H!XwO)RM*Cbt zeryJRvB-9OvWAUf-=3ZZo4{Qo1N}r_(Po z9lh-yhn4FX9OU11QrmNkQDhRSkV-wil}~Z8>`CIQV1tBx5IJOlU~jSivoCM_!G5%N zd76W`LhV4d9$34+pJ8H>ys@tlWyq}7+0+=h-C<;4;AQ*u)x%2(@>*E%Kom5J_vM6t6aKw0b5k%$t%Gbwan8~_`rkuP! z;ks3$r`%&Dt=Rm=^p`QqXB#>N)Yv)9gXyKra!(V#d)-{@oxktoU@m0C$8oxI0HLRqSkm{c3j29&{yDHQVLSn|Po~(Q+REt_+nX-47 zuSwawS;34166yiRt;W!2ift}zJvS_cWsF&T{w^J*|5|lKl9ciJTsA>hWeMj(6z;3Q zQ&`9d++CxrbEq`tkZc%kn##S>z%t-keH4$NnPPc2!0YrzoYTt_YtmcRhn+Xwa+W|a1+t*go(FR5d!A#?&IWKO|lI1vYW%7i;?$Ac{`DG_Pn(uu*a_-4iyXW$n3%c}W zPFW4y5w|=GZS881oQ_yA&gDztp)xFasDZ_Tx~jL7olcHq#I0Qz;rSYOGno2DmXAtF z*Hx*El~TUc1)HF-6nk58%`*k|TdF&h8pyyE)<6ke(rtage5cXauhGOI4yGtc~-=>15Lk%{(v+_&NEM;ga1?b5A|f)=t12jSNKy(8 z=y_<)S0kU-wR!OLQP%e>0-1J3(c5zTiZJRJldDa@Aomu>sQy`VgBl8@8No78BA=WD z>rrrNi&jsP+`m3%<@yFqTGBAqLU)C_L58;9YWetTOkyAM5rFdfQcMdn=NTXco7Mu5 zS`xtbSLmi!4XG2IeSzvN12VHX82^JI%u!)NR%U;APDBY zag}-VmyY}32&yDFs`Ze$)M#z*z-+-y5@22*je(jrUFB*|CnY!&>rgB_cw^!u|Mt6> z6j#o}s10V_@kaiFeG=Sl&ONImEvVp4K$IJfGnBh6r`nTdTc&=7*qmCD&=)1+vG5TX zxsWgCDptH5%+p=0s9Y(gWdvxpx5asV41NALiX=cpyOWG0n9xclt{9(D&u z*Q+IfH36R$>o$h8{MHZ!hs-W*stmvvh`t7-cW7cg4`2UF2Vii2mc>`3XqiNTDPv= z47>U7Tj$AJD{(tR4Fn6@M&@{?8QLgD|92ZzKG`_Q2vOZud@a6$XER7DG_z#i43o{# z@O(EG*RV)e|rCRCT*R+2fti9ok2=Trg#1 z*512OvThv>6<>Z2TYmAoyZI_G~QJa?GuC{>$jL=N^-&5 z`2j(`LCoL~8z0Gn5&%gIy8%Hp&;bZB{HEAH0nJE2qn?TEPSv z`wH9U3OlOto~zJ%ov2o#X9FHJyiYes0;^>1v0!F{Cim3vQL}X9Z4oSa6|5-Ovx5Sy zC6XIi9;f_edI2e$$6w35Z~?tiKDH_5eWV{-zHn?FmNq@jDWfZX9*QSN1Hat^^=`3i z6#BG@LFO!LAPx!+W+gKZdI(qD1L`x*k13iK%D zK9TSdaX@c4Ffd5wMdO~Sfm)d802#c@Ka|0!2 z0uSdNx;QD}+QNsMkg@MA>&4KxD#ZX`KBtADQVsDulxqti3cL+fV?NjC**>v zW%y=~kHqi;H~4aLt5!5h<>=x@ zNlY+UF-Vma^*R&q#ub_C!(aep<~vV#V1Ot1(l6*TM$QRUnG&|{NogDUEjsnffeV*d8 z;$(bk86aw&3`_($EnSm6K2jj73tOsCY<7aCh}2qXpo;}skI^)TpYpC`sD}zvb}DoR zje?3Nx!pNWL`Wl1-l@Ya`L!*DH(IdW&^oeH0v@7(Zs}PK&GFaWO3cm& zgPTVzhpatP}Y)lepsc|!MU`~g4!&H($Ezw+su(#udIDlCi)R9JQ4sGOB=K5)qg z)^8|b=YfO#?Nx> zbZFA^So#Jp7o8000(-2&iU9^2(ua*Zi9az&SZ9+2L3@&g_W1zoo$)?cspz&Ul`ewr zVuJUS0#%+f6a^q0*swXry< zfH@F}64k>`Oz29LU~~1hiAlY}MAQrFnMm7M{@$|#Rl3dq2I8)))GTF>K`lm6p;Yj} z`9ilQcm*3i!kvxLje`snp z18fqc+VZR3K~*j@R8EBf+Od}nZfWq`p{}M6`Xh_%2$I@@O3BSB%sikt6xDuO){6&A z;p^J-)S80iEEW{!pMibps#}GS>MrasA90zL+>`58bIV0?=qdzrQ5uDnU*h}j%t^-4 zF_|l5PY3ESBLdqX7x@ z<%z)Rhk|M;^;kU}O-Tf5*)A0&z z!(ST<0_g?yNC4n_o&e9@DK78qwEp$;?ckx>pgN3^SII?1UJl z_6ytkUM6pKsGub_8xWSTZ@9>JR|rAoB^}iymf=L+P1^h2b7I6~6{y^GPAY45FlPQk%k?Jj2{(r(tjZnC(5^{E zX5B`c3v}DLGh=8Z^#xfIa|JL6CD-H|a5G?hzobHTCa2vmAYAIX2$lYg~Az(4P?Q z8~0lwKp%>%c-^QE0Zq+l;&X8X+#gqH5~93`1Fu2X%K?DYasTu!q%{0imIag|2<_y* z&KQ2G7S!?gyMlReM+|Syt{&O)f&BHOO!#rQr0~sc+pS*wNWW2Oq{g?ALEAp5HSX|k zQ`L&^Cw!xPc^f`ub9^+BKaxG8pCW)gRxvyx2$RbKjpO_V#-PnP7vyVRU+2835fm~%Y?X5M<_|t*(o(W#GG|Cb)h$X>rXaS00Wlwv-iLE z-Qs2%2<+e0WS0eUvr*2Ld0^QD)DYL;>)R!@OAeovBY$amwj{(ocWzu)=-3M~A?zZ# zg1Z{&XgW`5=gsRM1ESdhTg5xvXkr3^Zz5pFV!@;83#D z%@_$m5fdhptB+{HPb2Q>lpVvID*KWU_-k(L@{v4{Ib)qx=Hq-Bs7Gz;Vivf1{7?}9 zOME=|Eme-B&<;9s0*xFv56tlW@<6gNk#P4}XY-a|Rfj$Hkqtl5kA5h2G)9{#s?-1a zo>lcY$1|3a!@C|iReXE(@S7UHrr`~|Ed9LP&wP+iYU9JD@vi<>VlLmPxO@|H7 zbsG|d4Tq8#`V$R8MTAxSVD*|Fq7=6}Qux?U>8u7q%UC5($$-q(w(08=PD-#oY$eBk zo=g$71fz-i=boqd8hRF*kmNuS7$G=nmU)TfOI210GZ%bGl>kzxoSccg*Ck?V&^gWQ zlR6et&9f*o$G)(d&SW3lR`T(pA#fOe~F7bv^B6?`;yNDgW#J7x~H8 zt=$j3nJn0`v0DU%$#>NJmB`=;(lTlR0jxmA6QMS@uGp_@ssw;fOM-Sk=n~&K{i*wf zN|8{(Lwj`4>3L4*y$iB$LQ$S2b6t4*f;?&D!?=r3B193JM=k4B%Q!5!`!KApz!-5+#UG|o%LiS9t3mAjZSUf`{Ouo-?E@TV-2J&o zrxbfp??PWX3`4~;K^W8Z!fkg?ez6ZC${2MAc`A501Vi?Qso2(Q=BD$cIoba6a<4hv zZTj}h-JyXVP{*)f4=!F1;Nz9+_DSsUeKag|Z+L%bLT>sKQpS15$m8_KJ&|^P(2~dm z*B!x8iJLb6_%9_tAjrf2G|qV_&JA)!LiBT>p-Cv7wBzdJq8 zy1e7NC_JO&VVsF-a@fGZM5~|CN8~Esa+H5S*Bh0?)+1)>;A+ZTMKmn(=|}I8$m<{( zYfK1NJ#L%p{Iz^TAq*vehs4s<8V8Ew7 zC6wm%Hk5`R_T9mhJ3PF7*IAv{jVLPP7YkmcTv1u#QTkMR7V+RG!|PC zM&0Apkb181+=}<*J8rufq1u}aJ5?`))Zf~xRJzANm^aMwQK0teR1)Y z^v>mSM+ZR-p`&AEu~?|SXZuGTCj?i`_a(^i^7p_O{&L_{0IYRum5mx{mo!02((?muP(O`epi?Y zjvo4S{$V`#Wq)M?^3XtA1u>`#SRCTk1}0umlL^y+LVcz49`iBcJHM~;HXeNxh)wr&yi{J~PZ5`xFTowkf{&}+5gb=)9kQ)g zl(T-0CT@yi;jgU81&aX%2c?3m!q;)y)zCuqkuuA}iNw@x<(6ur{aW1!w&e-w4}03O z`aqrry{Mw@b-K!y@1ud*d6KDM&Ag_+5eE6>+QL&b@t|$#eDRi-Xnvh`vx6hi$Lrd> z#zR`OEn{oG26U~^vb)|Uz7sT4^9@l;8wxzORW^WNX<(8EF=6};jp<&HF|SWJ!Ad-y z3|N$jK5cZHo(yF7+M7TUhwKg;AdZD}h7*X#Ll=^aN>-|}pDYy-Hg0MX+IMWxJONV9 zSwlkH#9%eSqKEgQN{c_eJp=l|Lzm9*A6d}2iY6(?H>#E9K&6|59D^c0q-QTweUyMDte&&}%No^2ysbq@)*Cm=RlQO=rw|xdnk(Ifw55Qw?zT~j z2@plQ9}@5QcSw2qk}D7q#MZfKiVTQhYhR`h#>Adr+V=Kqz0c#E4XAx$-qQh+>vfD) zWJwKS0w@d0Gn7^e$yySQun@Xej(ohsNfAF$s`iB)KCZZHF&cC;)2Y)VC?hGE0vgVo zyl%#KxxpvMhN9E(N%IW1xiv`dm3ZjV8M_zsLqLtym$&4^@Xb#|5YH&#?Kd-bz^z1- zE*5k^F(iZ5;ys7D4!_=UWKit;=jpij2v|)lsL=%06l3*I#U=@sNvD~vi=*`SEWDuY+q^=CfovzU&-rNu+BFyJ#46O{d=F} zjA2%K@)9J{)W=n&0k#e+dm~pboTxbRvAX5CqsIEaD*>g7HWSSMV(|_Ls*pw+G5Dwy zl<>X!OvN6TA?wh@wsZ`s+(w;)I9-NEMPTPI@+2Rx1djk)?o*Iz-c3u8ZF-G@e>aOOGdz`<) zx6pHT#q9ZMVsmTO6`Qd{A*%mTk>*)F`&r zlU0z0cpOUB*HpaSI(&cgH^3HU(Zd=#1WRrx-gKEMXXJZg;~s|?lOF|FY{O565kP65@^Sj$I50Wk5^||z=tilqiA+iMsr96ZkoShn#A3+BT8hZxBAO}7- z4i8I?;)b;{_872z@Vq!FwD*4skw{(Vw)U&C;XQExUK}4vg0mGS7*a;DArN>}l0sO3379nIu;zbGTY)1@JqnBxf#!41Sk$gz>1jo(g+G)JK z7X!AZ6}&k{*XlP*J&Y587sXMyQmL(Y+3} z1t#TbCa-fNsyRkNtP-7MT1hhRCT$mztVk@Y44%e{NsH}bq3$k4{Szc>sZv4VYET9_f{NfMsE<3@hyaflv3>Nte9_qCJcwry zGjriQ)?I`{vTtLV#u!#4za?sf0SOw6S|Zs%Jii=(MptvB55|$%l&jvVd``LpFQA%p z^qWn=`ka8WeBl_W$Vq{E!bj#Xpi_KC za6Q+D&OWBWGQ$jS7K8F35-*JQP@%h5X;gt`jOBLeH!_294xt%9@y?cFoB|kigt%Q$ z;42oz;YB{Hpv)TpL_tk>5J%mevD}ocRiy$uXY2Do`!f3IKfmCm121{7X}!^c4F{$V4xmRj2;~D z>@+t@EHRSh1AOYa*)C(x3ITF13}`ENM-b2F5I!pL;U#k2&UdmAE~3eDhQTaTC%ZfF zD?7ZE7e5PFZ26h~WyCajPWXi`bi z)obNaH~K4{>ZY{D@)M0ALAG z(3reh$Kz~@Ux8UrXu|r%nz6d9-L<|(`5{L6J6d_9gPbcRjKIo^JMv&L>k^K(%aGN_ zM>Z&3TcgmOvS%IQrksw1cKs>tKfsPyoeo^)ctioHb)aYgl#ch#!s6`GhlMV{gv}BD zaV%C1(=ux6T=dkI*@)2-0QU*$rNrB$C_EsKRWuDS?|GCge8ieSJzKR5v0&^C0j5JE zTyC3lFHIX(nr&MLy$xns&?Bxa7$(%SuW$g7R?Sg=IlA;2{5rU{ksE>MC9hm^p3vjW z&TRV_nYawM-n`j5SWedzd)qW^CI-qy#*vQz{Wpc;i@WS)6H%ujdIG20fxQRtuNJuMh z$H>i0De@+&edY@6v&7XTK^#`^$)e{XXi#R=j0a)dMDXn75!kIGEWL_xLP(;S$6gCjq)Nh~->89gzo#H)3*W9tv5Uu<8rnish9k4C%?K)L#@n zvpw&_-Wt8i(`XM?k{SbOuGANd7EkK_E&ulmv}1xt)r87@1} z;&aRhtnCL7?$wa2B(7R1H?5aL~l=h<-<4|=#<52XZ zlu=F*^L9;eai$<+yH0AaAQh8jv+X~wzO;`pWp^)ZM{5h{7Qkp{lF1#Q={A_zg@x22 zuEm3eV3)A}3Z&NpD0KpsNR!OR2k~|@c;5~;O~2z(_4EA?ExA?KjXc^W#e#?2HWL?x zX=vW?-+ZZJnMGgvKiHhdi>82#3K$SHH(_=;k|vHM%mwn4 zVilm?MCT`9k|JnEleQ*Cj9np4%Lnhk<7Ihi0GO{nD>QaT1Rj=hr#Nb&B@I6wc==(- zc^dJWlqQG5xBXu&R=vifQn^vBsmTRU6nol?FH{I6a?s54-*~AMXoUV!>RA?+_G0dYZ!nWPC6@PhI#RXQvx}{GP!+vhcu@y{=89VSO(YM#U^lOrL1=N$C zG;5kHC69NnF2oCyGHGl)<89;w?7x3+u}^re@5;zM;C!$pB?Q*T#tD-=V&`BKoW?*!Y>-Yu$NZI72C(+_s^6r86gh5nI1 zJSI?N8h6tl=ynQAC#d+x(a%wg?#gALDxZ0Zaclcgs861B(?g^s2C`Srg;o3X#K!5O z6*OKjw)nTywFI_; ze_wuR{hI~4!;D;oX0AYGs~2p<&GA$&?kzV}KlDL0@WD17E|t1xrNcOCxijRFV|uNw z1H_{>f_xj`Ix7{%Vb6CO`jXk3zNV5#IPqfMjtQuTH$0;Clhs3r+^u>u3g{W-L=-zG?2V1w*^5R$4tUtqO0^m$k+gaTosZrl>y|2@U3BEpk*%KVj z>yVT!*})SnXAVy1M6i7TQl8m!zw!4S6WRVIQ?W|GA7jEunGb&dSjPH`!I-%e7xxG_ z%-eJ2$`-KyPguaKF8Qo0*#*!)_cT>nPWM_UbW4xnq=s?O**v?#OqX8OD7b zO&0KSdv{CU>f3kbZ3A=Gzrwa{IKUjU+ts0^=kS_V_PMbASwB71^VeAW_iJ9y;)oY) z^K&Ecd)E%{%eV$hJqJru*acn%`!d!H^WSB<;HvjQ?x+O@dBAqBa9@5Zp`1T(`e#Yt z_?wM;Za%B*&Q}n-Sq8Lzf2Lr6aI1aF276^2U@eaTC(p&vAs=-kK6&Sv2cC%9^+P^z7LN`x9UOLqTEJJq*cP-w3gRBJI$09Hyq@Tod!|b?)cPq*31Je_ zMq9%Umq=UWKdh`RmMHsk#I_E;Ay&yt7aG=`7Y2ZGZS}uSKn&R&IXy!%wdaF|1;&^I zFATqru>d1PZNV2ZD$W^)RL1#nDV`APj3-rwo?!)gUhjMRDKwSpR%Q2;5!36R9%`ag zHkxl@V2`?zfQ{+P^L-+yRP-G6nCx;&9$J4kE^$ltMF zn@=c=2#tZ93NHm!-Vmd?c^v2vMygKgK zX`1`gWh&2rT-roAF-6{u7KJNr4#Ke<-ydGM3zHVm<~zUaog^P$Y{UA(aPB+rJI)`c z0{J)BUTe{rf5FuWH{A`3adKn{UXkjIQ5<)?yskJUa|H{T1c%45eG5TFOAC5PF?-q* z`KJH5H|ewGU%Frv%$r*Zu!P*mznGUECNR+{mhNxUw`^9HI}(dG7j`R`ciluL#`& zV+XeEZg-I?QZG%k;<|U`|QX{JqD0#vniq7)dePl+2f8P`Xo7R0Cs_8aJh2d zT!ylh%5Uk$+Be1b?YI89eGojvdukn_CHYxgvkVQWw|X&L5$Je?Afj&i-hIpVi0MPP z!{eydFiaZYjHPmhgNH0uA*CnWwFKX|Vcy=hcpq(|pK}s-x>H}|@La6OqaSs7w4p_! zknY)auIDlZnh2A-#_|=IyZthDFI&MI4)mJwbeKVC9^070yp?Rp)_&=NqGnHN4xyMt zMScBDWc{h#-@IfmYK&_(&scbdeLh$@ryJQPvt{kT0Oaqzkt9AH8bEJUZC@R-wZxoV z!{}T37)ZbxJ44+{g)OLM{d_IaD&V!$$Em^V#cXuhz&Q=_5Tz;RMtHHjQ>*&aECid) z>)SFoe`un2_^T41FIyr~dk*J;oxHJ|dcAmA@K@{U>k6vX>B@N%LOQ(M46Gyc?w%8Z zMbvg(6pVsB3`N|alG?~(3Uh0TY+ZM;X+WXe;SVo={sxR_{@4TGLw``M6mlWTe^KM! z1jKM*BHvjBxNYZYPTXo`doXz(Z(99id0MVBrI#Y+*hecMVQ4A*{D#u_qlr6c@oC{aFQULv;#XNZiYmA#dw zT=NMjxt*J=vnwvgmRP<{9Rv8(rmYoGO$~jOC?iQMlOhd>L60`@rCskMcZcm@O~2E} zm841imQET}UB|@N^{092Iec1UdsnqoVj_$vR zAj3gOZ=zg?F+&P??men{JW@qKu>?1G~! zFiq2Xr9Wx7g7I{j4sXhXIV5#5G?K4R(uoBT(ldr_N5(*}ap8FdGnQJ(N_RKD);-+# zUgVES!4{{ARB|RQJX+VWntY*y`wn=C)8+C>JI+x}&9fm}8`S<=9d;S%luy6K>^$`8 z>$zuh&u!eDZ%%Q&eINSR_^dKyK*sdZU*F}NZatNN=qE*fh7@fUGQ}5v^mN_+Sjd^b=#F8Hp5NscP;G@9lGIn){qGEPAtK-8(1I2 z^}}C(DO@vaJgw_R8TFLGs#hPqaYwRwwb&TymIKzjEiK{MZcxIPb5nEBfFfa^6<1Ft zYu@hN@rl(fU3ER=jTj)M?>oCHLmFK z&Y!jEj+FUW3*(?H21$6Fr=28SIJ{Gq08dMbNX3&Gd( zSc{RnGX@HZxQc#G)QGiU6j?O_Z;k>3*SV$w5^gIt9M2jWZP?D82SVmz6wj?0B%tOB z9Ai(7`1*~GCSaQDpj!=8;~A>Mb+~nrP9ez{-h3Q>Kb`)T_b&_NFp==b`Ak`|T4hG>-FaVt#kZO>2L_IfPx~NwFT>dxJfQoIS>F9^ z`A}IB1vuTtR!8Go^e3JVPBPhVL=rUV&(;^N^i(}PMu2cpbBu$;e% zz><=ksV4_gLkMZS{#Sp(8aYxp2(vmp?R2h>r5b zv;j!zQ`dcKvG*y*$$srL;Vv4^V5Hwa^-bpZ$^E~T_4avQL;){djCKsttx~Bys3d#H ziJ6w9ju60KiUBX%ŕ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

)rn3v<4M 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 B+t&a9 literal 0 HcmV?d00001 diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 8f2aae5b..a1fd05c2 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -14,7 +14,7 @@ Boa makes it easy to embed a JS engine in your projects, and you can even use it from WebAssembly. See the [about](/about) page for more info. -In this release, our conformance has grown from 89.92% to 93.94% in the +In this release, our conformance has grown from 89.92% to 94.12% in the official ECMAScript Test Suite (Test262). Our growth in conformance is driven by increased conformance for Temporal (discussed further below) with the rest of the development effort being focused on performance, @@ -34,47 +34,159 @@ information on conformance [here][conformance]. There has been a lot of progress made on Temporal, the new Stage 3 date/time proposal. With this release, Boa's conformance on Temporal -grew from 40.67% to ~97%. +grew from 40.67% to ~97%. This implementation is backed by the `temporal_rs` +date/time Rust library, which we went over in our announcement +[blog post](../2025-09-24-temporal-release). Give the post a read if you are +interested in `temporal_rs` and its development history. -The implementation is backed by the `temporal_rs` date/time Rust -library, which we went over briefly in our June -[blog post](../2025-06-15-temporal-impl-1.md) with hopefully another post -in the not too distant future. So far, `temporal_rs` has also been used in -both V8 and Keisel to implement Temporal. +### Span nodes and error backtraces -Temporal can be used from `boa_cli` or enabled in `boa_engine` with the -`experimental` or `temporal` feature. +We added support for storing spans in our AST nodes, which allows determining the +exact location of an AST node on its original file. We already kind of +supported this feature in our lexer, but we did not store the spans after parsing. -You can also try out Temporal directly in Rust using `temporal_rs`: +Why is this important? Well, as a direct result from this, Boa now supports error backtraces +when an exception is thrown! -``` -cargo add temporal_rs +![backtrace-example](./img/backtrace.gif) + +As an additional plus, you can enable the `native-backtrace` feature to include +"native" functions on a backtrace. + +![native-backtrace-example](./img/native-backtrace.gif) + +This feature has been one of the most requested ones for years, +and we hope it will +greatly help with debugging errors when using Boa. + +### Async APIs enhancements + +Historically, hooking functions returning a `Future` into Boa has been one of the +biggest pain points of our API. This was mostly caused by how we defined +`FutureJob`: + +```rust +pub type FutureJob = Pin + 'static>>; ``` -#### Special thanks +With this definition, it was pretty much impossible to capture the `Context` +inside the future, and functions that needed to interweave engine operations +with awaiting `Future`s would have to be split into multiple parts: + +```rust +let fetch = async move { + let body: Result<_, isahc::Error> = async { + let mut response = Request::get(&url) + .body(())? + .send_async() + .await?; + + Ok(response.text().await?) + } + .await; + + // Since the async context cannot take the `context` by ref, we have to continue + // parsing inside a new `NativeJob` that will be enqueued into the promise job queue. + NativeJob::new(move |context| -> JsResult { + parse(body).await; + + // Also needed to match `NativeJob::new`. + Ok(JsValue::undefined()) + }) +}; + +// Just enqueue the future for now. We'll advance all the enqueued futures inside our custom +// `JobQueue`. +context + .job_queue() + .enqueue_future_job(Box::pin(fetch), context) +} +``` -Special thanks to all the student's from University of Bergen who helped contribute to -`temporal_rs` and Boa, as well as Shane Carr ([@sffc](https://github.com/@sffc)) and -Manish Goregaokar ([@manishearth](https://github.com/@manishearth)) for their contributions -and help with `temporal_rs`. +We wanted to improve this API, and the solution we thought about was to make +`Context` shareable by wrapping it using `RefCell`. However, this proved to be +very difficult for two reasons: +1. We needed to change all definitions to take `&RefCell` instead + of `&mut Context`, which meant changing pretty much the whole codebase. +2. Some of our VM code was reentrant, which meant calling `RefCell::borrow_mut` + would cause panics in the reentrant parts of the code; we would need to + redesign some parts of the engine to remove the reentrancy. + +After putting a lot of thought on this, we came up with a really nice solution; +instead of wrapping `Context` with `RefCell`, we would wrap `&mut Context` with +`RefCell`, and only on the async-related APIs. This would allow not only capturing +the context to `Future`-related functions, but also doing this without having to +refactor big parts of the code. Thus, we ditched `FutureJob` and introduced a new +type of job: `NativeAsyncJob`. + +```Rust +/// An ECMAScript [Job] that can be run asynchronously. +/// +/// This is an additional type of job that is not defined by the specification, enabling running `Future` tasks +/// created by ECMAScript code in an easier way. +#[allow(clippy::type_complexity)] +pub struct NativeAsyncJob { + f: Box FnOnce(&'a RefCell<&mut Context>) -> BoxedFuture<'a>>, + realm: Option, +} +``` -### Span nodes and error backtraces +With this change, any API that integrates with `Future` can additionally capture +the `&RefCell<&mut Context>` to run engine-related operations after awaiting on +a `Future`. + +### Revamped `JobQueue` + +After introducing the new job type, changes had to be made on +[`JobQueue`](https://docs.rs/boa_engine/0.20.0/boa_engine/job/trait.JobQueue.html) +to better support new job types. Thus, `JobQueue` was revamped and renamed to be the +new `JobExecutor`: + +```rust +/// An executor of `ECMAscript` [Jobs]. +/// +/// This is the main API that allows creating custom event loops. +/// +/// [Jobs]: https://tc39.es/ecma262/#sec-jobs +pub trait JobExecutor: Any { + /// Enqueues a `Job` on the executor. + /// + /// This method combines all the host-defined job enqueueing operations into a single method. + /// See the [spec] for more information on the requirements that each operation must follow. + /// + /// [spec]: https://tc39.es/ecma262/#sec-jobs + fn enqueue_job(self: Rc, job: Job, context: &mut Context); + + /// Runs all jobs in the executor. + fn run_jobs(self: Rc, context: &mut Context) -> JsResult<()>; + + /// Asynchronously runs all jobs in the executor. + /// + /// By default forwards to [`JobExecutor::run_jobs`]. Implementors using async should override this + /// with a proper algorithm to run jobs asynchronously. + async fn run_jobs_async(self: Rc, context: &RefCell<&mut Context>) -> JsResult<()> + where + Self: Sized, + { + self.run_jobs(&mut context.borrow_mut()) + } +} +``` -We also add support for span nodes in our parser and AST. Span nodes mark the start and -end index in the source code for a specific token. +As you can probably tell, we made a lot of changes on the `JobExecutor`: -As a result, this release of Boa supports error backtraces when an exception is thrown -as seen below. +TODO -![backtrace-example](./img/backtrace.gif) +### Revamped `ModuleLoader` -This feature will greatly help with debugging errors when using Boa. +TODO -### Specification updates +### Built-ins updates #### Set methods -This release adds support for the new set methods added in ES2025. +This release adds support for the new set methods added in ECMAScript's 2025 +specification. The new methods are: @@ -101,15 +213,18 @@ console.log(x[1]); // 42.125 #### Error.isError -This release adds support for `Error.isError`, which is accepted for ES2026. +This release adds support for `Error.isError`, which will be introduced in +ECMAScript's 2026 specification. ```javascript -let check = Error.isError(new Error()); // returns true +console.log(Error.isError(new Error())); // true +console.log(Error.isError({ __proto__: Error.prototype })); // false ``` #### Math.sumPrecise -This release adds support for `Math.sumPrecise`, which is accepted for ES2026. +This release adds support for `Math.sumPrecise`, which will be introduced in +ECMAScript's 2026 specification. We've opted for using the new [`xsum`](https://crates.io/crates/xsum) summation algorithm for the underlying implementation. @@ -119,6 +234,13 @@ let sum = Math.sumPrecise([1e20, 0.1, -1e20]); console.log(sum); // 0.1 ``` +#### Atomics.waitAsync + +TODO + + +#### Array.fromAsync + ## Boa Runtime Work on Boa's runtime crate has continued with additional APIs added. @@ -146,7 +268,7 @@ With this release, Boa's `JsValue` will use nan-boxing by default. The NaN boxin increased memory and runtime performance over the older enum. As a note, the current implementation is not compatible with all platforms. While we hope -to address this in the future. The legacy enum JsValue will be available via the `jsvalue-enum` +to address this in the future, the legacy enum JsValue will be available via the `jsvalue-enum` feature flag. Unfamiliar with NaN Boxing? We won't go over it in depth here, but we recommend diff --git a/blog/boa-release-21/tapes/backtrace.tape b/blog/boa-release-21/tapes/backtrace.tape index 27de5778..9f8a4675 100644 --- a/blog/boa-release-21/tapes/backtrace.tape +++ b/blog/boa-release-21/tapes/backtrace.tape @@ -27,4 +27,3 @@ Hide Type "rm yikes.js" Enter - diff --git a/blog/boa-release-21/tapes/native-backtrace.tape b/blog/boa-release-21/tapes/native-backtrace.tape new file mode 100644 index 00000000..c9667ff6 --- /dev/null +++ b/blog/boa-release-21/tapes/native-backtrace.tape @@ -0,0 +1,35 @@ +Output native-backtrace.gif + +# Setup env +Hide + +Set TypingSpeed 50ms +Set Theme "GruvboxDark" + +# boa_cli needs to be installed for the tape to run. +Require boa + +Show + +Type@100ms `cat < native.js` +Enter +Type@100ms `Array.prototype.every.call([[10]], arr => arr.forEach(` +Enter +Type@100ms ` e => { throw value; }` +Enter +Type@100ms `));` +Enter +Type@100ms `EOF` +Enter + +Type@100ms "boa native.js" + +Enter + +Sleep 10s + +Hide + +Type "rm native.js" + +Enter From 867f1ae191d1f619c7ac7c43e212b9a6356ff491 Mon Sep 17 00:00:00 2001 From: jedel1043 Date: Mon, 6 Oct 2025 21:26:11 -0600 Subject: [PATCH 09/12] feat: finish new API sections --- blog/boa-release-21/index.md | 258 +++++++++++++++++++++++++++++++++-- 1 file changed, 248 insertions(+), 10 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index a1fd05c2..e08bc3cb 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -66,11 +66,16 @@ biggest pain points of our API. This was mostly caused by how we defined `FutureJob`: ```rust +pub struct NativeJob { + f: Box JsResult>, + realm: Option, +} + pub type FutureJob = Pin + 'static>>; ``` With this definition, it was pretty much impossible to capture the `Context` -inside the future, and functions that needed to interweave engine operations +inside the `Future`, and functions that needed to interweave engine operations with awaiting `Future`s would have to be split into multiple parts: ```rust @@ -99,8 +104,7 @@ let fetch = async move { // `JobQueue`. context .job_queue() - .enqueue_future_job(Box::pin(fetch), context) -} + .enqueue_future_job(Box::pin(fetch), context); ``` We wanted to improve this API, and the solution we thought about was to make @@ -173,16 +177,228 @@ pub trait JobExecutor: Any { } ``` -As you can probably tell, we made a lot of changes on the `JobExecutor`: +As you can probably tell, we made a lot of changes on `JobExecutor`: -TODO +- All methods now take `Rc` as their receiver, making it consistent with + how the `Context` itself stores the `JobExecutor`. +- [`enqueue_promise_job`] and [`enqueue_future_job`] now are unified in a single + `enqueue_job`, where `Job` is an enum containing the type of job that needs to + be scheduled. This makes it much simpler to extend the engine with newer job + types in the future, such as the newly introduced `TimeoutJob` and `GenericJob` + types. +- `run_jobs_async` was converted to a proper async function, and excluded from + `JobExecutor`'s VTable. Additionally, this method now takes a `&RefCell<&mut Context>` + as its context, which is the missing piece that enables sharing the `Context` between + multiple `Future`s at the same time. This, however, means that we cannot provide + a convenient wrapper such as [`Context::run_jobs`] anymore, which is one of the + reasons why we decided to exclude that method from `JobExecutor`'s VTable. -### Revamped `ModuleLoader` +These changes not only made `JobExecutor` much simpler, but it also expanded +the places where we could use its async capabilities to handle "special" +features of ECMAScript that are more suited to an async way of doing things. +`ModuleLoader` is one of those places. -TODO +[`enqueue_promise_job`]: https://docs.rs/boa_engine/0.20.0/boa_engine/job/trait.JobQueue.html#tymethod.enqueue_promise_job +[`enqueue_future_job`]: https://docs.rs/boa_engine/0.20.0/boa_engine/job/trait.JobQueue.html#tymethod.enqueue_future_job +[`Context::run_jobs`]: https://docs.rs/boa_engine/0.20.0/boa_engine/context/struct.Context.html#method.run_jobs + +### Asyncified `ModuleLoader` + +Looking at the previous definition of `ModuleLoader`: + +```rust +pub trait ModuleLoader { + // Required method + fn load_imported_module( + &self, + referrer: Referrer, + specifier: JsString, + finish_load: Box, &mut Context)>, + context: &mut Context, + ); + + // Provided methods + fn register_module(&self, _specifier: JsString, _module: Module) { ... } + fn get_module(&self, _specifier: JsString) -> Option { ... } + fn init_import_meta( + &self, + _import_meta: &JsObject, + _module: &Module, + _context: &mut Context, + ) { ... } +} +``` + +... the weird `finish_load` on `load_imported_module` immediately pops up as an anomaly. +In this case, `finish_load` is Boa's equivalent to +[HostLoadImportedModule ( referrer, moduleRequest, hostDefined, payload )][hlim], +which is an abstract operation that is primarily used to define how an application +will load and resolve a "module request"; think of it as a function that takes +the `"module-name"` from `import * as name from "module-name"`, then does +"things" to load the module that corresponds to `"module_name"`. + +[hlim]: https://tc39.es/ecma262/#sec-HostLoadImportedModule + +The peculiarity about this abstract operation is that it doesn't return anything! +Instead, it just has a special requirement: + +> The host environment must perform `FinishLoadingImportedModule(referrer, moduleRequest, payload, result)`, + where result is either a normal completion containing the loaded `Module Record` or a throw completion, + either synchronously or asynchronously. + +Why expose the hook this way? Well, there is a clue in the previous requirement: + +> ... either synchronously or asynchronously. + +Aha! Directly returning from the hook makes it very hard to enable use cases +where an application wants to load multiple modules asynchronously. Thus, the +specification instead exposes a hook to pass the name of the module that needs to +be loaded, and delegates the task of running the "post-load" phase to the host, which +enables fetching modules synchronously or asynchronously, depending on the specific +requirements of each application. + +One downside of this definition, however, is that any data that is required +by the engine to properly process the returned module would need to be transparently +passed to the `FinishLoadingImportedModule` abstract operation, which is why +the hook also has an additional requirement: + +> The operation must treat `payload` as an opaque value to be passed through to + `FinishLoadingImportedModule`. + +`payload` is precisely that data, and it may change depending on how the module +is imported in the code; `import "module"` and `import("module")` are two examples +of this. + +We could expose this as an opaque `*const ()` pointer argument and call it a day, +but we're using Rust, dang it! and we like statically guaranteed safety! +So, instead, we exposed `FinishLoadingImportedModule` as `finish_load`, which is a +"closure" that captures `payload` on its stack, and can be called anywhere +(like inside a `Future`) on the application with a proper `Module` and `Context` +to further continue processing the module loaded by the `ModuleLoader`. + +```rust +... +finish_load: Box, &mut Context)>, +... +``` + +Unfortunately, +this API has downsides: it is still possible to forget to call `finish_load`, +which is still safe but prone to bugs. It is also really painful to work with, +because you cannot capture the `Context` to further process the module after +loading it ... Sounds familiar? **This is exactly [the code snippet we talked about before!](#async-apis-enhancements)** + +Fast forward a couple of years and we're now changing big parts of `JobExecutor`: +adding new job types, tinkering with `JobExecutor`, changing API signatures, etc. +Then, while looking at the definition of `ModuleLoader`, we thought... + +> Huh, can't we make `load_imported_module` async now? + +And that's exactly what we did! Behold, the new `ModuleLoader`! + +```rust +pub trait ModuleLoader: Any { + async fn load_imported_module( + self: Rc, + referrer: Referrer, + specifier: JsString, + context: &RefCell<&mut Context>, + ) -> JsResult; + + fn init_import_meta( + self: Rc, + _import_meta: &JsObject, + _module: &Module, + _context: &mut Context, + ) { + } +} +``` + +Then, the code snippet we mentioned before nicely simplifies to: + +```rust +async fn load_imported_module( + self: Rc, + _referrer: boa_engine::module::Referrer, + specifier: JsString, + context: &RefCell<&mut Context>, +) -> JsResult { + let url = specifier.to_std_string_escaped(); + + let response = async { + let request = Request::get(&url) + .redirect_policy(RedirectPolicy::Limit(5)) + .body(())?; + let response = request.send_async().await?.text().await?; + Ok(response) + } + .await + .map_err(|err: isahc::Error| JsNativeError::typ().with_message(err.to_string()))?; + + let source = Source::from_bytes(&response); + + Module::parse(source, None, &mut context.borrow_mut()) +} +``` + +> *What about synchronous applications?* + +The advantage of having `JobExecutor` be the main entry point for any Rust +`Future`s that are enqueued by the engine is that an application can decide how to +handle all `Future`s received by the implementation of `JobExecutor`. Thus, an application +that doesn't want to deal with async Rust executors can implement a completely synchronous +`ModuleLoader` and poll on all futures received by `JobExecutor` using something like +[`futures_lite::poll_once`][poll_once]. + +> *Why not just block on each `Future` one by one instead?* + +Well, there is one new built-in that was introduced on this release which heavily +depends on "properly" running `Future`s, and by "properly" we mean "not blocking +the whole thread waiting on a future to finish". More on that in a bit. ### Built-ins updates +#### Atomics.waitAsync + +This release adds support for the `Atomics.waitAsync` method introduced in +ECMAScript's 2024 specification. +This method allows doing thread synchronization just like `Atomics.wait`, but with +the big difference that it will return a `Promise` that will resolve when the +thread gets notified with the `Atomics.notify` method, instead of blocking until +that happens. + +```javascript +// Given an `Int32Array` shared between two threads: + +const sab = new SharedArrayBuffer(1024); +const int32 = new Int32Array(sab); + +// Thread 1 runs the following: +// { async: true, value: Promise {} } +const result = Atomics.waitAsync(int32, 0, 0, 1000); +result.value.then(() => console.log("waited!")); + +// And thread 2 runs the following after Thread 1: +Atomics.notify(int32, 0); + +// Then, in thread 1 we will (eventually) see "waited!" printed. +``` + +Note that this built-in requires having a "proper" implementation of a `JobExecutor`; again, "proper" +in the sense of "not blocking the whole thread waiting on a future to finish", which can be accomplished +with [`FutureGroup`] and [`futures_lite::poll_once`][poll_once] if an async executor is not required +(see [`SimpleJobExecutor`'s implementation][sje-impl]). +This is because it heavily relies on `TimeoutJob` and `NativeAsyncJob` to timeout if a notification +doesn't arrive and communicate with the notifier threads, respectively. This is the reason why +we don't recommend just blocking on each received `Future`; that could cause +`TimeoutJob`s to run much later than required, or even make it so that they don't +run at all! + +[poll_once]: https://docs.rs/futures-lite/latest/futures_lite/future/fn.poll_once.html +[`FutureGroup`]: https://docs.rs/futures-concurrency/latest/futures_concurrency/future/future_group/struct.FutureGroup.html +[sje-impl]: https://github.com/boa-dev/boa/blob/0468498b4bb9da31caa20123201e4d8ee132c608/core/engine/src/job.rs#L678 + #### Set methods This release adds support for the new set methods added in ECMAScript's 2025 @@ -234,12 +450,34 @@ let sum = Math.sumPrecise([1e20, 0.1, -1e20]); console.log(sum); // 0.1 ``` -#### Atomics.waitAsync +#### Array.fromAsync -TODO +This release adds support for `Array.fromAsync`, which will be introduced in +ECMAScript's 2026 specification. +`Array.fromAsync` allows to conveniently create a array from an async iterable by +awaiting all of the items consecutively. -#### Array.fromAsync +```javascript +// Array.fromAsync is roughly equivalent to: +async function toArray(asyncIterator){ + const arr=[]; + for await(const i of asyncIterator) arr.push(i); + return arr; +} + +async function* asyncIterable() { + for (let i = 0; i < 5; i++) { + await new Promise((resolve) => setTimeout(resolve, 10 * i)); + yield i; + } +}; + +Array.fromAsync(asyncIterable()).then((array) => console.log(array)); +// [0, 1, 2, 3, 4] +toArray(asyncIterable()).then((array) => console.log(array)); +// [0, 1, 2, 3, 4] +``` ## Boa Runtime From ad51c7a56a5873ec4a706ba4022378d2880e0c4c Mon Sep 17 00:00:00 2001 From: jedel1043 Date: Mon, 6 Oct 2025 22:16:06 -0600 Subject: [PATCH 10/12] fix link --- blog/boa-release-21/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index e08bc3cb..77115ceb 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -36,7 +36,7 @@ There has been a lot of progress made on Temporal, the new Stage 3 date/time proposal. With this release, Boa's conformance on Temporal grew from 40.67% to ~97%. This implementation is backed by the `temporal_rs` date/time Rust library, which we went over in our announcement -[blog post](../2025-09-24-temporal-release). Give the post a read if you are +[blog post](../2025-09-24-temporal-release/index.md). Give the post a read if you are interested in `temporal_rs` and its development history. ### Span nodes and error backtraces @@ -389,10 +389,10 @@ Note that this built-in requires having a "proper" implementation of a `JobExecu in the sense of "not blocking the whole thread waiting on a future to finish", which can be accomplished with [`FutureGroup`] and [`futures_lite::poll_once`][poll_once] if an async executor is not required (see [`SimpleJobExecutor`'s implementation][sje-impl]). -This is because it heavily relies on `TimeoutJob` and `NativeAsyncJob` to timeout if a notification -doesn't arrive and communicate with the notifier threads, respectively. This is the reason why -we don't recommend just blocking on each received `Future`; that could cause -`TimeoutJob`s to run much later than required, or even make it so that they don't +This is because it heavily relies on `TimeoutJob` to timeout if a notification +doesn't arrive, and in `NativeAsyncJob` to communicate with the notifier threads using an +async channel. This is the reason why we don't recommend just blocking on each received `Future`; +that could cause `TimeoutJob`s to run much later than required, or even make it so that they don't run at all! [poll_once]: https://docs.rs/futures-lite/latest/futures_lite/future/fn.poll_once.html From da91d30669159e126d82c06abc168c7ddfc49237 Mon Sep 17 00:00:00 2001 From: jedel1043 Date: Mon, 6 Oct 2025 22:27:23 -0600 Subject: [PATCH 11/12] clarify some sentences --- blog/boa-release-21/index.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 77115ceb..915691d3 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -76,7 +76,7 @@ pub type FutureJob = Pin + 'static>>; With this definition, it was pretty much impossible to capture the `Context` inside the `Future`, and functions that needed to interweave engine operations -with awaiting `Future`s would have to be split into multiple parts: +with awaiting `Future`s needed to be split into multiple parts: ```rust let fetch = async move { @@ -143,7 +143,7 @@ a `Future`. After introducing the new job type, changes had to be made on [`JobQueue`](https://docs.rs/boa_engine/0.20.0/boa_engine/job/trait.JobQueue.html) -to better support new job types. Thus, `JobQueue` was revamped and renamed to be the +to better support new types of jobs. Thus, `JobQueue` was revamped and renamed to be the new `JobExecutor`: ```rust @@ -283,10 +283,14 @@ finish_load: Box, &mut Context)>, ``` Unfortunately, -this API has downsides: it is still possible to forget to call `finish_load`, -which is still safe but prone to bugs. It is also really painful to work with, -because you cannot capture the `Context` to further process the module after -loading it ... Sounds familiar? **This is exactly [the code snippet we talked about before!](#async-apis-enhancements)** +this API has downsides: it is possible to forget to call `finish_load`, +which is safer than a dangling `*const()` pointer, but still prone to bugs. +It is also really painful to work with, because you cannot capture the `Context` +to further process the module after loading it ... Sounds familiar? +**[The async code snippet we showed before](#async-apis-enhancements) has this exact problem!** +And that snippet is directly taken from [one of our `ModuleLoader` implementation examples][mod-loader]. + +[mod-loader]: https://github.com/boa-dev/boa/blob/b345775138f56401bd627b1f36daadfc5bf75772/examples/src/bin/module_fetch.rs#L38 Fast forward a couple of years and we're now changing big parts of `JobExecutor`: adding new job types, tinkering with `JobExecutor`, changing API signatures, etc. @@ -294,7 +298,7 @@ Then, while looking at the definition of `ModuleLoader`, we thought... > Huh, can't we make `load_imported_module` async now? -And that's exactly what we did! Behold, the new `ModuleLoader`! +And that's exactly what we did. Behold, the new `ModuleLoader`! ```rust pub trait ModuleLoader: Any { From 6024ba0df513a506c9ce5584b68046777da8764d Mon Sep 17 00:00:00 2001 From: jasonwilliams Date: Fri, 17 Oct 2025 17:40:02 +0100 Subject: [PATCH 12/12] prettier plus new contributors --- blog/boa-release-21/index.md | 58 +++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/blog/boa-release-21/index.md b/blog/boa-release-21/index.md index 915691d3..1cdc663c 100644 --- a/blog/boa-release-21/index.md +++ b/blog/boa-release-21/index.md @@ -110,6 +110,7 @@ context We wanted to improve this API, and the solution we thought about was to make `Context` shareable by wrapping it using `RefCell`. However, this proved to be very difficult for two reasons: + 1. We needed to change all definitions to take `&RefCell` instead of `&mut Context`, which meant changing pretty much the whole codebase. 2. Some of our VM code was reentrant, which meant calling `RefCell::borrow_mut` @@ -243,8 +244,8 @@ The peculiarity about this abstract operation is that it doesn't return anything Instead, it just has a special requirement: > The host environment must perform `FinishLoadingImportedModule(referrer, moduleRequest, payload, result)`, - where result is either a normal completion containing the loaded `Module Record` or a throw completion, - either synchronously or asynchronously. +> where result is either a normal completion containing the loaded `Module Record` or a throw completion, +> either synchronously or asynchronously. Why expose the hook this way? Well, there is a clue in the previous requirement: @@ -263,7 +264,7 @@ passed to the `FinishLoadingImportedModule` abstract operation, which is why the hook also has an additional requirement: > The operation must treat `payload` as an opaque value to be passed through to - `FinishLoadingImportedModule`. +> `FinishLoadingImportedModule`. `payload` is precisely that data, and it may change depending on how the module is imported in the code; `import "module"` and `import("module")` are two examples @@ -346,7 +347,7 @@ async fn load_imported_module( } ``` -> *What about synchronous applications?* +> _What about synchronous applications?_ The advantage of having `JobExecutor` be the main entry point for any Rust `Future`s that are enqueued by the engine is that an application can decide how to @@ -355,7 +356,7 @@ that doesn't want to deal with async Rust executors can implement a completely s `ModuleLoader` and poll on all futures received by `JobExecutor` using something like [`futures_lite::poll_once`][poll_once]. -> *Why not just block on each `Future` one by one instead?* +> _Why not just block on each `Future` one by one instead?_ Well, there is one new built-in that was introduced on this release which heavily depends on "properly" running `Future`s, and by "properly" we mean "not blocking @@ -464,10 +465,10 @@ awaiting all of the items consecutively. ```javascript // Array.fromAsync is roughly equivalent to: -async function toArray(asyncIterator){ - const arr=[]; - for await(const i of asyncIterator) arr.push(i); - return arr; +async function toArray(asyncIterator) { + const arr = []; + for await (const i of asyncIterator) arr.push(i); + return arr; } async function* asyncIterable() { @@ -475,7 +476,7 @@ async function* asyncIterable() { await new Promise((resolve) => setTimeout(resolve, 10 * i)); yield i; } -}; +} Array.fromAsync(asyncIterable()).then((array) => console.log(array)); // [0, 1, 2, 3, 4] @@ -523,7 +524,27 @@ Boa's virtual machine (VM) moved from a stack based VM to a register based VM in ## New Contributors -TODO +- @zzzdong made their first contribution in https://github.com/boa-dev/boa/pull/4058 +- @albertleigh made their first contribution in https://github.com/boa-dev/boa/pull/4097 +- @heygsc made their first contribution in https://github.com/boa-dev/boa/pull/4124 +- @jamesthurley made their first contribution in https://github.com/boa-dev/boa/pull/4155 +- @lockels made their first contribution in https://github.com/boa-dev/boa/pull/4189 +- @changhc made their first contribution in https://github.com/boa-dev/boa/pull/4176 +- @created-by-varun made their first contribution in https://github.com/boa-dev/boa/pull/4198 +- @tomoverlund made their first contribution in https://github.com/boa-dev/boa/pull/4254 +- @Hemenguelbindi made their first contribution in https://github.com/boa-dev/boa/pull/4145 +- @Timkarx made their first contribution in https://github.com/boa-dev/boa/pull/4276 +- @Rafferty97 made their first contribution in https://github.com/boa-dev/boa/pull/4303 +- @cijiugechu made their first contribution in https://github.com/boa-dev/boa/pull/4307 +- @countradooku made their first contribution in https://github.com/boa-dev/boa/pull/4214 +- @xubaiwang made their first contribution in https://github.com/boa-dev/boa/pull/4381 +- @hamflx made their first contribution in https://github.com/boa-dev/boa/pull/4405 +- @BDeuDev made their first contribution in https://github.com/boa-dev/boa/pull/4419 +- @jasonmilad made their first contribution in https://github.com/boa-dev/boa/pull/4430 +- @hpp2334 made their first contribution in https://github.com/boa-dev/boa/pull/4453 +- @Gumichocopengin8 made their first contribution in https://github.com/boa-dev/boa/pull/4462 +- @mdrokz made their first contribution in https://github.com/boa-dev/boa/pull/4466 +- @rrogerc made their first contribution in https://github.com/boa-dev/boa/pull/4459 ## Looking Forward @@ -585,10 +606,8 @@ developers of the engine itself and for users of the engine. Feel free to contact us in [Matrix]. [open collective]: https://opencollective.com/boa -[open issues]: - https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+no%3Aassignee -[contribution guide]: - https://github.com/boa-dev/boa/blob/main/CONTRIBUTING.md +[open issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+no%3Aassignee +[contribution guide]: https://github.com/boa-dev/boa/blob/main/CONTRIBUTING.md [our website]: https://github.com/boa-dev/boa-dev.github.io [testing representation]: https://github.com/boa-dev/boa/issues/820 [action]: https://github.com/boa-dev/criterion-compare-action @@ -599,13 +618,10 @@ to contact us in [Matrix]. Once again, big thanks to [all the contributors][contributors] of this release!!! -[contributors]: - https://github.com/boa-dev/boa/graphs/contributors?from=2024-12-05&to=2025-08-30&type=c +[contributors]: https://github.com/boa-dev/boa/graphs/contributors?from=2024-12-05&to=2025-08-30&type=c [changelog]: https://github.com/boa-dev/boa/blob/v0.21/CHANGELOG.md [conformance]: https://boajs.dev/boa/test262/ [feed]: https://boajs.dev/blog/rss.xml [collective]: https://opencollective.com/boa -[easy_issues]: - https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3AE-Easy -[first_issues]: - https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 +[easy_issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3AE-Easy +[first_issues]: https://github.com/boa-dev/boa/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22