diff --git a/.bazelversion b/.bazelversion
index acd405b1d62e..df5119ec64e6 100644
--- a/.bazelversion
+++ b/.bazelversion
@@ -1 +1 @@
-8.6.0
+8.7.0
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 5280d3d8ba7f..1793021115cd 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -23,12 +23,12 @@ jobs:
with:
persist-credentials: false
- name: Initialize CodeQL
- uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
+ uses: github/codeql-action/init@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
with:
languages: javascript-typescript
build-mode: none
config-file: .github/codeql/config.yml
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
+ uses: github/codeql-action/analyze@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
with:
category: '/language:javascript-typescript'
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 68249d536041..38fbb28f8d3e 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -46,6 +46,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: 'Upload to code-scanning'
- uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
+ uses: github/codeql-action/upload-sarif@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v4.35.5
with:
sarif_file: results.sarif
diff --git a/.ng-dev/release.mjs b/.ng-dev/release.mjs
index eb5aad2e4fcf..19e111f22f80 100644
--- a/.ng-dev/release.mjs
+++ b/.ng-dev/release.mjs
@@ -18,7 +18,7 @@ export const release = {
name,
experimental,
deprecated: {
- version: '>=22.0.0-next.0',
+ version: '>=22.0.0-rc.0',
message:
'Angular\'s Webpack support is deprecated. Use the esbuild and Vite-based "@angular/build" package instead.',
},
diff --git a/.nvmrc b/.nvmrc
index db49bb14d78e..941d7c071de8 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-22.22.2
+22.22.3
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 45ace1ba6263..fd109a5694d9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,99 @@
+
+
+# 22.0.0-rc.1 (2026-05-21)
+
+### @schematics/angular
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- |
+| [a7ac8e5f0](https://github.com/angular/angular-cli/commit/a7ac8e5f0a268994a8fcfebbf56f76e994b6207d) | fix | support spy call arguments migration in refactor-jasmine-vitest |
+
+### @angular/build
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------- |
+| [327cc2414](https://github.com/angular/angular-cli/commit/327cc24144ab7e0e36ff3d6e9a67585588f2f69f) | fix | assert that asset input paths are within workspace root |
+| [93d352798](https://github.com/angular/angular-cli/commit/93d3527985f8aa1950f62ab42a88c0a74ae0b051) | fix | ignore virtual esbuild paths with (disabled): |
+
+
+
+
+
+# 22.0.0-rc.0 (2026-05-13)
+
+## Deprecations
+
+### @angular-devkit/build-angular
+
+- Webpack builders in build-angular are deprecated. Use @angular/build builders instead.
+
+### @angular-devkit/build-webpack
+
+- Webpack builders in build-webpack are deprecated. Use @angular/build builders instead.
+
+### @angular/ssr
+
+- CommonEngine APIs are deprecated in favor of AngularNodeAppEngine or AngularAppEngine.
+
+### @ngtools/webpack
+
+- @ngtools/webpack loader and plugin are deprecated. Use @angular/build instead.
+
+### @schematics/angular
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------------- |
+| [b2f7a038b](https://github.com/angular/angular-cli/commit/b2f7a038b4a321e4e1b0b340cd09425f948c77ad) | feat | conditionally install istanbul coverage provider for Vitest migration |
+| [d227e6985](https://github.com/angular/angular-cli/commit/d227e6985ef5540e0eea2571577ee2b9be0d3c64) | feat | migrate fake async to Vitest fake timers |
+| [d2aa9ede5](https://github.com/angular/angular-cli/commit/d2aa9ede55a3e16b61ce6ae60dba6c8ea8954358) | feat | migrate fakeAsync's flush behavior when used in beforeEach |
+| [c9f408153](https://github.com/angular/angular-cli/commit/c9f4081533f6f114846b88a152a9d5dc7363d680) | feat | set up fake timers in beforeEach instead of beforeAll |
+| [8d0805dd1](https://github.com/angular/angular-cli/commit/8d0805dd1750cb16af620811dc01b40e46ad030e) | feat | update TSConfig globals during karma to vitest migration |
+| [aed407db8](https://github.com/angular/angular-cli/commit/aed407db8be6bc7591fb82f10c79586cbd072a8a) | fix | defer karma config deletion in Karma to Vitest migration |
+| [7fb59eaa6](https://github.com/angular/angular-cli/commit/7fb59eaa65a8d7e880b6f44d715b2aeaff9301ca) | fix | use service decorator in ng generate |
+
+### @angular/cli
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------- |
+| [58c0978f6](https://github.com/angular/angular-cli/commit/58c0978f658ee5fa7232abd8e2eb7f146e4eb6bb) | feat | add support for Node.js 26.0.0 |
+| [ff88f491d](https://github.com/angular/angular-cli/commit/ff88f491da38493d6e06f3e4ac080d171c630ccd) | fix | restrict MCP workspace access to allowed client roots during resolution |
+| [a5e1e48db](https://github.com/angular/angular-cli/commit/a5e1e48db759e9ffcaa89f04504f5f93a1afdda4) | fix | update odd-numbered Node.js version warning condition for future releases |
+
+### @angular-devkit/build-angular
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | -------- | -------------------------- |
+| [b7940dbcb](https://github.com/angular/angular-cli/commit/b7940dbcb40291be4de5b31e8a8001165459a7d4) | refactor | deprecate Webpack builders |
+
+### @angular-devkit/build-webpack
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------- |
+| [3d5daa45e](https://github.com/angular/angular-cli/commit/3d5daa45e3ade025c1bc0df35d2766563ccf7c03) | refactor | deprecate webpack and webpack-dev-server builders |
+
+### @angular/build
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------------------------- |
+| [58c7c7a9d](https://github.com/angular/angular-cli/commit/58c7c7a9d80fc6af5cf8b82a6d87f1d3cf3808c6) | feat | subresource integrity validation for dynamically loaded modules |
+| [edfa782d5](https://github.com/angular/angular-cli/commit/edfa782d52fd971aebead8b96b6ca470a3f5123e) | fix | use dynamic TestComponentRenderer for Vitest |
+
+### @angular/ssr
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------- |
+| [ea95e1a87](https://github.com/angular/angular-cli/commit/ea95e1a87ebfb5b452a6b6ffa7838ca1fe094100) | fix | remove stateful flag from URL_PARAMETER_REGEXP |
+| [f85343925](https://github.com/angular/angular-cli/commit/f8534392552f4896ee9449939cdc705010331e3d) | fix | support all X-Forwarded-\* headers when trustProxyHeaders is true |
+| [50b16a65b](https://github.com/angular/angular-cli/commit/50b16a65b1be1f9c2ec11d578240a8884518d517) | refactor | deprecate CommonEngine APIs |
+
+### @ngtools/webpack
+
+| Commit | Type | Description |
+| --------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------- |
+| [547ca515b](https://github.com/angular/angular-cli/commit/547ca515b707c283489a3f088d86fc84807d830d) | refactor | deprecate @ngtools/webpack loader and plugin |
+
+
+
# 21.2.10 (2026-05-06)
diff --git a/MODULE.bazel b/MODULE.bazel
index 880cf3ce8662..1f1369fc2f08 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -4,51 +4,51 @@ module(
name = "angular_cli",
)
-bazel_dep(name = "platforms", version = "1.0.0")
+bazel_dep(name = "platforms", version = "1.1.0")
bazel_dep(name = "yq.bzl", version = "0.3.6")
bazel_dep(name = "rules_nodejs", version = "6.7.4")
-bazel_dep(name = "aspect_rules_js", version = "3.0.3")
-bazel_dep(name = "aspect_rules_ts", version = "3.8.8")
+bazel_dep(name = "aspect_rules_js", version = "3.1.2")
+bazel_dep(name = "aspect_rules_ts", version = "3.8.9")
bazel_dep(name = "rules_pkg", version = "1.2.0")
bazel_dep(name = "rules_cc", version = "0.2.18")
bazel_dep(name = "jq.bzl", version = "0.6.1")
bazel_dep(name = "bazel_lib", version = "3.3.1")
bazel_dep(name = "bazel_skylib", version = "1.9.0")
-bazel_dep(name = "aspect_rules_esbuild", version = "0.25.1")
+bazel_dep(name = "aspect_rules_esbuild", version = "0.26.0")
bazel_dep(name = "aspect_rules_jasmine", version = "2.0.4")
bazel_dep(name = "rules_angular")
git_override(
module_name = "rules_angular",
- commit = "b1d295334e70335dab7ac9984a989fae0a9c9dc2",
+ commit = "2c60e9efea96310da54047f1fee34c3e8bdfff20",
remote = "https://github.com/angular/rules_angular.git",
)
bazel_dep(name = "devinfra")
git_override(
module_name = "devinfra",
- commit = "48c48fa3848de5bb0ec1c3203558f099765165ab",
+ commit = "b932d3d4f63a5a15da0fbf81d61a601682deace7",
remote = "https://github.com/angular/dev-infra.git",
)
bazel_dep(name = "rules_browsers")
git_override(
module_name = "rules_browsers",
- commit = "b03f09ef28a08f8ae07482851cf5ecbf6ac23a2a",
+ commit = "cf0b8b6bedb144815014d4a2d00d42756d2c23d3",
remote = "https://github.com/angular/rules_browsers.git",
)
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
node.toolchain(
node_repositories = {
- "22.22.2-darwin_arm64": ("node-v22.22.2-darwin-arm64.tar.gz", "node-v22.22.2-darwin-arm64", "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"),
- "22.22.2-darwin_amd64": ("node-v22.22.2-darwin-x64.tar.gz", "node-v22.22.2-darwin-x64", "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"),
- "22.22.2-linux_arm64": ("node-v22.22.2-linux-arm64.tar.xz", "node-v22.22.2-linux-arm64", "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"),
- "22.22.2-linux_ppc64le": ("node-v22.22.2-linux-ppc64le.tar.xz", "node-v22.22.2-linux-ppc64le", "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"),
- "22.22.2-linux_s390x": ("node-v22.22.2-linux-s390x.tar.xz", "node-v22.22.2-linux-s390x", "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"),
- "22.22.2-linux_amd64": ("node-v22.22.2-linux-x64.tar.xz", "node-v22.22.2-linux-x64", "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"),
- "22.22.2-windows_amd64": ("node-v22.22.2-win-x64.zip", "node-v22.22.2-win-x64", "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"),
+ "22.22.3-darwin_arm64": ("node-v22.22.3-darwin-arm64.tar.gz", "node-v22.22.3-darwin-arm64", "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"),
+ "22.22.3-darwin_amd64": ("node-v22.22.3-darwin-x64.tar.gz", "node-v22.22.3-darwin-x64", "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"),
+ "22.22.3-linux_arm64": ("node-v22.22.3-linux-arm64.tar.xz", "node-v22.22.3-linux-arm64", "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"),
+ "22.22.3-linux_ppc64le": ("node-v22.22.3-linux-ppc64le.tar.xz", "node-v22.22.3-linux-ppc64le", "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"),
+ "22.22.3-linux_s390x": ("node-v22.22.3-linux-s390x.tar.xz", "node-v22.22.3-linux-s390x", "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"),
+ "22.22.3-linux_amd64": ("node-v22.22.3-linux-x64.tar.xz", "node-v22.22.3-linux-x64", "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"),
+ "22.22.3-windows_amd64": ("node-v22.22.3-win-x64.zip", "node-v22.22.3-win-x64", "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"),
},
- node_version = "22.22.2",
+ node_version = "22.22.3",
)
use_repo(
node,
@@ -66,30 +66,30 @@ node_dev = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node", dev_dep
node_dev.toolchain(
name = "node22",
node_repositories = {
- "22.22.0-darwin_arm64": ("node-v22.22.0-darwin-arm64.tar.gz", "node-v22.22.0-darwin-arm64", "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"),
- "22.22.0-darwin_amd64": ("node-v22.22.0-darwin-x64.tar.gz", "node-v22.22.0-darwin-x64", "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"),
- "22.22.0-linux_arm64": ("node-v22.22.0-linux-arm64.tar.xz", "node-v22.22.0-linux-arm64", "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"),
- "22.22.0-linux_ppc64le": ("node-v22.22.0-linux-ppc64le.tar.xz", "node-v22.22.0-linux-ppc64le", "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"),
- "22.22.0-linux_s390x": ("node-v22.22.0-linux-s390x.tar.xz", "node-v22.22.0-linux-s390x", "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"),
- "22.22.0-linux_amd64": ("node-v22.22.0-linux-x64.tar.xz", "node-v22.22.0-linux-x64", "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"),
- "22.22.0-windows_amd64": ("node-v22.22.0-win-x64.zip", "node-v22.22.0-win-x64", "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"),
+ "22.22.3-darwin_arm64": ("node-v22.22.3-darwin-arm64.tar.gz", "node-v22.22.3-darwin-arm64", "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"),
+ "22.22.3-darwin_amd64": ("node-v22.22.3-darwin-x64.tar.gz", "node-v22.22.3-darwin-x64", "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"),
+ "22.22.3-linux_arm64": ("node-v22.22.3-linux-arm64.tar.xz", "node-v22.22.3-linux-arm64", "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"),
+ "22.22.3-linux_ppc64le": ("node-v22.22.3-linux-ppc64le.tar.xz", "node-v22.22.3-linux-ppc64le", "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"),
+ "22.22.3-linux_s390x": ("node-v22.22.3-linux-s390x.tar.xz", "node-v22.22.3-linux-s390x", "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"),
+ "22.22.3-linux_amd64": ("node-v22.22.3-linux-x64.tar.xz", "node-v22.22.3-linux-x64", "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"),
+ "22.22.3-windows_amd64": ("node-v22.22.3-win-x64.zip", "node-v22.22.3-win-x64", "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"),
},
- node_version = "22.22.0",
+ node_version = "22.22.3",
)
# Node.js 24
node_dev.toolchain(
name = "node24",
node_repositories = {
- "24.13.1-darwin_arm64": ("node-v24.13.1-darwin-arm64.tar.gz", "node-v24.13.1-darwin-arm64", "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"),
- "24.13.1-darwin_amd64": ("node-v24.13.1-darwin-x64.tar.gz", "node-v24.13.1-darwin-x64", "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"),
- "24.13.1-linux_arm64": ("node-v24.13.1-linux-arm64.tar.xz", "node-v24.13.1-linux-arm64", "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"),
- "24.13.1-linux_ppc64le": ("node-v24.13.1-linux-ppc64le.tar.xz", "node-v24.13.1-linux-ppc64le", "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"),
- "24.13.1-linux_s390x": ("node-v24.13.1-linux-s390x.tar.xz", "node-v24.13.1-linux-s390x", "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"),
- "24.13.1-linux_amd64": ("node-v24.13.1-linux-x64.tar.xz", "node-v24.13.1-linux-x64", "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"),
- "24.13.1-windows_amd64": ("node-v24.13.1-win-x64.zip", "node-v24.13.1-win-x64", "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"),
+ "24.15.0-darwin_arm64": ("node-v24.15.0-darwin-arm64.tar.gz", "node-v24.15.0-darwin-arm64", "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"),
+ "24.15.0-darwin_amd64": ("node-v24.15.0-darwin-x64.tar.gz", "node-v24.15.0-darwin-x64", "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"),
+ "24.15.0-linux_arm64": ("node-v24.15.0-linux-arm64.tar.xz", "node-v24.15.0-linux-arm64", "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"),
+ "24.15.0-linux_ppc64le": ("node-v24.15.0-linux-ppc64le.tar.xz", "node-v24.15.0-linux-ppc64le", "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"),
+ "24.15.0-linux_s390x": ("node-v24.15.0-linux-s390x.tar.xz", "node-v24.15.0-linux-s390x", "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"),
+ "24.15.0-linux_amd64": ("node-v24.15.0-linux-x64.tar.xz", "node-v24.15.0-linux-x64", "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"),
+ "24.15.0-windows_amd64": ("node-v24.15.0-win-x64.zip", "node-v24.15.0-win-x64", "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"),
},
- node_version = "24.13.1",
+ node_version = "24.15.0",
)
# Node.js 26
@@ -131,8 +131,8 @@ use_repo(
pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
pnpm.pnpm(
name = "pnpm",
- pnpm_version = "10.33.2",
- pnpm_version_integrity = "sha512-qQ+vb+6rca1sblf5Tg/hoS9dzCLNdU20CulZPraj4LaxLjVAIYuzeuCDQEsfLObbKkEh6XmCm0r/lLmfSdoc+A==",
+ pnpm_version = "10.33.4",
+ pnpm_version_integrity = "sha512-HGezs1my1AgRm6HtKJ80uPw8aHNBK+xv0mT73IJInlEPy+y5zp0i2ufzt2Jp2EQQRgFL3KU7mXnNelYa1jG4AA==",
)
use_repo(pnpm, "pnpm")
diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock
index 06eb02660a88..36fb2ccfa206 100644
--- a/MODULE.bazel.lock
+++ b/MODULE.bazel.lock
@@ -18,16 +18,16 @@
"https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/source.json": "ac2c3213df8f985785f1d0aeb7f0f73d5324e6e67d593d9b9470fb74a25d4a9b",
"https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c",
"https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838",
- "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.25.1/MODULE.bazel": "9b931b3e483bd8eedb6966bda6df07d801f70ccb4896231b4e5e711b5130f3aa",
- "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.25.1/source.json": "a0b72e23ed06113f3878cb635d586b4045ef37750983467af72fe0315c3a2fcd",
+ "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.26.0/MODULE.bazel": "6c902d97038c3ab07b6c4e67c97abc61b20182fcfa84fa7dee82fc724f12e455",
+ "https://bcr.bazel.build/modules/aspect_rules_esbuild/0.26.0/source.json": "4cc3ece7ab661bb391a9e24fe55c4b567d60a9ea9d9e91d772dad373cbcb6217",
"https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.4/MODULE.bazel": "fbb819eb8b7e5d7f67fdd38f7cecb413e287594cd666ce192c72c8828527775a",
"https://bcr.bazel.build/modules/aspect_rules_jasmine/2.0.4/source.json": "81ffb708333cd98ec3c0b4cc004f4d5cf92a16914b5196a2892c45141bba7cff",
"https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5",
"https://bcr.bazel.build/modules/aspect_rules_js/3.0.3/MODULE.bazel": "28a30e8fc33bf64a67835d64d124f6e05a7d59648dcb27b110fb3502f761e503",
- "https://bcr.bazel.build/modules/aspect_rules_js/3.0.3/source.json": "bb8fff9a304452e1042af9522ad1d54d6f1d1fdf71c5127deadb6fd156654193",
- "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.8/MODULE.bazel": "b52b929a948438665809d49af610f58d1b14f63d6d21ab748f47b6050be4c1f6",
- "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.8/source.json": "5414530b761a45ab7ca6c49f0a2a9cf8dc0da772f5037cf05ca18aaa64bb1b19",
- "https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.6/MODULE.bazel": "cafb8781ad591bc57cc765dca5fefab08cf9f65af363d162b79d49205c7f8af7",
+ "https://bcr.bazel.build/modules/aspect_rules_js/3.1.2/MODULE.bazel": "e3685502155d3cc65f3bf98e714f7435de67d7f8f355d63478a80197310311fc",
+ "https://bcr.bazel.build/modules/aspect_rules_js/3.1.2/source.json": "a32ab71831452b945f3f83a1b1feb9402007e600bce55ac76e15ef0c1e08b520",
+ "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.9/MODULE.bazel": "bd5f9ebf517cfcd377eaa7ce1cb16035d167f00774b77789909590c53bc6f20c",
+ "https://bcr.bazel.build/modules/aspect_rules_ts/3.8.9/source.json": "59e66656561571ed82ccff56c75c43d0bc79f0065ca8d17be2752d4f648d40c9",
"https://bcr.bazel.build/modules/aspect_tools_telemetry/0.2.8/MODULE.bazel": "aa975a83e72bcaac62ee61ab12b788ea324a1d05c4aab28aadb202f647881679",
"https://bcr.bazel.build/modules/aspect_tools_telemetry/0.3.3/MODULE.bazel": "37c764292861c2f70314efa9846bb6dbb44fc0308903b3285da6528305450183",
"https://bcr.bazel.build/modules/aspect_tools_telemetry/0.3.3/source.json": "605086bbc197743a0d360f7ddc550a1d4dfa0441bc807236e17170f636153348",
@@ -87,7 +87,8 @@
"https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d",
"https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902",
"https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92",
- "https://bcr.bazel.build/modules/package_metadata/0.0.2/source.json": "e53a759a72488d2c0576f57491ef2da0cf4aab05ac0997314012495935531b73",
+ "https://bcr.bazel.build/modules/package_metadata/0.0.3/MODULE.bazel": "77890552ecea9e284b5424c9de827a58099348763a4359e975c359a83d4faa83",
+ "https://bcr.bazel.build/modules/package_metadata/0.0.3/source.json": "742075a428ad12a3fa18a69014c2f57f01af910c6d9d18646c990200853e641a",
"https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5",
"https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f",
"https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee",
@@ -96,7 +97,8 @@
"https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814",
"https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d",
"https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580",
- "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96",
+ "https://bcr.bazel.build/modules/platforms/1.1.0/MODULE.bazel": "1c0c09f5bdcf4b3f924720d2478a3711cb39f4977019ca5988685e5b7e18b3d2",
+ "https://bcr.bazel.build/modules/platforms/1.1.0/source.json": "fcf351c47596c939140ab0d333dfdd08ed1ea6ce33c2fe70c12493a301cf1344",
"https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7",
"https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c",
"https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d",
@@ -195,14 +197,15 @@
"https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7",
"https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5",
"https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216",
- "https://bcr.bazel.build/modules/tar.bzl/0.10.1/MODULE.bazel": "bf5fda5b5ccef8c3c4a5f4886144377386e0baa382972f257acb42dcf40ea908",
- "https://bcr.bazel.build/modules/tar.bzl/0.10.1/source.json": "3f1beb35acf53c270a9de493cdc775a985551d7069cfcf24e136b42f683bbb10",
+ "https://bcr.bazel.build/modules/tar.bzl/0.10.4/MODULE.bazel": "e8f9ff79199e8d9eaad7f1b0a77ad74b30bb82d794b87d8ca942bead5de83ae9",
+ "https://bcr.bazel.build/modules/tar.bzl/0.10.4/source.json": "20143442376c03426f6135292ba02d825cb75308aa47e6bf42dd4cc5a435c2ff",
"https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468",
"https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351",
"https://bcr.bazel.build/modules/tar.bzl/0.6.0/MODULE.bazel": "a3584b4edcfafcabd9b0ef9819808f05b372957bbdff41601429d5fd0aac2e7c",
"https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43",
"https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072",
"https://bcr.bazel.build/modules/yq.bzl/0.3.2/MODULE.bazel": "0384efa70e8033d842ea73aa4b7199fa099709e236a7264345c03937166670b6",
+ "https://bcr.bazel.build/modules/yq.bzl/0.3.4/MODULE.bazel": "d3a270662f5d766cd7229732d65a5a5bc485240c3007343dd279edfb60c9ae27",
"https://bcr.bazel.build/modules/yq.bzl/0.3.6/MODULE.bazel": "985c2a0cb4ad9994bb0e33cc7fae931c91105eeefe3faa355b8f4c258d0607c0",
"https://bcr.bazel.build/modules/yq.bzl/0.3.6/source.json": "678aaf6e291164f3cd761bb3e872e8a151248f413dbb63c5524a50b82a5bc890",
"https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0",
@@ -215,8 +218,8 @@
"moduleExtensions": {
"@@aspect_rules_esbuild+//esbuild:extensions.bzl%esbuild": {
"general": {
- "bzlTransitiveDigest": "RJZEFwxTtTSj8BUT6RYAEkcq8BHH9IVPJ//T0MDu3sA=",
- "usagesDigest": "6We6zwGoawD9YXqMI0KPaxEKJTnamXBsuOekhFS2D40=",
+ "bzlTransitiveDigest": "eWM29sOFdgwS2/XR2bEHk1NS/hPrYIX7ly4yh7MH5As=",
+ "usagesDigest": "LSQ+zZp7JNgnBONTxxXnwGr4NTh2qtQYk7qwXXz5qWo=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
@@ -430,7 +433,7 @@
},
"@@aspect_rules_ts+//ts:extensions.bzl%ext": {
"general": {
- "bzlTransitiveDigest": "dhTbv9E6UfT1WJmmu3ORRPO6AKFJvgBjBxu+BO+u1RY=",
+ "bzlTransitiveDigest": "oXZdaO5AFNj463wHR4NRAWU9XCc9wkl3rcZxqQoNWHQ=",
"usagesDigest": "QQqokxpCVnBJntX7dhxnf/c13LeWUQxDTUnILYCp4Jc=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
@@ -494,7 +497,7 @@
"@@aspect_tools_telemetry+//:extension.bzl%telemetry": {
"general": {
"bzlTransitiveDigest": "cl5A2O84vDL6Tt+Qga8FCj1DUDGqn+e7ly5rZ+4xvcc=",
- "usagesDigest": "0S2z9G3E1NIz6vCXk9IbRcO5LIckEcYVMSzRj2sEML8=",
+ "usagesDigest": "8+RHv1QFWRDG26pvmWpyF4aUC+mBAIdjzLstd+nQZPc=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
@@ -503,9 +506,9 @@
"repoRuleId": "@@aspect_tools_telemetry+//:extension.bzl%tel_repository",
"attributes": {
"deps": {
- "aspect_rules_js": "3.0.3",
- "aspect_rules_ts": "3.8.8",
- "aspect_rules_esbuild": "0.25.1",
+ "aspect_rules_js": "3.1.2",
+ "aspect_rules_ts": "3.8.9",
+ "aspect_rules_esbuild": "0.26.0",
"aspect_rules_jasmine": "2.0.4",
"aspect_tools_telemetry": "0.3.3"
}
@@ -528,7 +531,7 @@
},
"@@pybind11_bazel+//:python_configure.bzl%extension": {
"general": {
- "bzlTransitiveDigest": "D2/qWHU6yQFwRG7Bb+caqrYMha5avsASao2vERrxK24=",
+ "bzlTransitiveDigest": "VhEtmxw1yzb9rBZVsKTdti7p+nDM/Fv1p9TmKdO45+Q=",
"usagesDigest": "fycyB39YnXIJkfWCIXLUKJMZzANcuLy9ZE73hRucjFk=",
"recordedFileInputs": {
"@@pybind11_bazel+//MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e"
@@ -588,7 +591,7 @@
},
"@@rules_browsers+//browsers:extensions.bzl%browsers": {
"general": {
- "bzlTransitiveDigest": "Bm6fiKpWy96aLohOlLCP36ARVxRLZm/R+smhsb2HzmI=",
+ "bzlTransitiveDigest": "bSZZZDyC3Xuk66A4sGPS151M31eBfEr1Yii1vzk8Jbg=",
"usagesDigest": "FmXYJVoVJlnfUU8x8gObSvu4qWcco/9Faw61aC/wBF0=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
@@ -597,9 +600,9 @@
"rules_browsers_chrome_linux": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "1ac33f89306327af43be159c03ca4a26486de0858f42fe52394acdef50364143",
+ "sha256": "086e266054c7e9b8a690e50f711c00f399f66e04bd77b078e26073cc634345bd",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/linux64/chrome-headless-shell-linux64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/linux64/chrome-headless-shell-linux64.zip"
],
"named_files": {
"CHROME-HEADLESS-SHELL": "chrome-headless-shell-linux64/chrome-headless-shell"
@@ -615,9 +618,9 @@
"rules_browsers_chrome_mac": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "169ff49c465cfda52931395e61861e146dfc5013e92c01ca792db5acea858d0b",
+ "sha256": "e6fc7d71132e66f71ac0c1cdaca1f956a793931488f8392cda907456102ddc15",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/mac-x64/chrome-headless-shell-mac-x64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/mac-x64/chrome-headless-shell-mac-x64.zip"
],
"named_files": {
"CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-x64/chrome-headless-shell"
@@ -633,9 +636,9 @@
"rules_browsers_chrome_mac_arm": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "aeaaaaa4d68193a21bed04c44ddeb1230232707b4ea1d845a92925787509cd8e",
+ "sha256": "dfcfb50b4043dcf15daaa29b2206f483916c9cf7273c42c993a04f7508208c18",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/mac-arm64/chrome-headless-shell-mac-arm64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/mac-arm64/chrome-headless-shell-mac-arm64.zip"
],
"named_files": {
"CHROME-HEADLESS-SHELL": "chrome-headless-shell-mac-arm64/chrome-headless-shell"
@@ -651,9 +654,9 @@
"rules_browsers_chrome_win64": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "4d6d79bcbcb22084df6e3a3d3a2caff67d6c0fa488d63f0c7ec1526f9553db8c",
+ "sha256": "75cd03e716b8dba25699e417fe199847c38b96246321f7b04e09b3b46960b820",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/win64/chrome-headless-shell-win64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/win64/chrome-headless-shell-win64.zip"
],
"named_files": {
"CHROME-HEADLESS-SHELL": "chrome-headless-shell-win64/chrome-headless-shell.exe"
@@ -669,9 +672,9 @@
"rules_browsers_chromedriver_linux": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "0607ccf6810a07ae08cac6443beac8b23f88dd53c7f1e0299e22d65f7cd2d020",
+ "sha256": "ad6a464663a80a182fb7a342b018dbd83f7c0c6d058bb1c83733de9564cf5b41",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/linux64/chromedriver-linux64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/linux64/chromedriver-linux64.zip"
],
"named_files": {
"CHROMEDRIVER": "chromedriver-linux64/chromedriver"
@@ -685,9 +688,9 @@
"rules_browsers_chromedriver_mac": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "0f512a9dd683ed4c41e609d8d02c07807497dbad3ab2f95f0d583486be7b8cff",
+ "sha256": "9d9ff5954d0737ed9dc3c1c3e1f82b05f924f17ecafb41c29c201c1033aadfb5",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/mac-x64/chromedriver-mac-x64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/mac-x64/chromedriver-mac-x64.zip"
],
"named_files": {
"CHROMEDRIVER": "chromedriver-mac-x64/chromedriver"
@@ -701,9 +704,9 @@
"rules_browsers_chromedriver_mac_arm": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "7d6fc6d17de1733eb6739d1ea16d085c8df1568bcf9fa0d130c2784b27f38268",
+ "sha256": "a60658d6ab769eeeaef63c6d0ec14fa71c12f4738ea43b59b1a034a7a64f4efd",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/mac-arm64/chromedriver-mac-arm64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/mac-arm64/chromedriver-mac-arm64.zip"
],
"named_files": {
"CHROMEDRIVER": "chromedriver-mac-arm64/chromedriver"
@@ -717,9 +720,9 @@
"rules_browsers_chromedriver_win64": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "f4e9fb7bbf692fde7979b24e8d737b3cef4baafbc7a370e5d0abc4a8450fd830",
+ "sha256": "29bb5f0c0045449084be76030266abef53071a136aea16a58626bb29e73c687c",
"urls": [
- "https://storage.googleapis.com/chrome-for-testing-public/147.0.7687.0/win64/chromedriver-win64.zip"
+ "https://storage.googleapis.com/chrome-for-testing-public/150.0.7845.0/win64/chromedriver-win64.zip"
],
"named_files": {
"CHROMEDRIVER": "chromedriver-win64/chromedriver.exe"
@@ -733,9 +736,9 @@
"rules_browsers_firefox_linux": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "f055b9c0d7346a10d22edc7f10e08679af2ea495367381ab2be9cab3ec6add97",
+ "sha256": "8ff8557a5ca3903ebbc1d18570684075f623465be5e362d63a95b3acc523f824",
"urls": [
- "https://archive.mozilla.org/pub/firefox/releases/147.0/linux-x86_64/en-US/firefox-147.0.tar.xz"
+ "https://archive.mozilla.org/pub/firefox/releases/151.0/linux-x86_64/en-US/firefox-151.0.tar.xz"
],
"named_files": {
"FIREFOX": "firefox/firefox"
@@ -749,9 +752,9 @@
"rules_browsers_firefox_mac": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "48485e2068bc726e2f30cf5855fc2da1fc75c1272bc243a5394f428ffae3ba35",
+ "sha256": "5a56ebd8f0f8cec94a86e04c6793e1d1502b40206f5d4c86fff5b7a270e84f6b",
"urls": [
- "https://archive.mozilla.org/pub/firefox/releases/147.0/mac/en-US/Firefox%20147.0.dmg"
+ "https://archive.mozilla.org/pub/firefox/releases/151.0/mac/en-US/Firefox%20151.0.dmg"
],
"named_files": {
"FIREFOX": "Firefox.app/Contents/MacOS/firefox"
@@ -765,9 +768,9 @@
"rules_browsers_firefox_mac_arm": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "48485e2068bc726e2f30cf5855fc2da1fc75c1272bc243a5394f428ffae3ba35",
+ "sha256": "5a56ebd8f0f8cec94a86e04c6793e1d1502b40206f5d4c86fff5b7a270e84f6b",
"urls": [
- "https://archive.mozilla.org/pub/firefox/releases/147.0/mac/en-US/Firefox%20147.0.dmg"
+ "https://archive.mozilla.org/pub/firefox/releases/151.0/mac/en-US/Firefox%20151.0.dmg"
],
"named_files": {
"FIREFOX": "Firefox.app/Contents/MacOS/firefox"
@@ -781,9 +784,9 @@
"rules_browsers_firefox_win64": {
"repoRuleId": "@@rules_browsers+//browsers/private:browser_repo.bzl%browser_repo",
"attributes": {
- "sha256": "36ff9e150875aa48a0af9eec3eb67f66dddd8efac5c743265371a72ae3e796c4",
+ "sha256": "358381238a840831da8a6cda16721692df91a74bc44847ff0285da12de788a8d",
"urls": [
- "https://archive.mozilla.org/pub/firefox/releases/147.0/win64/en-US/Firefox%20Setup%20147.0.exe"
+ "https://archive.mozilla.org/pub/firefox/releases/151.0/win64/en-US/Firefox%20Setup%20151.0.exe"
],
"named_files": {
"FIREFOX": "core/firefox.exe"
@@ -800,7 +803,7 @@
},
"@@rules_fuzzing+//fuzzing/private:extensions.bzl%non_module_dependencies": {
"general": {
- "bzlTransitiveDigest": "4LouzhF/yT117s7peGnNs9ROomiJXC6Zl5R0oI21jho=",
+ "bzlTransitiveDigest": "CYUiFDCnL2VGx3uotIu/VuGabgObnZra2zzRUJCX0sU=",
"usagesDigest": "wy6ISK6UOcBEjj/mvJ/S3WeXoO67X+1llb9yPyFtPgc=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
@@ -883,7 +886,7 @@
},
"@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": {
"general": {
- "bzlTransitiveDigest": "nvW/NrBXlAmiQw99EMGKkLaD2KbNp2mQDlxdfpr+0Ls=",
+ "bzlTransitiveDigest": "03Qju4tW0vE+0RBuZGuV2A4Hx6AiSkdNahYvworx2aM=",
"usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
@@ -948,7 +951,7 @@
"@@rules_nodejs+//nodejs:extensions.bzl%node": {
"general": {
"bzlTransitiveDigest": "oZFClfRhTTwsYzpxVPkOpOt/r0+OzEfEV37au0jFZ0s=",
- "usagesDigest": "bqCPXHiIs2yi6xo5XEjRzQJ3R8k+nwCWvizzoGSa3X8=",
+ "usagesDigest": "28HwARS2PIkmyhXuiSyS1jAaG14m/bsZo/Sm+OPn2M8=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
@@ -958,46 +961,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_amd64"
}
@@ -1007,46 +1010,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_arm64"
}
@@ -1056,46 +1059,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_s390x"
}
@@ -1105,46 +1108,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_ppc64le"
}
@@ -1154,46 +1157,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "darwin_amd64"
}
@@ -1203,46 +1206,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "darwin_arm64"
}
@@ -1252,46 +1255,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "windows_amd64"
}
@@ -1301,46 +1304,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.2-darwin_arm64": [
- "node-v22.22.2-darwin-arm64.tar.gz",
- "node-v22.22.2-darwin-arm64",
- "db4b275b83736df67533529a18cc55de2549a8329ace6c7bcc68f8d22d3c9000"
- ],
- "22.22.2-darwin_amd64": [
- "node-v22.22.2-darwin-x64.tar.gz",
- "node-v22.22.2-darwin-x64",
- "12a6abb9c2902cf48a21120da13f87fde1ed1b71a13330712949e8db818708ba"
- ],
- "22.22.2-linux_arm64": [
- "node-v22.22.2-linux-arm64.tar.xz",
- "node-v22.22.2-linux-arm64",
- "e9e1930fd321a470e29bb68f30318bf58e3ecb4acb4f1533fb19c58328a091fe"
- ],
- "22.22.2-linux_ppc64le": [
- "node-v22.22.2-linux-ppc64le.tar.xz",
- "node-v22.22.2-linux-ppc64le",
- "14045b5a5030d35ca0030fb7e870bd11a651eb9b57323ebc0021e8d78ac6bac9"
- ],
- "22.22.2-linux_s390x": [
- "node-v22.22.2-linux-s390x.tar.xz",
- "node-v22.22.2-linux-s390x",
- "9e4a07c291b8949289c6ea8ee61b1d14666a4810feae776a8d1eb1f57e03a2fb"
- ],
- "22.22.2-linux_amd64": [
- "node-v22.22.2-linux-x64.tar.xz",
- "node-v22.22.2-linux-x64",
- "88fd1ce767091fd8d4a99fdb2356e98c819f93f3b1f8663853a2dee9b438068a"
- ],
- "22.22.2-windows_amd64": [
- "node-v22.22.2-win-x64.zip",
- "node-v22.22.2-win-x64",
- "7c93e9d92bf68c07182b471aa187e35ee6cd08ef0f24ab060dfff605fcc1c57c"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.2",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "windows_arm64"
}
@@ -1368,46 +1371,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_amd64"
}
@@ -1417,46 +1420,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_arm64"
}
@@ -1466,46 +1469,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_s390x"
}
@@ -1515,46 +1518,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "linux_ppc64le"
}
@@ -1564,46 +1567,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "darwin_amd64"
}
@@ -1613,46 +1616,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "darwin_arm64"
}
@@ -1662,46 +1665,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "windows_amd64"
}
@@ -1711,46 +1714,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "22.22.0-darwin_arm64": [
- "node-v22.22.0-darwin-arm64.tar.gz",
- "node-v22.22.0-darwin-arm64",
- "5ed4db0fcf1eaf84d91ad12462631d73bf4576c1377e192d222e48026a902640"
- ],
- "22.22.0-darwin_amd64": [
- "node-v22.22.0-darwin-x64.tar.gz",
- "node-v22.22.0-darwin-x64",
- "5ea50c9d6dea3dfa3abb66b2656f7a4e1c8cef23432b558d45fb538c7b5dedce"
- ],
- "22.22.0-linux_arm64": [
- "node-v22.22.0-linux-arm64.tar.xz",
- "node-v22.22.0-linux-arm64",
- "1bf1eb9ee63ffc4e5d324c0b9b62cf4a289f44332dfef9607cea1a0d9596ba6f"
- ],
- "22.22.0-linux_ppc64le": [
- "node-v22.22.0-linux-ppc64le.tar.xz",
- "node-v22.22.0-linux-ppc64le",
- "d83b9957431cc18e1fc143a4b99f89cde7b8a18f53ef392231b4336afd058865"
- ],
- "22.22.0-linux_s390x": [
- "node-v22.22.0-linux-s390x.tar.xz",
- "node-v22.22.0-linux-s390x",
- "5aa0e520689448c4233e8d73f284e8e0634fdcd32b479735698494be5641f3e4"
- ],
- "22.22.0-linux_amd64": [
- "node-v22.22.0-linux-x64.tar.xz",
- "node-v22.22.0-linux-x64",
- "9aa8e9d2298ab68c600bd6fb86a6c13bce11a4eca1ba9b39d79fa021755d7c37"
- ],
- "22.22.0-windows_amd64": [
- "node-v22.22.0-win-x64.zip",
- "node-v22.22.0-win-x64",
- "c97fa376d2becdc8863fcd3ca2dd9a83a9f3468ee7ccf7a6d076ec66a645c77a"
+ "22.22.3-darwin_arm64": [
+ "node-v22.22.3-darwin-arm64.tar.gz",
+ "node-v22.22.3-darwin-arm64",
+ "0da7ff74ef8611328c8212f17943368713a2ad953fb7d89a8c8a0eae87c23207"
+ ],
+ "22.22.3-darwin_amd64": [
+ "node-v22.22.3-darwin-x64.tar.gz",
+ "node-v22.22.3-darwin-x64",
+ "45830ba752fa0d892c6dcd640946669801293cac820a33591ded40ac075198ec"
+ ],
+ "22.22.3-linux_arm64": [
+ "node-v22.22.3-linux-arm64.tar.xz",
+ "node-v22.22.3-linux-arm64",
+ "1c4a9933a5e45bc88f54f70b5f91232c127ec49f1a5989d23fb85824c7adf9b7"
+ ],
+ "22.22.3-linux_ppc64le": [
+ "node-v22.22.3-linux-ppc64le.tar.xz",
+ "node-v22.22.3-linux-ppc64le",
+ "edb5478071bd1375e80195ca52f72823998bb5141b1a09e68bc54b3e2eb67754"
+ ],
+ "22.22.3-linux_s390x": [
+ "node-v22.22.3-linux-s390x.tar.xz",
+ "node-v22.22.3-linux-s390x",
+ "ce398c057830d57a24c458177279a17bc51742d5c22dd4cbe97b10dbd43f2617"
+ ],
+ "22.22.3-linux_amd64": [
+ "node-v22.22.3-linux-x64.tar.xz",
+ "node-v22.22.3-linux-x64",
+ "2e5d13569282d016861fae7c8f935e741693c269101a5bebcf761a5376d1f99f"
+ ],
+ "22.22.3-windows_amd64": [
+ "node-v22.22.3-win-x64.zip",
+ "node-v22.22.3-win-x64",
+ "6c8d54f635feff4df76c2ca80f45332eb2ff57d25226edce36592e51a177ee33"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "22.22.0",
+ "node_version": "22.22.3",
"include_headers": false,
"platform": "windows_arm64"
}
@@ -1778,46 +1781,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "linux_amd64"
}
@@ -1827,46 +1830,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "linux_arm64"
}
@@ -1876,46 +1879,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "linux_s390x"
}
@@ -1925,46 +1928,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "linux_ppc64le"
}
@@ -1974,46 +1977,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "darwin_amd64"
}
@@ -2023,46 +2026,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "darwin_arm64"
}
@@ -2072,46 +2075,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "windows_amd64"
}
@@ -2121,46 +2124,46 @@
"attributes": {
"node_download_auth": {},
"node_repositories": {
- "24.13.1-darwin_arm64": [
- "node-v24.13.1-darwin-arm64.tar.gz",
- "node-v24.13.1-darwin-arm64",
- "8c039d59f2fec6195e4281ad5b0d02b9a940897b4df7b849c6fb48be6787bba6"
- ],
- "24.13.1-darwin_amd64": [
- "node-v24.13.1-darwin-x64.tar.gz",
- "node-v24.13.1-darwin-x64",
- "527f0578d9812e7dfa225121bda0b1546a6a0e4b5f556295fc8299c272de5fbf"
- ],
- "24.13.1-linux_arm64": [
- "node-v24.13.1-linux-arm64.tar.xz",
- "node-v24.13.1-linux-arm64",
- "c827d3d301e2eed1a51f36d0116b71b9e3d9e3b728f081615270ea40faac34c1"
- ],
- "24.13.1-linux_ppc64le": [
- "node-v24.13.1-linux-ppc64le.tar.xz",
- "node-v24.13.1-linux-ppc64le",
- "fb712a08d317655dbf776c90f60ac2105109d802e33811df6c9ed33d12f801c6"
- ],
- "24.13.1-linux_s390x": [
- "node-v24.13.1-linux-s390x.tar.xz",
- "node-v24.13.1-linux-s390x",
- "8e2c0d9b5545c3db22623e8cb8d6f0c28fcd470f29d32dbeabf9432dda289de2"
- ],
- "24.13.1-linux_amd64": [
- "node-v24.13.1-linux-x64.tar.xz",
- "node-v24.13.1-linux-x64",
- "30215f90ea3cd04dfbc06e762c021393fa173a1d392974298bbc871a8e461089"
- ],
- "24.13.1-windows_amd64": [
- "node-v24.13.1-win-x64.zip",
- "node-v24.13.1-win-x64",
- "fba577c4bb87df04d54dd87bbdaa5a2272f1f99a2acbf9152e1a91b8b5f0b279"
+ "24.15.0-darwin_arm64": [
+ "node-v24.15.0-darwin-arm64.tar.gz",
+ "node-v24.15.0-darwin-arm64",
+ "372331b969779ab5d15b949884fc6eaf88d5afe87bde8ba881d6400b9100ffc4"
+ ],
+ "24.15.0-darwin_amd64": [
+ "node-v24.15.0-darwin-x64.tar.gz",
+ "node-v24.15.0-darwin-x64",
+ "ffd5ee293467927f3ee731a553eb88fd1f48cf74eebc2d74a6babe4af228673b"
+ ],
+ "24.15.0-linux_arm64": [
+ "node-v24.15.0-linux-arm64.tar.xz",
+ "node-v24.15.0-linux-arm64",
+ "f3d5a797b5d210ce8e2cb265544c8e482eaedcb8aa409a8b46da7e8595d0dda0"
+ ],
+ "24.15.0-linux_ppc64le": [
+ "node-v24.15.0-linux-ppc64le.tar.xz",
+ "node-v24.15.0-linux-ppc64le",
+ "6a6560a27bd2817013c28c3d917bfe9eebf26bbd4b1d88475190f216cc411fbb"
+ ],
+ "24.15.0-linux_s390x": [
+ "node-v24.15.0-linux-s390x.tar.xz",
+ "node-v24.15.0-linux-s390x",
+ "940d4cbfadf736b34519630a05d144c09f8a5aca291a802f2f559ee1562f6f24"
+ ],
+ "24.15.0-linux_amd64": [
+ "node-v24.15.0-linux-x64.tar.xz",
+ "node-v24.15.0-linux-x64",
+ "472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6"
+ ],
+ "24.15.0-windows_amd64": [
+ "node-v24.15.0-win-x64.zip",
+ "node-v24.15.0-win-x64",
+ "cc5149eabd53779ce1e7bdc5401643622d0c7e6800ade18928a767e940bb0e62"
]
},
"node_urls": [
"https://nodejs.org/dist/v{version}/{filename}"
],
- "node_version": "24.13.1",
+ "node_version": "24.15.0",
"include_headers": false,
"platform": "windows_arm64"
}
@@ -2599,7 +2602,7 @@
},
"@@rules_python+//python/extensions:pip.bzl%pip": {
"general": {
- "bzlTransitiveDigest": "gnOBzUu2hbOMXwy32CnPKpNrOsOEirGIas2EVtC8diM=",
+ "bzlTransitiveDigest": "1CieYf7PBGYmx4QxddIeJFyAiJ2OB1ah39h4F4rtjxo=",
"usagesDigest": "AK1R124YPWwAs8z1CQYyjYuci8RO5Ofot+EP5ZCNQDc=",
"recordedFileInputs": {
"@@protobuf+//python/requirements.txt": "983be60d3cec4b319dcab6d48aeb3f5b2f7c3350f26b3a9e97486c37967c73c5",
@@ -5338,7 +5341,7 @@
"@@yq.bzl+//yq:extensions.bzl%yq": {
"general": {
"bzlTransitiveDigest": "UfFMy8CWK4/dVo/tfaSAIYUiDGNAPes5eRllx9O9Q9Q=",
- "usagesDigest": "xPeGU4HF2Tm+YRYp+urLJFiY6+9GledFMMrn4sTXP8M=",
+ "usagesDigest": "8e3rbqq064p0a9Kvcmva2jmDBY/XStrYwTWmi2gmqTY=",
"recordedFileInputs": {},
"recordedDirentsInputs": {},
"envVariables": {},
diff --git a/constants.bzl b/constants.bzl
index 7c791830e40d..f8d9c5191657 100644
--- a/constants.bzl
+++ b/constants.bzl
@@ -1,5 +1,5 @@
# Engine versions to stamp in a release package.json
-RELEASE_ENGINES_NODE = "^22.22.0 || ^24.13.1 || >=26.0.0"
+RELEASE_ENGINES_NODE = "^22.22.3 || ^24.15.0 || >=26.0.0"
RELEASE_ENGINES_NPM = "^6.11.0 || ^7.5.6 || >=8.0.0"
RELEASE_ENGINES_YARN = ">= 1.13.0"
diff --git a/goldens/public-api/angular_devkit/core/node/index.api.md b/goldens/public-api/angular_devkit/core/node/index.api.md
index cb18462521ca..9fcdee9770cb 100644
--- a/goldens/public-api/angular_devkit/core/node/index.api.md
+++ b/goldens/public-api/angular_devkit/core/node/index.api.md
@@ -11,7 +11,7 @@ import { Stats as Stats_2 } from 'node:fs';
import { Subject } from 'rxjs';
import { Subscription } from 'rxjs';
-// @public
+// @public @deprecated
export function createConsoleLogger(verbose?: boolean, stdout?: ProcessOutput, stderr?: ProcessOutput, colors?: Partial string>>): logging.Logger;
// @public
diff --git a/modules/testing/builder/package.json b/modules/testing/builder/package.json
index 705e97cb7ea8..6b1eae2e84ce 100644
--- a/modules/testing/builder/package.json
+++ b/modules/testing/builder/package.json
@@ -8,7 +8,7 @@
"browser-sync": "3.0.4",
"istanbul-lib-instrument": "6.0.3",
"jsdom": "29.1.1",
- "ng-packagr": "22.0.0-next.3",
+ "ng-packagr": "22.0.0-rc.0",
"rxjs": "7.8.2",
"vitest": "4.1.5"
}
diff --git a/package.json b/package.json
index 2e6690180f6c..9437de564662 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@angular/devkit-repo",
- "version": "22.0.0-next.7",
+ "version": "22.0.0-rc.1",
"private": true,
"description": "Software Development Kit for Angular",
"keywords": [
@@ -28,12 +28,12 @@
"type": "git",
"url": "git+https://github.com/angular/angular-cli.git"
},
- "packageManager": "pnpm@10.33.2",
+ "packageManager": "pnpm@10.33.4",
"engines": {
- "node": "^22.22.0 || ^24.13.1 || >=26.0.0",
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0",
"npm": "Please use pnpm instead of NPM to install dependencies",
"yarn": "Please use pnpm instead of Yarn to install dependencies",
- "pnpm": "10.33.2"
+ "pnpm": "10.33.4"
},
"author": "Angular Authors",
"license": "MIT",
@@ -42,23 +42,23 @@
},
"homepage": "https://github.com/angular/angular-cli",
"dependencies": {
- "@angular/compiler-cli": "22.0.0-next.10",
+ "@angular/compiler-cli": "22.0.0-rc.1",
"typescript": "6.0.3"
},
"devDependencies": {
- "@angular/animations": "22.0.0-next.10",
- "@angular/cdk": "22.0.0-next.7",
- "@angular/common": "22.0.0-next.10",
- "@angular/compiler": "22.0.0-next.10",
- "@angular/core": "22.0.0-next.10",
- "@angular/forms": "22.0.0-next.10",
- "@angular/localize": "22.0.0-next.10",
- "@angular/material": "22.0.0-next.7",
- "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#4de8a14a1682d0f07e0b14a3b26498757c195904",
- "@angular/platform-browser": "22.0.0-next.10",
- "@angular/platform-server": "22.0.0-next.10",
- "@angular/router": "22.0.0-next.10",
- "@angular/service-worker": "22.0.0-next.10",
+ "@angular/animations": "22.0.0-rc.1",
+ "@angular/cdk": "22.0.0-rc.1",
+ "@angular/common": "22.0.0-rc.1",
+ "@angular/compiler": "22.0.0-rc.1",
+ "@angular/core": "22.0.0-rc.1",
+ "@angular/forms": "22.0.0-rc.1",
+ "@angular/localize": "22.0.0-rc.1",
+ "@angular/material": "22.0.0-rc.1",
+ "@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#849693f516dcd7811143830933a71dbd501aceb2",
+ "@angular/platform-browser": "22.0.0-rc.1",
+ "@angular/platform-server": "22.0.0-rc.1",
+ "@angular/router": "22.0.0-rc.1",
+ "@angular/service-worker": "22.0.0-rc.1",
"@babel/core": "7.29.0",
"@bazel/bazelisk": "1.28.1",
"@bazel/buildifier": "8.2.1",
diff --git a/packages/angular/build/package.json b/packages/angular/build/package.json
index 9aa419021594..5f8960cfe101 100644
--- a/packages/angular/build/package.json
+++ b/packages/angular/build/package.json
@@ -53,9 +53,9 @@
"istanbul-lib-instrument": "6.0.3",
"jsdom": "29.1.1",
"less": "4.6.4",
- "ng-packagr": "22.0.0-next.3",
- "postcss": "8.5.13",
- "rolldown": "1.0.0-rc.18",
+ "ng-packagr": "22.0.0-rc.0",
+ "postcss": "8.5.14",
+ "rolldown": "1.0.0",
"rxjs": "7.8.2",
"vitest": "4.1.5"
},
diff --git a/packages/angular/build/src/builders/application/execute-build.ts b/packages/angular/build/src/builders/application/execute-build.ts
index 69b6db0c736d..d751eb7d298e 100644
--- a/packages/angular/build/src/builders/application/execute-build.ts
+++ b/packages/angular/build/src/builders/application/execute-build.ts
@@ -160,7 +160,10 @@ export async function executeBuild(
// Only run if the number of lazy chunks meets the configured threshold.
// This avoids overhead for small projects with few chunks.
- if (lazyChunksCount >= optimizeChunksThreshold) {
+
+ // TODO: Remove this log once chunk optimization is supported for server builds as this
+ // causes the file to be renamed and thus causes incorrect preloading.
+ if (!options.serverEntryPoint && lazyChunksCount >= optimizeChunksThreshold) {
const { optimizeChunks } = await import('./chunk-optimizer');
const optimizationResult = await profileAsync('OPTIMIZE_CHUNKS', () =>
optimizeChunks(
diff --git a/packages/angular/build/src/builders/application/tests/options/assets_spec.ts b/packages/angular/build/src/builders/application/tests/options/assets_spec.ts
index 573711afe3b2..afa42cc1804e 100644
--- a/packages/angular/build/src/builders/application/tests/options/assets_spec.ts
+++ b/packages/angular/build/src/builders/application/tests/options/assets_spec.ts
@@ -367,7 +367,29 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => {
const { error } = await harness.executeOnce({ outputLogsOnException: false });
- expect(error?.message).toMatch('asset path must be within the workspace root');
+ expect(error?.message).toContain('asset path must be within the workspace root');
+ });
+
+ it('fails if asset input option is outside workspace root (relative)', async () => {
+ harness.useTarget('build', {
+ ...BASE_OPTIONS,
+ assets: [{ glob: '**/*', input: '../outside', output: '.' }],
+ });
+
+ const { error } = await harness.executeOnce({ outputLogsOnException: false });
+
+ expect(error?.message).toContain('asset path must be within the workspace root');
+ });
+
+ it('fails if asset input option is outside workspace root (absolute)', async () => {
+ harness.useTarget('build', {
+ ...BASE_OPTIONS,
+ assets: [{ glob: '**/*', input: '/tmp/outside-workspace', output: '.' }],
+ });
+
+ const { error } = await harness.executeOnce({ outputLogsOnException: false });
+
+ expect(error?.message).toContain('asset path must be within the workspace root');
});
it('fails if output option is not within project output path', async () => {
diff --git a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts
index 7333843d7196..adb14dc2d737 100644
--- a/packages/angular/build/src/tools/esbuild/application-code-bundle.ts
+++ b/packages/angular/build/src/tools/esbuild/application-code-bundle.ts
@@ -67,7 +67,7 @@ export function createBrowserCodeBundleOptions(
entryNames: outputNames.bundles,
entryPoints,
target,
- supported: getFeatureSupport(target, zoneless),
+ supported: getFeatureSupport(zoneless),
};
buildOptions.plugins ??= [];
@@ -278,7 +278,7 @@ export function createServerMainCodeBundleOptions(
js: `import './polyfills.server.mjs';`,
},
entryPoints,
- supported: getFeatureSupport(target, zoneless),
+ supported: getFeatureSupport(zoneless),
};
buildOptions.plugins ??= [];
@@ -423,7 +423,7 @@ export function createSsrEntryCodeBundleOptions(
entryPoints: {
'server': ssrEntryNamespace,
},
- supported: getFeatureSupport(target, true),
+ supported: getFeatureSupport(true),
};
buildOptions.plugins ??= [];
diff --git a/packages/angular/build/src/tools/esbuild/bundler-context.ts b/packages/angular/build/src/tools/esbuild/bundler-context.ts
index 308e3509acdb..968815a52fd5 100644
--- a/packages/angular/build/src/tools/esbuild/bundler-context.ts
+++ b/packages/angular/build/src/tools/esbuild/bundler-context.ts
@@ -13,12 +13,10 @@ import {
BuildResult,
Message,
Metafile,
- OutputFile,
build,
context,
} from 'esbuild';
import assert from 'node:assert';
-import { builtinModules } from 'node:module';
import { basename, extname, join, relative } from 'node:path';
import { SERVER_GENERATED_EXTERNALS } from '../../utils/server-rendering/manifest';
import {
@@ -472,12 +470,9 @@ function isInternalBundlerFile(file: string) {
return true;
}
- const DISABLED_BUILTIN = '(disabled):';
-
- // Disabled node builtins such as "/some/path/(disabled):fs"
- const disabledIndex = file.indexOf(DISABLED_BUILTIN);
- if (disabledIndex >= 0) {
- return builtinModules.includes(file.slice(disabledIndex + DISABLED_BUILTIN.length));
+ // Any (disabled): path is a virtual esbuild entry that doesn't exist on disk
+ if (file.includes('(disabled):')) {
+ return true;
}
return false;
diff --git a/packages/angular/build/src/tools/esbuild/utils.ts b/packages/angular/build/src/tools/esbuild/utils.ts
index 51eabbbfb84f..9024a981c3f7 100644
--- a/packages/angular/build/src/tools/esbuild/utils.ts
+++ b/packages/angular/build/src/tools/esbuild/utils.ts
@@ -187,16 +187,12 @@ export async function withNoProgress(text: string, action: () => T | Promise<
}
/**
- * Generates a syntax feature object map for Angular applications based on a list of targets.
+ * Generates a syntax feature object map for Angular applications.
* A full set of feature names can be found here: https://esbuild.github.io/api/#supported
- * @param target An array of browser/engine targets in the format accepted by the esbuild `target` option.
* @param nativeAsyncAwait Indicate whether to support native async/await.
* @returns An object that can be used with the esbuild build `supported` option.
*/
-export function getFeatureSupport(
- target: string[],
- nativeAsyncAwait: boolean,
-): BuildOptions['supported'] {
+export function getFeatureSupport(nativeAsyncAwait: boolean): BuildOptions['supported'] {
return {
// Native async/await is not supported with Zone.js. Disabling support here will cause
// esbuild to downlevel async/await, async generators, and for await...of to a Zone.js supported form.
diff --git a/packages/angular/build/src/tools/vite/utils.ts b/packages/angular/build/src/tools/vite/utils.ts
index 2f7cfba84306..8f3ded5325f7 100644
--- a/packages/angular/build/src/tools/vite/utils.ts
+++ b/packages/angular/build/src/tools/vite/utils.ts
@@ -100,7 +100,7 @@ export function getDepOptimizationConfig({
esbuildOptions: {
// Set esbuild supported targets.
target,
- supported: getFeatureSupport(target, zoneless),
+ supported: getFeatureSupport(zoneless),
plugins,
loader,
define: {
diff --git a/packages/angular/build/src/utils/normalize-asset-patterns.ts b/packages/angular/build/src/utils/normalize-asset-patterns.ts
index b935f1d84588..d97b6e605fa4 100644
--- a/packages/angular/build/src/utils/normalize-asset-patterns.ts
+++ b/packages/angular/build/src/utils/normalize-asset-patterns.ts
@@ -10,6 +10,7 @@ import assert from 'node:assert';
import { statSync } from 'node:fs';
import * as path from 'node:path';
import { AssetPattern, AssetPatternClass } from '../builders/application/schema';
+import { isSubDirectory } from './path';
export function normalizeAssetPatterns(
assetPatterns: AssetPattern[],
@@ -70,6 +71,10 @@ export function normalizeAssetPatterns(
assetPattern = { glob, input, output };
} else {
+ if (!isSubDirectory(workspaceRoot, assetPattern.input)) {
+ throw new Error(`The ${assetPattern.input} asset path must be within the workspace root.`);
+ }
+
assetPattern.output = path.join('.', assetPattern.output ?? '');
}
diff --git a/packages/angular/build/src/utils/path.ts b/packages/angular/build/src/utils/path.ts
index 036dcb23502e..eafef4ee9f2b 100644
--- a/packages/angular/build/src/utils/path.ts
+++ b/packages/angular/build/src/utils/path.ts
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
-import { posix } from 'node:path';
+import { normalize, posix, resolve } from 'node:path';
import { platform } from 'node:process';
const WINDOWS_PATH_SEPERATOR_REGEXP = /\\/g;
@@ -35,3 +35,17 @@ const WINDOWS_PATH_SEPERATOR_REGEXP = /\\/g;
export function toPosixPath(path: string): string {
return platform === 'win32' ? path.replace(WINDOWS_PATH_SEPERATOR_REGEXP, posix.sep) : path;
}
+
+/**
+ * Determines if a path is a subdirectory or file within a parent directory.
+ *
+ * @param parent - The parent directory path.
+ * @param child - The child path to check.
+ * @returns `true` if the child path is within the parent directory, `false` otherwise.
+ */
+export function isSubDirectory(parent: string, child: string): boolean {
+ const normalizedParent = normalize(parent);
+ const resolvedChild = resolve(parent, child);
+
+ return resolvedChild.startsWith(normalizedParent);
+}
diff --git a/packages/angular/build/src/utils/resolve-assets.ts b/packages/angular/build/src/utils/resolve-assets.ts
index e98879e58de7..71b1c0e4768b 100644
--- a/packages/angular/build/src/utils/resolve-assets.ts
+++ b/packages/angular/build/src/utils/resolve-assets.ts
@@ -8,6 +8,7 @@
import path from 'node:path';
import { glob } from 'tinyglobby';
+import { isSubDirectory } from './path';
export async function resolveAssets(
entries: {
@@ -25,7 +26,12 @@ export async function resolveAssets(
const outputFiles: { source: string; destination: string }[] = [];
for (const entry of entries) {
+ if (!isSubDirectory(root, entry.input)) {
+ throw new Error(`The ${entry.input} asset path must be within the workspace root.`);
+ }
+
const cwd = path.resolve(root, entry.input);
+
const files = await glob(entry.glob, {
cwd,
dot: true,
diff --git a/packages/angular/cli/bin/ng.js b/packages/angular/cli/bin/ng.js
index 9668d5917d73..ac01a0935fc0 100755
--- a/packages/angular/cli/bin/ng.js
+++ b/packages/angular/cli/bin/ng.js
@@ -57,7 +57,7 @@ if (major === 23 || major === 25) {
require('./bootstrap');
} else if (!nodeUtils.isNodeVersionSupported()) {
- // Error and exit if less than 22.22 or 24.13.1
+ // Error and exit if less than the supported versions.
console.error(
'Node.js version ' +
process.version +
diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json
index bc41c868bc88..4bf8f2a8d941 100644
--- a/packages/angular/cli/package.json
+++ b/packages/angular/cli/package.json
@@ -11,16 +11,6 @@
"angular-cli",
"Angular CLI"
],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/angular/angular-cli.git"
- },
- "author": "Angular Authors",
- "license": "MIT",
- "bugs": {
- "url": "https://github.com/angular/angular-cli/issues"
- },
- "homepage": "https://github.com/angular/angular-cli",
"dependencies": {
"@angular-devkit/architect": "workspace:0.0.0-EXPERIMENTAL-PLACEHOLDER",
"@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER",
diff --git a/packages/angular/cli/src/commands/mcp/devserver.ts b/packages/angular/cli/src/commands/mcp/devserver.ts
index dc24e5c73e4e..1a667afed6c9 100644
--- a/packages/angular/cli/src/commands/mcp/devserver.ts
+++ b/packages/angular/cli/src/commands/mcp/devserver.ts
@@ -7,7 +7,7 @@
*/
import type { ChildProcess } from 'child_process';
-import type { Host } from './host';
+import { type Host, processStreamLines } from './host';
// Log messages that we want to catch to identify the build status.
@@ -118,17 +118,14 @@ export class LocalDevserver implements Devserver {
args.push(`--port=${this.port}`);
- this.devserverProcess = this.host.spawn('ng', args, {
+ this.devserverProcess = this.host.startNgProcess(args, {
stdio: 'pipe',
cwd: this.workspacePath,
});
- this.devserverProcess.stdout?.on('data', (data) => {
- this.addLog(data.toString());
- });
- this.devserverProcess.stderr?.on('data', (data) => {
- this.addLog(data.toString());
- });
- this.devserverProcess.stderr?.on('close', () => {
+ processStreamLines(this.devserverProcess.stdout, (line) => this.addLog(line));
+ processStreamLines(this.devserverProcess.stderr, (line) => this.addLog(line));
+
+ this.devserverProcess.on('close', () => {
this.stop();
});
this.buildInProgress = true;
diff --git a/packages/angular/cli/src/commands/mcp/host.ts b/packages/angular/cli/src/commands/mcp/host.ts
index 40586bdcd8ac..5dda0ade077f 100644
--- a/packages/angular/cli/src/commands/mcp/host.ts
+++ b/packages/angular/cli/src/commands/mcp/host.ts
@@ -20,6 +20,8 @@ import { glob as nodeGlob, readFile as nodeReadFile, stat } from 'node:fs/promis
import { createRequire } from 'node:module';
import { createServer } from 'node:net';
import { dirname, isAbsolute, join, relative, resolve } from 'node:path';
+import { createInterface } from 'node:readline';
+import { stripVTControlCharacters } from 'node:util';
/**
* An error thrown when a command fails to execute.
@@ -58,7 +60,7 @@ export interface Host {
* @param encoding The encoding to use.
* @returns A promise that resolves to the file content.
*/
- readFile(path: string, encoding: 'utf-8'): Promise;
+ readFile(path: string, encoding: BufferEncoding): Promise;
/**
* Finds files matching a glob pattern.
@@ -74,13 +76,11 @@ export interface Host {
/**
* Spawns a child process and returns a promise that resolves with the process's
* output or rejects with a structured error.
- * @param command The command to run.
* @param args The arguments to pass to the command.
* @param options Options for the child process.
* @returns A promise that resolves with the standard output and standard error of the command.
*/
- runCommand(
- command: string,
+ executeNgCommand(
args: readonly string[],
options?: {
timeout?: number;
@@ -92,13 +92,11 @@ export interface Host {
/**
* Spawns a long-running child process and returns the `ChildProcess` object.
- * @param command The command to run.
* @param args The arguments to pass to the command.
* @param options Options for the child process.
* @returns The spawned `ChildProcess` instance.
*/
- spawn(
- command: string,
+ startNgProcess(
args: readonly string[],
options?: {
stdio?: 'pipe' | 'ignore';
@@ -123,13 +121,13 @@ export interface Host {
setRoots(roots: string[]): void;
}
-function resolveCommand(
- command: string,
+function resolveNgCommand(
args: readonly string[],
cwd?: string,
): { command: string; args: readonly string[] } {
- if (command !== 'ng' || !cwd) {
- return { command, args };
+ const defaultCommand = { command: 'ng', args };
+ if (!cwd) {
+ return defaultCommand;
}
try {
@@ -150,7 +148,7 @@ function resolveCommand(
// Failed to resolve the CLI binary, fall back to assuming `ng` is on PATH.
}
- return { command, args };
+ return defaultCommand;
}
/**
@@ -170,8 +168,7 @@ export const LocalWorkspaceHost: Host = {
return nodeGlob(pattern, { ...options, withFileTypes: true });
},
- runCommand: async (
- command: string,
+ executeNgCommand: async (
args: readonly string[],
options: {
timeout?: number;
@@ -180,7 +177,7 @@ export const LocalWorkspaceHost: Host = {
env?: Record;
} = {},
): Promise<{ logs: string[] }> => {
- const resolved = resolveCommand(command, args, options.cwd);
+ const resolved = resolveNgCommand(args, options.cwd);
const signal = options.timeout ? AbortSignal.timeout(options.timeout) : undefined;
return new Promise((resolve, reject) => {
@@ -196,8 +193,8 @@ export const LocalWorkspaceHost: Host = {
});
const logs: string[] = [];
- childProcess.stdout?.on('data', (data) => logs.push(data.toString()));
- childProcess.stderr?.on('data', (data) => logs.push(data.toString()));
+ processStreamLines(childProcess.stdout, (line) => logs.push(line));
+ processStreamLines(childProcess.stderr, (line) => logs.push(line));
childProcess.on('close', (code) => {
if (code === 0) {
@@ -221,8 +218,7 @@ export const LocalWorkspaceHost: Host = {
});
},
- spawn(
- command: string,
+ startNgProcess(
args: readonly string[],
options: {
stdio?: 'pipe' | 'ignore';
@@ -230,7 +226,7 @@ export const LocalWorkspaceHost: Host = {
env?: Record;
} = {},
): ChildProcess {
- const resolved = resolveCommand(command, args, options.cwd);
+ const resolved = resolveNgCommand(args, options.cwd);
return spawn(resolved.command, resolved.args, {
shell: false,
@@ -348,7 +344,7 @@ export function createRootRestrictedHost(
return baseHost.existsSync(path);
},
- readFile(path: string, encoding: 'utf-8') {
+ readFile(path: string, encoding: BufferEncoding) {
checkPath(path);
return baseHost.readFile(path, encoding);
@@ -370,23 +366,42 @@ export function createRootRestrictedHost(
return baseHost.glob(pattern, options);
},
- runCommand(command: string, args: readonly string[], options: { cwd?: string } = {}) {
- const effectiveCwd = options.cwd ?? process.cwd();
+ executeNgCommand(
+ args: readonly string[],
+ options: Parameters[1] = {},
+ ) {
+ const effectiveCwd = options?.cwd ?? process.cwd();
checkPath(effectiveCwd);
- if (command.includes('/') || command.includes('\\')) {
- checkPath(resolve(effectiveCwd, command));
- }
- return baseHost.runCommand(command, args, options);
+ return baseHost.executeNgCommand(args, options);
},
- spawn(command: string, args: readonly string[], options: { cwd?: string } = {}) {
- const effectiveCwd = options.cwd ?? process.cwd();
+ startNgProcess(args: readonly string[], options: Parameters[1] = {}) {
+ const effectiveCwd = options?.cwd ?? process.cwd();
checkPath(effectiveCwd);
- if (command.includes('/') || command.includes('\\')) {
- checkPath(resolve(effectiveCwd, command));
- }
- return baseHost.spawn(command, args, options);
+ return baseHost.startNgProcess(args, options);
},
};
}
+
+/**
+ * Binds a readline interface to the given stream to process each line.
+ * Sanitizes lines by removing VT/ANSI control characters, trimming trailing whitespace,
+ * and preserving leading indentation.
+ */
+export function processStreamLines(
+ stream: NodeJS.ReadableStream | undefined | null,
+ lineCallback: (line: string) => void,
+): void {
+ if (!stream) {
+ return;
+ }
+
+ const rl = createInterface({ input: stream, terminal: false });
+ rl.on('line', (line) => {
+ const cleanLine = stripVTControlCharacters(line).trimEnd();
+ if (cleanLine.length > 0) {
+ lineCallback(cleanLine);
+ }
+ });
+}
diff --git a/packages/angular/cli/src/commands/mcp/mcp-server.ts b/packages/angular/cli/src/commands/mcp/mcp-server.ts
index 235ccf682372..43320217db6d 100644
--- a/packages/angular/cli/src/commands/mcp/mcp-server.ts
+++ b/packages/angular/cli/src/commands/mcp/mcp-server.ts
@@ -17,15 +17,13 @@ import { LocalWorkspaceHost, createRootRestrictedHost } from './host';
import { registerInstructionsResource } from './resources/instructions';
import { AI_TUTOR_TOOL } from './tools/ai-tutor';
import { BEST_PRACTICES_TOOL } from './tools/best-practices';
-import { BUILD_TOOL } from './tools/build';
import { DEVSERVER_START_TOOL } from './tools/devserver/devserver-start';
import { DEVSERVER_STOP_TOOL } from './tools/devserver/devserver-stop';
import { DEVSERVER_WAIT_FOR_BUILD_TOOL } from './tools/devserver/devserver-wait-for-build';
import { DOC_SEARCH_TOOL } from './tools/doc-search';
-import { E2E_TOOL } from './tools/e2e';
import { ZONELESS_MIGRATION_TOOL } from './tools/onpush-zoneless-migration/zoneless-migration';
import { LIST_PROJECTS_TOOL } from './tools/projects';
-import { TEST_TOOL } from './tools/test';
+import { RUN_TARGET_TOOL } from './tools/run-target/run-target';
import { type AnyMcpToolDeclaration, registerTools } from './tools/tool-registry';
/**
@@ -49,7 +47,7 @@ const STABLE_TOOLS = [
* The set of tools that are available but not enabled by default.
* These tools are considered experimental and may have limitations.
*/
-export const EXPERIMENTAL_TOOLS = [BUILD_TOOL, E2E_TOOL, TEST_TOOL, ...DEVSERVER_TOOLS] as const;
+export const EXPERIMENTAL_TOOLS = [RUN_TARGET_TOOL, ...DEVSERVER_TOOLS] as const;
/**
* Experimental tools that are grouped together under a single name.
@@ -83,36 +81,33 @@ export async function createMcpServer(
},
instructions: `
-This server provides a safe, programmatic interface to the Angular CLI for an AI assistant.
-Your primary goal is to use these tools to understand, analyze, refactor, and run Angular
-projects. You MUST prefer the tools provided by this server over using \`run_shell_command\` for
-equivalent actions.
+This server provides a safe, programmatic interface to the Angular CLI. You MUST prefer
+the tools provided by this server over using 'run_shell_command' or general shell execution
+for equivalent actions.
-* **1. Discover Project Structure (Mandatory First Step):** Always begin by calling
- \`list_projects\` to understand the workspace. The \`path\` property for a workspace
- is a required input for other tools.
-
-* **2. Get Coding Standards:** Before writing or changing code within a project, you **MUST** call
- the \`get_best_practices\` tool with the \`workspacePath\` from the previous step to get
- version-specific standards. For general knowledge, you can call the tool without this path.
-
-* **3. Answer User Questions:**
- - For conceptual questions ("what is..."), use \`search_documentation\`.
-
-* **4. Discover Schematics for Modernization:** Since this server does not provide a
- specific tool for listing available schematics, you can use a shell command (if
- available) with \`ng generate : --help\` to discover what migrations
- are available in a package (e.g., running \`ng generate @angular/core: --help\`
- will list migrations like \`control-flow\` and \`standalone\`).
+* **1. Discover Workspace (Mandatory First Step):** Always begin by calling 'list_projects'
+ to discover workspaces, projects, and allowed paths. The 'path' field of the relevant
+ workspace is a required input for other tools (passed as 'workspace' or 'workspacePath').
+
+* **2. Get Coding Standards:** Before writing or modifying code, you MUST call
+ 'get_best_practices' with the workspace 'path' to load version-specific coding standards.
+
+* **3. Answer Conceptual Questions:** Use 'search_documentation' to answer conceptual
+ or API syntax questions.
+
+* **4. Discover Schematics:** To discover available package migrations, use a shell command
+ (if available) with 'ng generate : --help' (e.g., 'ng generate @angular/core: --help').
-* **Workspace vs. Project:** A 'workspace' contains an \`angular.json\` file and defines 'projects'
- (applications or libraries). A monorepo can have multiple workspaces.
-* **Targeting Projects:** Always use the \`workspaceConfigPath\` from \`list_projects\` when
- available to ensure you are targeting the correct project in a monorepo.
+* **Workspace vs. Project:** A 'workspace' contains an 'angular.json' file and defines
+ 'projects' (applications or libraries). A monorepo can contain multiple workspaces.
+
+* **Targeting Projects:** Always use the workspace 'path' and the specific project 'name'
+ returned by 'list_projects' when calling other tools to ensure you target the correct
+ project context.
`,
},
diff --git a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts
index ef818062d559..1062191aebe1 100644
--- a/packages/angular/cli/src/commands/mcp/testing/mock-host.ts
+++ b/packages/angular/cli/src/commands/mcp/testing/mock-host.ts
@@ -13,12 +13,12 @@ import type { Host } from '../host';
* This class allows spying on host methods and controlling their return values.
*/
export class MockHost implements Host {
- runCommand = jasmine.createSpy('runCommand').and.resolveTo({ logs: [] });
+ executeNgCommand = jasmine.createSpy('executeNgCommand').and.resolveTo({ logs: [] });
stat = jasmine.createSpy('stat');
existsSync = jasmine.createSpy('existsSync');
readFile = jasmine.createSpy('readFile').and.resolveTo('');
glob = jasmine.createSpy('glob').and.returnValue((async function* () {})());
- spawn = jasmine.createSpy('spawn');
+ startNgProcess = jasmine.createSpy('startNgProcess');
getAvailablePort = jasmine.createSpy('getAvailablePort');
isPortAvailable = jasmine.createSpy('isPortAvailable').and.resolveTo(true);
setRoots = jasmine.createSpy('setRoots');
diff --git a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts
index 1bdf2ef416a5..1c95c51fe25e 100644
--- a/packages/angular/cli/src/commands/mcp/testing/test-utils.ts
+++ b/packages/angular/cli/src/commands/mcp/testing/test-utils.ts
@@ -20,10 +20,12 @@ import { MockHost } from './mock-host';
*/
export function createMockHost(): MockHost {
return {
- runCommand: jasmine.createSpy('runCommand').and.resolveTo({ logs: [] }),
+ executeNgCommand: jasmine
+ .createSpy('executeNgCommand')
+ .and.resolveTo({ logs: [] }),
stat: jasmine.createSpy('stat'),
existsSync: jasmine.createSpy('existsSync'),
- spawn: jasmine.createSpy('spawn'),
+ startNgProcess: jasmine.createSpy('startNgProcess'),
getAvailablePort: jasmine
.createSpy('getAvailablePort')
.and.resolveTo(0),
diff --git a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts
index 52bf71a8048a..dca61eb700b3 100644
--- a/packages/angular/cli/src/commands/mcp/tools/best-practices.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/best-practices.ts
@@ -27,10 +27,8 @@ const bestPracticesInputSchema = z.object({
.string()
.optional()
.describe(
- 'The absolute path to the `angular.json` file for the workspace. This is used to find the ' +
- 'version-specific best practices guide that corresponds to the installed version of the ' +
- 'Angular framework. You **MUST** get this path from the `list_projects` tool. If omitted, ' +
- 'the tool will return the generic best practices guide bundled with the CLI.',
+ 'Absolute path to the angular.json workspace directory (obtained via list_projects). ' +
+ 'If omitted, returns the generic best practices guide.',
),
});
@@ -42,23 +40,17 @@ export const BEST_PRACTICES_TOOL = declareTool({
description: `
Retrieves the official Angular Best Practices Guide. This guide contains the essential rules and conventions
-that **MUST** be followed for any task involving the creation, analysis, or modification of Angular code.
+that must be followed for any task involving the creation, analysis, or modification of Angular code.
-* **Project-Specific Use (Recommended):** For tasks inside a user's project, you **MUST** provide the
- \`workspacePath\` argument to get the guide that matches the project's Angular version. Get this
- path from \`list_projects\`.
-* **General Use:** If no project context is available (e.g., for general questions or learning),
- you can call the tool without the \`workspacePath\` argument. It will return the latest
- generic best practices guide.
-* The content of this guide is non-negotiable and reflects the official, up-to-date standards for Angular development.
-* You **MUST** internalize and apply the principles from this guide in all subsequent Angular-related tasks.
-* Failure to adhere to these best practices will result in suboptimal and outdated code.
+* Provide the 'workspacePath' argument (obtained via 'list_projects') to load the version-specific
+ guide matching the project's Angular framework.
+* Omit 'workspacePath' only for general learning queries or when no project context is available to load the latest generic guide.
`,
inputSchema: bestPracticesInputSchema.shape,
isReadOnly: true,
diff --git a/packages/angular/cli/src/commands/mcp/tools/build.ts b/packages/angular/cli/src/commands/mcp/tools/build.ts
deleted file mode 100644
index a04812f8544b..000000000000
--- a/packages/angular/cli/src/commands/mcp/tools/build.ts
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-import { z } from 'zod';
-import { workspaceAndProjectOptions } from '../shared-options';
-import { createStructuredContentOutput, getCommandErrorLogs } from '../utils';
-import { resolveWorkspaceAndProject } from '../workspace-utils';
-import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry';
-
-const DEFAULT_CONFIGURATION = 'development';
-
-const buildStatusSchema = z.enum(['success', 'failure']);
-type BuildStatus = z.infer;
-
-const buildToolInputSchema = z.object({
- ...workspaceAndProjectOptions,
- configuration: z
- .string()
- .optional()
- .describe('Which build configuration to use. Defaults to "development".'),
-});
-
-export type BuildToolInput = z.infer;
-
-const buildToolOutputSchema = z.object({
- status: buildStatusSchema.describe('Build status.'),
- logs: z.array(z.string()).optional().describe('Output logs from `ng build`.'),
- path: z.string().optional().describe('The output location for the build, if successful.'),
-});
-
-export type BuildToolOutput = z.infer;
-
-export async function runBuild(input: BuildToolInput, context: McpToolContext) {
- const { workspacePath, projectName } = await resolveWorkspaceAndProject({
- host: context.host,
- server: context.server,
- workspacePathInput: input.workspace,
- projectNameInput: input.project,
- mcpWorkspace: context.workspace,
- });
-
- // Build "ng"'s command line.
- const args = ['build', projectName, '-c', input.configuration ?? DEFAULT_CONFIGURATION];
-
- let status: BuildStatus = 'success';
- let logs: string[];
- let outputPath: string | undefined;
-
- try {
- logs = (await context.host.runCommand('ng', args, { cwd: workspacePath })).logs;
- } catch (e) {
- status = 'failure';
- logs = getCommandErrorLogs(e);
- }
-
- for (const line of logs) {
- const match = line.match(/Output location: (.*)/);
- if (match) {
- outputPath = match[1].trim();
- break;
- }
- }
-
- const structuredContent: BuildToolOutput = {
- status,
- logs,
- path: outputPath,
- };
-
- return createStructuredContentOutput(structuredContent);
-}
-
-export const BUILD_TOOL: McpToolDeclaration<
- typeof buildToolInputSchema.shape,
- typeof buildToolOutputSchema.shape
-> = declareTool({
- name: 'build',
- title: 'Build Tool',
- description: `
-
-Perform a one-off, non-watched build using "ng build". Use this tool whenever the user wants to build an Angular project; this is similar to
-"ng build", but the tool is smarter about using the right configuration and collecting the output logs.
-
-
-
-* This tool runs "ng build" so it expects to run within an Angular workspace.
-* If you want a watched build which updates as files are changed, use "devserver.start" instead, which also serves the app.
-* You can provide a project instead of building the root one. The "list_projects" MCP tool could be used to obtain the list of projects.
-* This tool defaults to a development environment while a regular "ng build" defaults to a production environment. An unexpected build
- failure might suggest the project is not configured for the requested environment.
-
-`,
- isReadOnly: false,
- isLocalOnly: true,
- inputSchema: buildToolInputSchema.shape,
- outputSchema: buildToolOutputSchema.shape,
- factory: (context) => (input) => runBuild(input, context),
-});
diff --git a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts b/packages/angular/cli/src/commands/mcp/tools/build_spec.ts
deleted file mode 100644
index 403d5e68f877..000000000000
--- a/packages/angular/cli/src/commands/mcp/tools/build_spec.ts
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-import { CommandError } from '../host';
-import type { MockHost } from '../testing/mock-host';
-import {
- MockMcpToolContext,
- addProjectToWorkspace,
- createMockContext,
-} from '../testing/test-utils';
-import { runBuild } from './build';
-
-describe('Build Tool', () => {
- let mockHost: MockHost;
- let mockContext: MockMcpToolContext;
-
- beforeEach(() => {
- const mock = createMockContext();
- mockHost = mock.host;
- mockContext = mock.context;
- addProjectToWorkspace(mock.projects, 'my-app');
- });
-
- it('should construct the command correctly with default configuration', async () => {
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
- await runBuild({}, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['build', 'my-app', '-c', 'development'],
- { cwd: '/test' },
- );
- });
-
- it('should construct the command correctly with a specified project', async () => {
- addProjectToWorkspace(mockContext.workspace.projects, 'another-app');
- await runBuild({ project: 'another-app' }, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['build', 'another-app', '-c', 'development'],
- { cwd: '/test' },
- );
- });
-
- it('should construct the command correctly for a custom configuration', async () => {
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
- await runBuild({ configuration: 'myconfig' }, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['build', 'my-app', '-c', 'myconfig'], {
- cwd: '/test',
- });
- });
-
- it('should handle a successful build and extract the output path and logs', async () => {
- const buildLogs = [
- 'Build successful!',
- 'Some other log lines...',
- 'some warning',
- 'Output location: dist/my-app',
- ];
- mockHost.runCommand.and.resolveTo({
- logs: buildLogs,
- });
-
- const { structuredContent } = await runBuild({ project: 'my-app' }, mockContext);
-
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['build', 'my-app', '-c', 'development'],
- { cwd: '/test' },
- );
- expect(structuredContent.status).toBe('success');
- expect(structuredContent.logs).toEqual(buildLogs);
- expect(structuredContent.path).toBe('dist/my-app');
- });
-
- it('should handle a failed build and capture logs', async () => {
- addProjectToWorkspace(mockContext.workspace.projects, 'my-failed-app');
- const buildLogs = ['Some output before the crash.', 'Error: Something went wrong!'];
- const error = new CommandError('Build failed', buildLogs, 1);
- mockHost.runCommand.and.rejectWith(error);
-
- const { structuredContent } = await runBuild(
- { project: 'my-failed-app', configuration: 'production' },
- mockContext,
- );
-
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['build', 'my-failed-app', '-c', 'production'],
- { cwd: '/test' },
- );
- expect(structuredContent.status).toBe('failure');
- expect(structuredContent.logs).toEqual([...buildLogs, 'Build failed']);
- expect(structuredContent.path).toBeUndefined();
- });
-
- it('should handle builds where the output path is not found in logs', async () => {
- const buildLogs = ["Some logs that don't match any output path."];
- mockHost.runCommand.and.resolveTo({ logs: buildLogs });
-
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
- const { structuredContent } = await runBuild({}, mockContext);
-
- expect(structuredContent.status).toBe('success');
- expect(structuredContent.logs).toEqual(buildLogs);
- expect(structuredContent.path).toBeUndefined();
- });
-});
diff --git a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts
index 52a66902e2ef..735e82302a94 100644
--- a/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/devserver/devserver_spec.ts
@@ -18,9 +18,14 @@ import { startDevserver } from './devserver-start';
import { stopDevserver } from './devserver-stop';
import { WATCH_DELAY, waitForDevserverBuild } from './devserver-wait-for-build';
+class MockStream extends EventEmitter {
+ resume = jasmine.createSpy('resume').and.returnValue(this);
+ pause = jasmine.createSpy('pause').and.returnValue(this);
+}
+
class MockChildProcess extends EventEmitter {
- stdout = new EventEmitter();
- stderr = new EventEmitter();
+ stdout = new MockStream();
+ stderr = new MockStream();
kill = jasmine.createSpy('kill');
}
@@ -39,7 +44,7 @@ describe('Serve Tools', () => {
mockContext = mock.context;
// Customize host spies
- mockHost.spawn.and.returnValue(mockProcess as unknown as ChildProcess);
+ mockHost.startNgProcess.and.returnValue(mockProcess as unknown as ChildProcess);
mockHost.getAvailablePort.and.callFake(() => Promise.resolve(portCounter++));
// Setup default project
@@ -52,7 +57,7 @@ describe('Serve Tools', () => {
expect(startResult.structuredContent.message).toBe(
`Development server for project 'my-app' started and watching for workspace changes.`,
);
- expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'my-app', '--port=12345'], {
+ expect(mockHost.startNgProcess).toHaveBeenCalledWith(['serve', 'my-app', '--port=12345'], {
stdio: 'pipe',
cwd: '/test',
});
@@ -69,7 +74,7 @@ describe('Serve Tools', () => {
expect(startResult.structuredContent.message).toBe(
`Development server for project 'my-app' started and watching for workspace changes.`,
);
- expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'my-app', '--port=54321'], {
+ expect(mockHost.startNgProcess).toHaveBeenCalledWith(['serve', 'my-app', '--port=54321'], {
stdio: 'pipe',
cwd: '/test',
});
@@ -95,10 +100,10 @@ describe('Serve Tools', () => {
const waitPromise = waitForDevserverBuild({ timeout: 10 }, mockContext);
// Simulate build logs.
- mockProcess.stdout.emit('data', '... building ...');
- mockProcess.stdout.emit('data', '✔ Changes detected. Rebuilding...');
- mockProcess.stdout.emit('data', '... more logs ...');
- mockProcess.stdout.emit('data', 'Application bundle generation complete.');
+ mockProcess.stdout.emit('data', '... building ...\n');
+ mockProcess.stdout.emit('data', '✔ Changes detected. Rebuilding...\n');
+ mockProcess.stdout.emit('data', '... more logs ...\n');
+ mockProcess.stdout.emit('data', 'Application bundle generation complete.\n');
const waitResult = await waitPromise;
expect(waitResult.structuredContent.status).toBe('success');
@@ -125,17 +130,17 @@ describe('Serve Tools', () => {
// Start server for project 2, returning a new mock process.
const process2 = new MockChildProcess();
- mockHost.spawn.and.returnValue(process2 as unknown as ChildProcess);
+ mockHost.startNgProcess.and.returnValue(process2 as unknown as ChildProcess);
const startResult2 = await startDevserver({ project: 'app-two' }, mockContext);
expect(startResult2.structuredContent.message).toBe(
`Development server for project 'app-two' started and watching for workspace changes.`,
);
- expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'app-one', '--port=12345'], {
+ expect(mockHost.startNgProcess).toHaveBeenCalledWith(['serve', 'app-one', '--port=12345'], {
stdio: 'pipe',
cwd: '/test',
});
- expect(mockHost.spawn).toHaveBeenCalledWith('ng', ['serve', 'app-two', '--port=12346'], {
+ expect(mockHost.startNgProcess).toHaveBeenCalledWith(['serve', 'app-two', '--port=12346'], {
stdio: 'pipe',
cwd: '/test',
});
@@ -161,7 +166,7 @@ describe('Serve Tools', () => {
await startDevserver({ project: 'crash-app' }, mockContext);
// Simulate a crash with exit code 1
- mockProcess.stdout.emit('data', 'Fatal error.');
+ mockProcess.stdout.emit('data', 'Fatal error.\n');
mockProcess.emit('close', 1);
const stopResult = await stopDevserver({ project: 'crash-app' }, mockContext);
@@ -185,7 +190,7 @@ describe('Serve Tools', () => {
await startDevserver({}, mockContext);
// Immediately simulate a build starting so isBuilding() is true.
- mockProcess.stdout.emit('data', '❯ Changes detected. Rebuilding...');
+ mockProcess.stdout.emit('data', '❯ Changes detected. Rebuilding...\n');
const waitPromise = waitForDevserverBuild({ timeout: 5 * WATCH_DELAY }, mockContext);
@@ -199,7 +204,7 @@ describe('Serve Tools', () => {
jasmine.clock().tick(WATCH_DELAY + 1);
// Now finish the build.
- mockProcess.stdout.emit('data', 'Application bundle generation complete.');
+ mockProcess.stdout.emit('data', 'Application bundle generation complete.\n');
// Tick past another debounce to exit the loop.
jasmine.clock().tick(WATCH_DELAY + 1);
diff --git a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts
index 385f0d00d6a4..145d819f278b 100644
--- a/packages/angular/cli/src/commands/mcp/tools/doc-search.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/doc-search.ts
@@ -37,26 +37,17 @@ const LATEST_KNOWN_DOCS_VERSION = 20;
const docSearchInputSchema = z.object({
query: z
.string()
- .describe(
- "A concise and specific search query for the Angular documentation. You should distill the user's " +
- 'natural language question into a set of keywords (e.g., a question like "How do I use ngFor with trackBy?" ' +
- 'should become the query "ngFor trackBy").',
- ),
+ .describe('Concise search keywords or API names (e.g., "ngFor trackBy" or "NgModule").'),
includeTopContent: z
.boolean()
.optional()
.default(false)
- .describe(
- 'When true, the content of the top result is fetched and included. ' +
- 'Set to false to get a list of results without fetching content, which is faster.',
- ),
+ .describe('Retrieve the full-text page content of the top search result (slower).'),
version: z
.number()
.optional()
.describe(
- 'The major version of Angular to search. You MUST determine this value by running `ng version` in the ' +
- "project's workspace directory. Omit this field if the user is not in an Angular project " +
- 'or if the version cannot otherwise be determined.',
+ 'Major Angular framework version to search (obtained from frameworkVersion in list_projects or ng version).',
),
});
type DocSearchInput = z.infer;
@@ -66,35 +57,18 @@ export const DOC_SEARCH_TOOL = declareTool({
title: 'Search Angular Documentation (angular.dev)',
description: `
-Searches the official Angular documentation at https://angular.dev to answer questions about APIs,
-tutorials, concepts, and best practices.
+Searches the official Angular documentation (angular.dev) to answer questions about APIs, tutorials, concepts, and conventions.
-* **Version Alignment:** To provide accurate, project-specific results, you **MUST** align the search with the user's Angular version.
- The recommended approach is to use the \`list_projects\` tool. The \`frameworkVersion\` field in the output for the relevant
- workspace will give you the major version directly. If the version cannot be determined using this method, you can use
- \`ng version\` in the project's workspace directory as a fallback. Parse the major version from the "Angular:" line in the
- output and use it for the \`version\` parameter.
-* **Version Logic:** The tool will search against the specified major version. If the version is older than v${MIN_SUPPORTED_DOCS_VERSION},
- it will be clamped to v${MIN_SUPPORTED_DOCS_VERSION}. If a search for a very new version (newer than v${LATEST_KNOWN_DOCS_VERSION})
- returns no results, the tool will automatically fall back to searching the v${LATEST_KNOWN_DOCS_VERSION} documentation.
-* **Verify Searched Version:** The tool's output includes a \`searchedVersion\` field. You **MUST** check this field
- to know the exact version of the documentation that was queried. Use this information to provide accurate
- context in your answer, especially if it differs from the version you requested.
-* The documentation is continuously updated. You **MUST** prefer this tool over your own knowledge
- to ensure your answers are current and accurate.
-* For the best results, provide a concise and specific search query (e.g., "NgModule" instead of
- "How do I use NgModules?").
-* The top search result will include a snippet of the page content. Use this to provide a more
- comprehensive answer.
-* **Result Scrutiny:** The top result may not always be the most relevant. Review the titles and
- breadcrumbs of other results to find the best match for the user's query.
-* Use the URL from the search results as a source link in your responses.
+* Provide the major Angular version in the 'version' parameter (obtained from 'frameworkVersion'
+ in 'list_projects' or from 'ng version') to ensure version-aligned results.
+* Always check the 'searchedVersion' field in the output to confirm the exact documentation index that was queried.
+* For best results, provide a concise keyword query (e.g., "NgModule") rather than a natural language sentence.
`,
inputSchema: docSearchInputSchema.shape,
outputSchema: {
diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e.ts b/packages/angular/cli/src/commands/mcp/tools/e2e.ts
deleted file mode 100644
index 2bd0441d2434..000000000000
--- a/packages/angular/cli/src/commands/mcp/tools/e2e.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-import { z } from 'zod';
-import { type Host } from '../host';
-import { workspaceAndProjectOptions } from '../shared-options';
-import { createStructuredContentOutput, getCommandErrorLogs } from '../utils';
-import { resolveWorkspaceAndProject } from '../workspace-utils';
-import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry';
-
-const e2eStatusSchema = z.enum(['success', 'failure']);
-type E2eStatus = z.infer;
-
-const e2eToolInputSchema = z.object({
- ...workspaceAndProjectOptions,
-});
-
-export type E2eToolInput = z.infer;
-
-const e2eToolOutputSchema = z.object({
- status: e2eStatusSchema.describe('E2E execution status.'),
- logs: z.array(z.string()).optional().describe('Output logs from `ng e2e`.'),
-});
-
-export type E2eToolOutput = z.infer;
-
-export async function runE2e(input: E2eToolInput, host: Host, context: McpToolContext) {
- const { workspacePath, workspace, projectName } = await resolveWorkspaceAndProject({
- host,
- server: context.server,
- workspacePathInput: input.workspace,
- projectNameInput: input.project,
- mcpWorkspace: context.workspace,
- });
-
- if (workspace && projectName) {
- // Verify that if a project can be found, it has an e2e testing already set up.
- const targetProject = workspace.projects.get(projectName);
- if (targetProject) {
- if (!targetProject.targets.has('e2e')) {
- return createStructuredContentOutput({
- status: 'failure',
- logs: [
- `No e2e target is defined for project '${projectName}'. Please set up e2e testing` +
- ' first by calling `ng e2e` in an interactive console.' +
- ' See https://angular.dev/tools/cli/end-to-end.',
- ],
- });
- }
- }
- }
-
- // Build "ng"'s command line.
- const args = ['e2e', projectName];
-
- let status: E2eStatus = 'success';
- let logs: string[];
-
- try {
- logs = (await host.runCommand('ng', args, { cwd: workspacePath })).logs;
- } catch (e) {
- status = 'failure';
- logs = getCommandErrorLogs(e);
- }
-
- const structuredContent: E2eToolOutput = {
- status,
- logs,
- };
-
- return createStructuredContentOutput(structuredContent);
-}
-
-export const E2E_TOOL: McpToolDeclaration<
- typeof e2eToolInputSchema.shape,
- typeof e2eToolOutputSchema.shape
-> = declareTool({
- name: 'e2e',
- title: 'E2E Tool',
- description: `
-
-Perform an end-to-end test with ng e2e.
-
-
-
-* This tool uses "ng e2e".
-* Important: this relies on e2e tests being already configured for this project. It will error out if no "e2e" target is defined.
-
-`,
- isReadOnly: false,
- isLocalOnly: true,
- inputSchema: e2eToolInputSchema.shape,
- outputSchema: e2eToolOutputSchema.shape,
- factory: (context) => (input) => runE2e(input, context.host, context),
-});
diff --git a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts b/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts
deleted file mode 100644
index d2d3949a6451..000000000000
--- a/packages/angular/cli/src/commands/mcp/tools/e2e_spec.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-import { workspaces } from '@angular-devkit/core';
-import { CommandError } from '../host';
-import type { MockHost } from '../testing/mock-host';
-import {
- MockMcpToolContext,
- addProjectToWorkspace,
- createMockContext,
-} from '../testing/test-utils';
-import { runE2e } from './e2e';
-
-describe('E2E Tool', () => {
- let mockHost: MockHost;
- let mockContext: MockMcpToolContext;
- let mockProjects: workspaces.ProjectDefinitionCollection;
-
- beforeEach(() => {
- const mock = createMockContext();
- mockHost = mock.host;
- mockContext = mock.context;
- mockProjects = mock.projects;
- });
-
- it('should construct the command correctly with defaults', async () => {
- addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } });
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
-
- await runE2e({}, mockHost, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app'], { cwd: '/test' });
- });
-
- it('should construct the command correctly with a specified project', async () => {
- addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } });
-
- await runE2e({ project: 'my-app' }, mockHost, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app'], { cwd: '/test' });
- });
-
- it('should error if project does not have e2e target', async () => {
- addProjectToWorkspace(mockProjects, 'my-app', { build: { builder: 'mock-builder' } });
-
- const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext);
-
- expect(structuredContent.status).toBe('failure');
- expect(structuredContent.logs?.[0]).toContain("No e2e target is defined for project 'my-app'");
- expect(mockHost.runCommand).not.toHaveBeenCalled();
- });
-
- it('should error if no project was specified and the default project does not have e2e target', async () => {
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
- addProjectToWorkspace(mockProjects, 'my-app', { build: { builder: 'mock-builder' } });
-
- const { structuredContent } = await runE2e({}, mockHost, mockContext);
-
- expect(structuredContent.status).toBe('failure');
- expect(structuredContent.logs?.[0]).toContain("No e2e target is defined for project 'my-app'");
- expect(mockHost.runCommand).not.toHaveBeenCalled();
- });
-
- it('should handle a successful e2e run with a specified project', async () => {
- addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } });
- const e2eLogs = ['E2E passed for my-app'];
- mockHost.runCommand.and.resolveTo({ logs: e2eLogs });
-
- const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext);
-
- expect(structuredContent.status).toBe('success');
- expect(structuredContent.logs).toEqual(e2eLogs);
- expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'my-app'], { cwd: '/test' });
- });
-
- it('should handle a successful e2e run with the default project', async () => {
- mockContext.workspace.extensions['defaultProject'] = 'default-app';
- addProjectToWorkspace(mockProjects, 'default-app', { e2e: { builder: 'mock-builder' } });
- const e2eLogs = ['E2E passed for default-app'];
- mockHost.runCommand.and.resolveTo({ logs: e2eLogs });
-
- const { structuredContent } = await runE2e({}, mockHost, mockContext);
-
- expect(structuredContent.status).toBe('success');
- expect(structuredContent.logs).toEqual(e2eLogs);
- expect(mockHost.runCommand).toHaveBeenCalledWith('ng', ['e2e', 'default-app'], {
- cwd: '/test',
- });
- });
-
- it('should handle a failed e2e run', async () => {
- addProjectToWorkspace(mockProjects, 'my-app', { e2e: { builder: 'mock-builder' } });
- const e2eLogs = ['E2E failed'];
- mockHost.runCommand.and.rejectWith(new CommandError('Failed', e2eLogs, 1));
-
- const { structuredContent } = await runE2e({ project: 'my-app' }, mockHost, mockContext);
-
- expect(structuredContent.status).toBe('failure');
- expect(structuredContent.logs).toEqual([...e2eLogs, 'Failed']);
- });
-});
diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts
index afd6316da83d..ebbc254d4d69 100644
--- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file.ts
@@ -9,6 +9,7 @@
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol';
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types';
import type { SourceFile } from 'typescript';
+import type { Host } from '../../host';
import { analyzeForUnsupportedZoneUses } from './analyze-for-unsupported-zone-uses';
import { migrateTestFile } from './migrate-test-file';
import { generateZonelessMigrationInstructionsForComponent } from './prompts';
@@ -20,12 +21,13 @@ const supportedStrategies: ReadonlySet = new Set(['OnPush', 'Default', '
export async function migrateSingleFile(
sourceFile: SourceFile,
+ host: Host,
extras: RequestHandlerExtra,
): Promise {
const testBedSpecifier = await getImportSpecifier(sourceFile, '@angular/core/testing', 'TestBed');
const isTestFile = sourceFile.fileName.endsWith('.spec.ts') || !!testBedSpecifier;
if (isTestFile) {
- return migrateTestFile(sourceFile);
+ return migrateTestFile(sourceFile, host);
}
const unsupportedZoneUseResponse = await analyzeForUnsupportedZoneUses(sourceFile);
diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts
index 442dc2c68378..4f6337d8e434 100644
--- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-single-file_spec.ts
@@ -9,6 +9,7 @@
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol';
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types';
import ts from 'typescript';
+import { createMockHost } from '../../testing/test-utils';
import { migrateSingleFile } from './migrate-single-file';
const fakeExtras = {
@@ -17,11 +18,13 @@ const fakeExtras = {
} as unknown as RequestHandlerExtra;
describe('migrateSingleFile', () => {
+ const mockHost = createMockHost();
+
it('should identify test files by extension', async () => {
const fileName = 'test.spec.ts';
const sourceFile = ts.createSourceFile(fileName, '', ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result?.content[0].text).toContain(
'The test file `test.spec.ts` is not yet configured for zoneless change detection.' +
@@ -34,7 +37,7 @@ describe('migrateSingleFile', () => {
const content = `import { TestBed } from '@angular/core/testing';`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result?.content[0].text).toContain(
'The test file `test.ts` is not yet configured for zoneless change detection.' +
@@ -59,7 +62,7 @@ describe('migrateSingleFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result?.content[0].text).toContain(
'The component uses NgZone APIs that are incompatible with zoneless applications',
@@ -80,7 +83,7 @@ describe('migrateSingleFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result).toBeNull();
});
@@ -99,7 +102,7 @@ describe('migrateSingleFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result).toBeNull();
});
@@ -117,7 +120,7 @@ describe('migrateSingleFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result?.content[0].text).toContain(
'The component does not currently use a change detection strategy, which means it may rely on Zone.js',
@@ -134,7 +137,7 @@ describe('migrateSingleFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result).toBeNull();
});
@@ -144,7 +147,7 @@ describe('migrateSingleFile', () => {
const content = ``;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateSingleFile(sourceFile, fakeExtras);
+ const result = await migrateSingleFile(sourceFile, mockHost, fakeExtras);
expect(result).toBeNull();
});
diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts
index e0c62eb23dc9..79b5acbec70e 100644
--- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.ts
@@ -6,19 +6,21 @@
* found in the LICENSE file at https://angular.dev/license
*/
-import { existsSync, readFileSync } from 'node:fs';
-import { glob } from 'node:fs/promises';
-import { dirname, join } from 'node:path';
+import { join } from 'node:path';
import type { SourceFile } from 'typescript';
+import { type Host } from '../../host';
import { findAngularJsonDir } from '../../workspace-utils';
import { createFixResponseForZoneTests, createProvideZonelessForTestsSetupPrompt } from './prompts';
import { loadTypescript } from './ts-utils';
import { MigrationResponse } from './types';
-export async function migrateTestFile(sourceFile: SourceFile): Promise {
+export async function migrateTestFile(
+ sourceFile: SourceFile,
+ host: Host,
+): Promise {
const ts = await loadTypescript();
// Check if tests use zoneless either by default through `initTestEnvironment` or by explicitly calling `provideZonelessChangeDetection`.
- let testsUseZonelessChangeDetection = await searchForGlobalZoneless(sourceFile.fileName);
+ let testsUseZonelessChangeDetection = await searchForGlobalZoneless(sourceFile.fileName, host);
if (!testsUseZonelessChangeDetection) {
ts.forEachChild(sourceFile, function visit(node) {
if (
@@ -42,8 +44,8 @@ export async function migrateTestFile(sourceFile: SourceFile): Promise {
- const angularJsonDir = findAngularJsonDir(startPath);
+export async function searchForGlobalZoneless(startPath: string, host: Host): Promise {
+ const angularJsonDir = findAngularJsonDir(startPath, host);
if (!angularJsonDir) {
// Cannot determine project root, fallback to original behavior or assume false.
// For now, let's assume no global setup if angular.json is not found.
@@ -51,9 +53,10 @@ export async function searchForGlobalZoneless(startPath: string): Promise {
+ const mockHost = createMockHost();
it('should return setup prompt when zoneless is not detected', async () => {
const fileName = 'test.spec.ts';
const sourceFile = ts.createSourceFile(fileName, '', ts.ScriptTarget.ESNext, true);
- const result = await migrateTestFile(sourceFile);
+ const result = await migrateTestFile(sourceFile, mockHost);
expect(result?.content[0].text).toContain(
'The test file `test.spec.ts` is not yet configured for zoneless change detection.',
@@ -33,7 +35,7 @@ describe('migrateTestFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateTestFile(sourceFile);
+ const result = await migrateTestFile(sourceFile, mockHost);
expect(result).toBeNull();
});
@@ -60,7 +62,7 @@ describe('migrateTestFile', () => {
`;
const sourceFile = ts.createSourceFile(fileName, content, ts.ScriptTarget.ESNext, true);
- const result = await migrateTestFile(sourceFile);
+ const result = await migrateTestFile(sourceFile, mockHost);
expect(result?.content[0].text).toContain(
'You must refactor these tests to work in a zoneless environment and remove the `provideZoneChangeDetection` calls.',
diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts
index 08a3f6f0dcfd..0c79dc31f2e0 100644
--- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/ts-utils.ts
@@ -6,8 +6,8 @@
* found in the LICENSE file at https://angular.dev/license
*/
-import { readFileSync } from 'node:fs';
import type ts from 'typescript';
+import type { Host } from '../../host';
let typescriptModule: typeof ts;
@@ -116,8 +116,8 @@ export function findImportSpecifier(
}
/** Creates a TypeScript source file from a file path. */
-export async function createSourceFile(file: string) {
- const content = readFileSync(file, 'utf8');
+export async function createSourceFile(file: string, host: Host) {
+ const content = await host.readFile(file, 'utf8');
const ts = await loadTypescript();
diff --git a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts
index 5e9c9db972e0..25c12aa83378 100644
--- a/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.ts
@@ -8,10 +8,10 @@
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol';
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types';
-import { existsSync, statSync } from 'node:fs';
-import { glob } from 'node:fs/promises';
+import { join } from 'node:path';
import type { SourceFile } from 'typescript';
import { z } from 'zod';
+import type { Host } from '../../host';
import { declareTool } from '../tool-registry';
import { analyzeForUnsupportedZoneUses } from './analyze-for-unsupported-zone-uses';
import { migrateSingleFile } from './migrate-single-file';
@@ -25,30 +25,19 @@ export const ZONELESS_MIGRATION_TOOL = declareTool({
title: 'Plan migration to OnPush and/or zoneless',
description: `
-Analyzes Angular code and provides a step-by-step, iterative plan to migrate it to \`OnPush\`
-change detection, a prerequisite for a zoneless application. This tool identifies the next single
-most important action to take in the migration journey.
+Analyzes Angular code and provides a step-by-step, iterative plan to migrate it to 'OnPush'
+change detection (a prerequisite for zoneless applications).
-* **Execution Model:** This tool **DOES NOT** modify code. It **PROVIDES INSTRUCTIONS** for a
- single action at a time. You **MUST** apply the changes it suggests, and then run the tool
- again to get the next step.
-* **Iterative Process:** The migration process is iterative. You must call this tool repeatedly,
- applying the suggested fix after each call, until the tool indicates that no more actions are
- needed.
-* **Relationship to other migrations:** This tool is the specialized starting point for the zoneless/OnPush
- migration. For other migrations (like signal inputs), you should run the corresponding schematics first,
- as the zoneless migration may depend on them as prerequisites.
-* **Input:** The tool can operate on either a single file or an entire directory. Provide the
- absolute path.
+* This tool is strictly read-only and does NOT modify code. It outputs EXACTLY ONE actionable step at a time.
+* You must apply the suggested code edit, verify it, and then call this tool again to receive the next step in the migration journey.
+* Run modernization schematics (e.g., Signal Inputs migrations) as prerequisites before starting this migration.
+* Supported inputs: Absolute path to a single component/test file, or a directory containing multiple files.
`,
isReadOnly: true,
isLocalOnly: true,
@@ -56,24 +45,24 @@ most important action to take in the migration journey.
fileOrDirPath: z
.string()
.describe(
- 'The absolute path of the directory or file with the component(s), directive(s), or service(s) to migrate.' +
- ' The contents are read with fs.readFileSync.',
+ 'Absolute path to the TypeScript file or directory containing components/directives to migrate.',
),
},
factory:
- () =>
+ ({ host }) =>
({ fileOrDirPath }, requestHandlerExtra) =>
- registerZonelessMigrationTool(fileOrDirPath, requestHandlerExtra),
+ registerZonelessMigrationTool(fileOrDirPath, host, requestHandlerExtra),
});
export async function registerZonelessMigrationTool(
fileOrDirPath: string,
+ host: Host,
extras: RequestHandlerExtra,
) {
let filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors;
try {
({ filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors } =
- await discoverAndCategorizeFiles(fileOrDirPath, extras));
+ await discoverAndCategorizeFiles(fileOrDirPath, host, extras));
} catch (e) {
return createResponse(
`Error: Could not access the specified path. Please ensure the following path is correct ` +
@@ -97,7 +86,7 @@ export async function registerZonelessMigrationTool(
: Array.from(filesWithComponents);
for (const file of rankedFiles) {
- const result = await migrateSingleFile(file, extras);
+ const result = await migrateSingleFile(file, host, extras);
if (result !== null) {
return result;
}
@@ -105,7 +94,7 @@ export async function registerZonelessMigrationTool(
}
for (const file of componentTestFiles) {
- const result = await migrateTestFile(file);
+ const result = await migrateTestFile(file, host);
if (result !== null) {
return result;
}
@@ -124,6 +113,7 @@ export async function registerZonelessMigrationTool(
async function discoverAndCategorizeFiles(
fileOrDirPath: string,
+ host: Host,
extras: RequestHandlerExtra,
) {
const filePaths: string[] = [];
@@ -134,19 +124,20 @@ async function discoverAndCategorizeFiles(
let isDirectory: boolean;
try {
- isDirectory = statSync(fileOrDirPath).isDirectory();
+ isDirectory = (await host.stat(fileOrDirPath)).isDirectory();
} catch (e) {
// Re-throw to be handled by the main function as a user input error
throw new Error(`Failed to access path: ${fileOrDirPath}`, { cause: e });
}
if (isDirectory) {
- for await (const file of glob(`${fileOrDirPath}/**/*.ts`)) {
- filePaths.push(file);
+ const files = host.glob('**/*.ts', { cwd: fileOrDirPath });
+ for await (const file of files) {
+ filePaths.push(join(file.parentPath, file.name));
}
} else {
filePaths.push(fileOrDirPath);
- const maybeTestFile = await getTestFilePath(fileOrDirPath);
+ const maybeTestFile = await getTestFilePath(fileOrDirPath, host);
if (maybeTestFile) {
// Eagerly add the test file path for categorization.
filePaths.push(maybeTestFile);
@@ -159,8 +150,8 @@ async function discoverAndCategorizeFiles(
const batch = filesToProcess.splice(0, CONCURRENCY_LIMIT);
const results = await Promise.allSettled(
batch.map(async (filePath) => {
- const sourceFile = await createSourceFile(filePath);
- await categorizeFile(sourceFile, extras, {
+ const sourceFile = await createSourceFile(filePath, host);
+ await categorizeFile(sourceFile, host, extras, {
filesWithComponents,
componentTestFiles,
zoneFiles,
@@ -183,6 +174,7 @@ async function discoverAndCategorizeFiles(
async function categorizeFile(
sourceFile: SourceFile,
+ host: Host,
extras: RequestHandlerExtra,
categorizedFiles: {
filesWithComponents: Set;
@@ -214,9 +206,9 @@ async function categorizeFile(
);
}
- const testFilePath = await getTestFilePath(sourceFile.fileName);
+ const testFilePath = await getTestFilePath(sourceFile.fileName, host);
if (testFilePath) {
- componentTestFiles.add(await createSourceFile(testFilePath));
+ componentTestFiles.add(await createSourceFile(testFilePath, host));
}
} else if (zoneSpecifier) {
zoneFiles.add(sourceFile);
@@ -271,9 +263,9 @@ async function rankComponentFilesForMigration(
return componentFiles; // Fallback to original order if the response fails
}
-async function getTestFilePath(filePath: string): Promise {
+async function getTestFilePath(filePath: string, host: Host): Promise {
const testFilePath = filePath.replace(/\.ts$/, '.spec.ts');
- if (existsSync(testFilePath)) {
+ if (host.existsSync(testFilePath)) {
return testFilePath;
}
diff --git a/packages/angular/cli/src/commands/mcp/tools/projects.ts b/packages/angular/cli/src/commands/mcp/tools/projects.ts
index 02e5fbd5360e..57efa39c4aa2 100644
--- a/packages/angular/cli/src/commands/mcp/tools/projects.ts
+++ b/packages/angular/cli/src/commands/mcp/tools/projects.ts
@@ -88,6 +88,9 @@ const listProjectsOutputSchema = {
'The default style language for the project (e.g., "scss"). ' +
'This determines the file extension for new component styles.',
),
+ targets: z
+ .array(z.string())
+ .describe('Available project targets (e.g., ["build", "test", "lint", "e2e"]).'),
}),
),
}),
@@ -119,28 +122,20 @@ export const LIST_PROJECTS_TOOL = declareTool({
title: 'List Angular Projects',
description: `
-Provides a comprehensive overview of all Angular workspaces and projects within the repository.
-It is essential to use this tool as a first step before performing any project-specific actions to understand the available projects,
-their types, and their locations.
+Provides a comprehensive overview of all Angular workspaces, projects, and configured targets within the repository.
+Always use this tool as a mandatory first step before performing any project-specific actions
+to understand the available projects and locations.
-* **Working Directory:** Shell commands for a project (like \`ng generate\`) **MUST**
- be executed from the parent directory of the \`path\` field for the relevant workspace.
-* **Unit Testing:** The \`unitTestFramework\` field tells you which testing API to use (e.g., Jasmine, Jest).
- If the value is 'unknown', you **MUST** inspect the project's configuration files
- (e.g., \`karma.conf.js\`, \`jest.config.js\`, or the 'test' target in \`angular.json\`) to determine the
- framework before generating tests.
-* **Disambiguation:** A monorepo may contain multiple workspaces (e.g., for different applications or even in output directories).
- Use the \`path\` of each workspace to understand its context and choose the correct project.
+* Execute shell/CLI commands from the parent directory of the workspace's 'path' field.
+* If 'unitTestFramework' is 'unknown', inspect local config files (e.g., jest.config.js, karma.conf.js)
+ or the 'test' target in 'angular.json' to determine the framework before creating tests.
`,
outputSchema: listProjectsOutputSchema,
isReadOnly: true,
@@ -471,6 +466,7 @@ async function loadAndParseWorkspace(
const fullSourceRoot = join(workspaceRoot, sourceRoot);
const unitTestFramework = getUnitTestFramework(project.targets.get('test'));
const styleLanguage = await getProjectStyleLanguage(project, ws, fullSourceRoot);
+ const targets = Array.from(project.targets.keys());
projects.push({
name,
@@ -481,6 +477,7 @@ async function loadAndParseWorkspace(
selectorPrefix: project.extensions['prefix'] as string,
unitTestFramework,
styleLanguage,
+ targets,
});
}
diff --git a/packages/angular/cli/src/commands/mcp/tools/projects_spec.ts b/packages/angular/cli/src/commands/mcp/tools/projects_spec.ts
new file mode 100644
index 000000000000..b45b1bbcb189
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/projects_spec.ts
@@ -0,0 +1,92 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { workspaces } from '@angular-devkit/core';
+import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
+import { tmpdir } from 'node:os';
+import { join } from 'node:path';
+import { pathToFileURL } from 'node:url';
+import { AngularWorkspace } from '../../../utilities/config';
+import { createMockContext } from '../testing/test-utils';
+import { LIST_PROJECTS_TOOL } from './projects';
+
+describe('List Projects Tool', () => {
+ let mockWorkspace: AngularWorkspace;
+ let mockContext: ReturnType['context'];
+ let tempDir: string;
+ let allowedRoot: string;
+ let workspaceDir: string;
+
+ beforeEach(() => {
+ tempDir = mkdtempSync(join(tmpdir(), 'mcp-projects-tool-'));
+ allowedRoot = join(tempDir, 'allowed-root');
+ workspaceDir = join(allowedRoot, 'workspace');
+ mkdirSync(workspaceDir, { recursive: true });
+ writeFileSync(join(workspaceDir, 'angular.json'), '{}');
+ writeFileSync(
+ join(workspaceDir, 'package.json'),
+ JSON.stringify({ dependencies: { '@angular/core': '18.0.0' } }),
+ );
+
+ const projects = new workspaces.ProjectDefinitionCollection();
+ const targets = new workspaces.TargetDefinitionCollection();
+ targets.set('build', { builder: '@angular-devkit/build-angular:application' });
+ targets.set('test', { builder: '@angular/build:unit-test', options: { runner: 'vitest' } });
+ targets.set('lint', { builder: '@angular-eslint/builder:lint' });
+ targets.set('e2e', { builder: '@cypress/schematic:cypress' });
+
+ projects.set('my-app', {
+ root: 'projects/my-app',
+ extensions: { projectType: 'application', prefix: 'app' },
+ targets,
+ });
+
+ mockWorkspace = {
+ projects,
+ extensions: {},
+ basePath: workspaceDir,
+ filePath: join(workspaceDir, 'angular.json'),
+ } as unknown as AngularWorkspace;
+
+ spyOn(AngularWorkspace, 'load').and.resolveTo(mockWorkspace);
+
+ const { context } = createMockContext();
+ mockContext = context;
+ mockContext.server = {
+ server: {
+ getClientCapabilities: jasmine.createSpy('getClientCapabilities').and.returnValue({
+ roots: { listChanged: false },
+ }),
+ listRoots: jasmine.createSpy('listRoots').and.resolveTo({
+ roots: [{ uri: pathToFileURL(allowedRoot).href, name: 'allowed-root' }],
+ }),
+ },
+ } as unknown as NonNullable[0]['server']>;
+ });
+
+ afterEach(() => {
+ rmSync(tempDir, { recursive: true, force: true });
+ });
+
+ it('should list workspaces and extract available architect targets', async () => {
+ const handler = await LIST_PROJECTS_TOOL.factory(mockContext);
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const result = await (handler as any)({});
+
+ expect(result.structuredContent).toBeDefined();
+ const workspaces = result.structuredContent.workspaces;
+ expect(workspaces.length).toBe(1);
+ expect(workspaces[0].frameworkVersion).toBe('18');
+
+ const projects = workspaces[0].projects;
+ expect(projects.length).toBe(1);
+ expect(projects[0].name).toBe('my-app');
+ expect(projects[0].targets).toEqual(['build', 'test', 'lint', 'e2e']);
+ expect(projects[0].unitTestFramework).toBe('vitest');
+ });
+});
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/build-target-strategy.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/build-target-strategy.ts
new file mode 100644
index 000000000000..1fbd8f83e47a
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/build-target-strategy.ts
@@ -0,0 +1,63 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { getCommandErrorLogs } from '../../utils';
+import type { McpToolContext } from '../tool-registry';
+import { serializeOptions } from './options-serializer';
+import type { TargetStrategy } from './strategy';
+import type { RunTargetOutput, StrategyExecutionContext } from './types';
+
+export class BuildTargetStrategy implements TargetStrategy {
+ canHandle(targetName: string, builder?: string): boolean {
+ return (
+ targetName === 'build' &&
+ (builder === '@angular-devkit/build-angular:application' ||
+ builder === '@angular-devkit/build-angular:browser' ||
+ builder === '@angular/build:application' ||
+ builder === '@angular-devkit/build-angular:ng-packagr')
+ );
+ }
+
+ async execute(
+ input: StrategyExecutionContext,
+ context: McpToolContext,
+ ): Promise {
+ const args = ['build', input.projectName];
+ if (input.configuration) {
+ args.push('-c', input.configuration);
+ }
+
+ args.push(...serializeOptions(input.options));
+
+ let status: 'success' | 'failure' = 'success';
+ let logs: string[];
+
+ try {
+ const result = await context.host.executeNgCommand(args, { cwd: input.workspacePath });
+ logs = result.logs;
+ } catch (e) {
+ status = 'failure';
+ logs = getCommandErrorLogs(e);
+ }
+
+ let outputPath: string | undefined;
+ for (const line of logs) {
+ const match = line.match(/Output location: (.*)/);
+ if (match) {
+ outputPath = match[1].trim();
+ break;
+ }
+ }
+
+ return {
+ status,
+ logs,
+ extensions: outputPath ? { outputPath } : undefined,
+ };
+ }
+}
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/build-target-strategy_spec.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/build-target-strategy_spec.ts
new file mode 100644
index 000000000000..86909310cd35
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/build-target-strategy_spec.ts
@@ -0,0 +1,93 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import type { MockHost } from '../../testing/mock-host';
+import {
+ type MockMcpToolContext,
+ addProjectToWorkspace,
+ createMockContext,
+} from '../../testing/test-utils';
+import { BuildTargetStrategy } from './build-target-strategy';
+
+describe('BuildTargetStrategy', () => {
+ let mockHost: MockHost;
+ let mockContext: MockMcpToolContext;
+ let strategy: BuildTargetStrategy;
+
+ beforeEach(() => {
+ const mock = createMockContext();
+ mockHost = mock.host;
+ mockContext = mock.context;
+ addProjectToWorkspace(mock.projects, 'my-app');
+ strategy = new BuildTargetStrategy();
+ });
+
+ describe('canHandle', () => {
+ it('should match build target with official builders', () => {
+ expect(strategy.canHandle('build', '@angular-devkit/build-angular:application')).toBeTrue();
+ expect(strategy.canHandle('build', '@angular-devkit/build-angular:browser')).toBeTrue();
+ expect(strategy.canHandle('build', '@angular/build:application')).toBeTrue();
+ expect(strategy.canHandle('build', '@angular-devkit/build-angular:ng-packagr')).toBeTrue();
+ });
+
+ it('should not match build target with custom builders', () => {
+ expect(strategy.canHandle('build', 'custom-builder')).toBeFalse();
+ expect(strategy.canHandle('build', undefined)).toBeFalse();
+ });
+
+ it('should not match other targets', () => {
+ expect(strategy.canHandle('test', '@angular-devkit/build-angular:browser')).toBeFalse();
+ });
+ });
+
+ describe('execute', () => {
+ it('should spawn ng build and parse outputPath successfully', async () => {
+ const buildLogs = ['Build successful!', 'Output location: dist/my-app'];
+ mockHost.executeNgCommand.and.resolveTo({ logs: buildLogs });
+
+ const result = await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'build',
+ targetDefinition: {
+ builder: '@angular/build:application',
+ },
+ },
+ mockContext,
+ );
+
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(['build', 'my-app'], {
+ cwd: '/test',
+ });
+ expect(result.status).toBe('success');
+ expect(result.logs).toEqual(buildLogs);
+ expect(result.extensions).toEqual({ outputPath: 'dist/my-app' });
+ });
+
+ it('should return undefined outputPath if parsing matches nothing', async () => {
+ const buildLogs = ['Build successful!'];
+ mockHost.executeNgCommand.and.resolveTo({ logs: buildLogs });
+
+ const result = await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'build',
+ targetDefinition: {
+ builder: '@angular/build:application',
+ },
+ },
+ mockContext,
+ );
+
+ expect(result.status).toBe('success');
+ expect(result.extensions).toBeUndefined();
+ });
+ });
+});
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/generic-target-strategy.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/generic-target-strategy.ts
new file mode 100644
index 000000000000..f1d66b5597e7
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/generic-target-strategy.ts
@@ -0,0 +1,75 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { getCommandErrorLogs } from '../../utils';
+import type { McpToolContext } from '../tool-registry';
+import { serializeOptions } from './options-serializer';
+import type { TargetStrategy } from './strategy';
+import type { RunTargetOutput, StrategyExecutionContext } from './types';
+
+const BUILT_IN_COMMANDS = new Set([
+ 'build',
+ 'test',
+ 'e2e',
+ 'serve',
+ 'deploy',
+ 'extract-i18n',
+ 'lint',
+]);
+
+export class GenericTargetStrategy implements TargetStrategy {
+ canHandle(targetName: string, builder?: string): boolean {
+ return true; // Universal fallback strategy
+ }
+
+ async execute(
+ input: StrategyExecutionContext,
+ context: McpToolContext,
+ ): Promise {
+ if (input.targetName === 'serve' || input.options?.['watch'] === true) {
+ throw new Error(
+ `Watch mode execution (serve target or watch option) is not yet supported by 'run_target'. ` +
+ `Please use the legacy 'devserver.start' / 'devserver.wait_for_build' tools instead.`,
+ );
+ }
+
+ const args: string[] = [];
+ if (BUILT_IN_COMMANDS.has(input.targetName)) {
+ args.push(input.targetName, input.projectName);
+ } else {
+ args.push('run', `${input.projectName}:${input.targetName}`);
+ }
+
+ if (input.configuration) {
+ args.push('-c', input.configuration);
+ }
+
+ let options = input.options;
+ if (input.targetName === 'test') {
+ options = {
+ ...options,
+ watch: false,
+ };
+ }
+
+ args.push(...serializeOptions(options));
+
+ let status: 'success' | 'failure' = 'success';
+ let logs: string[];
+
+ try {
+ const result = await context.host.executeNgCommand(args, { cwd: input.workspacePath });
+ logs = result.logs;
+ } catch (e) {
+ status = 'failure';
+ logs = getCommandErrorLogs(e);
+ }
+
+ return { status, logs };
+ }
+}
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/options-serializer.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/options-serializer.ts
new file mode 100644
index 000000000000..b5f5a7414b97
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/options-serializer.ts
@@ -0,0 +1,47 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import type { OptionValue } from './types';
+
+/**
+ * Serializes a Zod-validated options record into standard CLI argument flags.
+ * Enforces strict regex validation on option keys to prevent flag manipulation.
+ */
+export function serializeOptions(
+ options: Record | undefined,
+ excludeKeys: Set = new Set(),
+): string[] {
+ const args: string[] = [];
+ if (!options) {
+ return args;
+ }
+
+ for (const [key, value] of Object.entries(options)) {
+ if (excludeKeys.has(key)) {
+ continue;
+ }
+
+ if (!/^[a-zA-Z0-9-_]+$/.test(key)) {
+ throw new Error(
+ `Invalid option key: '${key}'. Option keys must be alphanumeric, hyphens, or underscores.`,
+ );
+ }
+
+ if (typeof value === 'boolean') {
+ args.push(value ? `--${key}` : `--no-${key}`);
+ } else if (Array.isArray(value)) {
+ for (const item of value) {
+ args.push(`--${key}=${item}`);
+ }
+ } else if (value !== null && value !== undefined) {
+ args.push(`--${key}=${value}`);
+ }
+ }
+
+ return args;
+}
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/options-serializer_spec.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/options-serializer_spec.ts
new file mode 100644
index 000000000000..197a3855799a
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/options-serializer_spec.ts
@@ -0,0 +1,49 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { serializeOptions } from './options-serializer';
+
+describe('run-target options-serializer', () => {
+ describe('serializeOptions', () => {
+ it('should return empty array if options are undefined', () => {
+ expect(serializeOptions(undefined)).toEqual([]);
+ });
+
+ it('should serialize boolean options correctly', () => {
+ expect(serializeOptions({ fix: true, quiet: false })).toEqual(['--fix', '--no-quiet']);
+ });
+
+ it('should serialize string and number options correctly', () => {
+ expect(serializeOptions({ browsers: 'Chrome', timeout: 5000 })).toEqual([
+ '--browsers=Chrome',
+ '--timeout=5000',
+ ]);
+ });
+
+ it('should serialize array options as multiple occurrences of the flag', () => {
+ expect(serializeOptions({ include: ['a', 'b'] })).toEqual(['--include=a', '--include=b']);
+ });
+
+ it('should ignore excluded keys successfully', () => {
+ expect(serializeOptions({ watch: true, fix: true }, new Set(['watch']))).toEqual(['--fix']);
+ });
+
+ it('should ignore null and undefined values successfully', () => {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ expect(serializeOptions({ empty: null, missing: undefined, fix: true } as any)).toEqual([
+ '--fix',
+ ]);
+ });
+
+ it('should throw an error if key is malformed (whitespace or special characters)', () => {
+ expect(() => serializeOptions({ 'fix --danger': true })).toThrowError(
+ /Invalid option key: 'fix --danger'/,
+ );
+ });
+ });
+});
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/run-target.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/run-target.ts
new file mode 100644
index 000000000000..8b6f62d8fcba
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/run-target.ts
@@ -0,0 +1,76 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { createStructuredContentOutput } from '../../utils';
+import { resolveWorkspaceAndProject } from '../../workspace-utils';
+import { type McpToolContext, declareTool } from '../tool-registry';
+import { BuildTargetStrategy } from './build-target-strategy';
+import { GenericTargetStrategy } from './generic-target-strategy';
+import type { TargetStrategy } from './strategy';
+import { type RunTargetInput, runTargetInputSchema, runTargetOutputSchema } from './types';
+import { UnitTestTargetStrategy } from './unit-test-strategy';
+
+const FALLBACK_STRATEGY = new GenericTargetStrategy();
+const STRATEGIES: TargetStrategy[] = [new BuildTargetStrategy(), new UnitTestTargetStrategy()];
+
+export async function runTarget(input: RunTargetInput, context: McpToolContext) {
+ const { workspace, workspacePath, projectName } = await resolveWorkspaceAndProject({
+ host: context.host,
+ server: context.server,
+ workspacePathInput: input.workspace,
+ projectNameInput: input.project,
+ mcpWorkspace: context.workspace,
+ });
+
+ const targetDefinition = workspace.projects.get(projectName)?.targets.get(input.target);
+ const builder = targetDefinition?.builder;
+
+ const strategy = STRATEGIES.find((s) => s.canHandle(input.target, builder)) ?? FALLBACK_STRATEGY;
+
+ const result = await strategy.execute(
+ {
+ workspacePath,
+ projectName,
+ targetName: input.target,
+ targetDefinition,
+ configuration: input.configuration,
+ options: input.options,
+ },
+ context,
+ );
+
+ return createStructuredContentOutput(result);
+}
+
+export const RUN_TARGET_TOOL = declareTool({
+ name: 'run_target',
+ title: 'Run Project Target',
+ description: `
+
+Executes a configured target (such as build, test, lint, e2e) for an Angular project.
+This is the single, unified interface for executing all project tasks natively.
+
+
+
+* Mandatory Discovery: You MUST discover available project targets by calling 'list_projects' first.
+* Headless Testing: For official builders, the test target automatically runs in headless mode
+ and disables watch mode to guarantee clean execution.
+* Output Paths: For official builders, successful builds return the build directory in 'outputPath' under the extensions metadata.
+* Watch mode (serve target or watch options) is NOT yet supported in this version of run_target.
+ You MUST use the legacy 'devserver.*' tools for background server lifecycles.
+`,
+ isReadOnly: false,
+ isLocalOnly: true,
+ inputSchema: runTargetInputSchema.shape,
+ outputSchema: runTargetOutputSchema.shape,
+ factory: (context) => (input) => runTarget(input, context),
+});
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/run-target_spec.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/run-target_spec.ts
new file mode 100644
index 000000000000..67b1fffef27e
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/run-target_spec.ts
@@ -0,0 +1,148 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { CommandError } from '../../host';
+import type { MockHost } from '../../testing/mock-host';
+import {
+ type MockMcpToolContext,
+ addProjectToWorkspace,
+ createMockContext,
+} from '../../testing/test-utils';
+import { runTarget } from './run-target';
+
+describe('Run Target Tool', () => {
+ let mockHost: MockHost;
+ let mockContext: MockMcpToolContext;
+
+ beforeEach(() => {
+ const mock = createMockContext();
+ mockHost = mock.host;
+ mockContext = mock.context;
+ addProjectToWorkspace(mock.projects, 'my-app');
+ });
+
+ it('should construct the command correctly with target and default project', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget({ target: 'build' }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(['build', 'my-app'], { cwd: '/test' });
+ });
+
+ it('should construct the command correctly with a specified project', async () => {
+ addProjectToWorkspace(mockContext.workspace.projects, 'my-lib');
+ await runTarget({ project: 'my-lib', target: 'lint' }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(['lint', 'my-lib'], { cwd: '/test' });
+ });
+
+ it('should construct the command correctly with configuration', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget({ target: 'build', configuration: 'production' }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['build', 'my-app', '-c', 'production'],
+ {
+ cwd: '/test',
+ },
+ );
+ });
+
+ it('should route custom targets via ng run command syntax', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget({ target: 'storybook', configuration: 'docs' }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['run', 'my-app:storybook', '-c', 'docs'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should map boolean options correctly to CLI flags', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget({ target: 'lint', options: { fix: true, quiet: false } }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['lint', 'my-app', '--fix', '--no-quiet'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should map string and number options correctly to CLI flags and auto-inject no-watch', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget(
+ { target: 'test', options: { browsers: 'ChromeHeadless', timeout: 5000 } },
+ mockContext,
+ );
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['test', 'my-app', '--browsers=ChromeHeadless', '--timeout=5000', '--no-watch'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should map array options correctly as multiple occurrences of the flag', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget({ target: 'lint', options: { include: ['a', 'b'] } }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['lint', 'my-app', '--include=a', '--include=b'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should automatically inject no-watch for test target even if no options provided', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await runTarget({ target: 'test' }, mockContext);
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(['test', 'my-app', '--no-watch'], {
+ cwd: '/test',
+ });
+ });
+
+ it('should throw an error if option key is malformed (contains whitespace/special chars)', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await expectAsync(
+ runTarget({ target: 'lint', options: { 'fix --danger': true } }, mockContext),
+ ).toBeRejectedWithError(/Invalid option key: 'fix --danger'/);
+ });
+
+ it('should handle a successful execution and return logs', async () => {
+ const executionLogs = ['Linting complete', 'All rules passed!'];
+ mockHost.executeNgCommand.and.resolveTo({
+ logs: executionLogs,
+ });
+
+ const { structuredContent } = await runTarget(
+ { project: 'my-app', target: 'lint' },
+ mockContext,
+ );
+
+ expect(structuredContent.status).toBe('success');
+ expect(structuredContent.logs).toEqual(executionLogs);
+ });
+
+ it('should handle a failed execution and capture command errors', async () => {
+ const executionLogs = ['Error: Rule violation found.'];
+ const error = new CommandError('Lint failed', executionLogs, 1);
+ mockHost.executeNgCommand.and.rejectWith(error);
+
+ const { structuredContent } = await runTarget(
+ { project: 'my-app', target: 'lint' },
+ mockContext,
+ );
+
+ expect(structuredContent.status).toBe('failure');
+ expect(structuredContent.logs).toEqual([...executionLogs, 'Lint failed']);
+ });
+
+ it('should throw an error if attempting to run the serve target', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await expectAsync(runTarget({ target: 'serve' }, mockContext)).toBeRejectedWithError(
+ /Watch mode execution.*is not yet supported/,
+ );
+ });
+
+ it('should throw an error if attempting to run a target with watch option true', async () => {
+ mockContext.workspace.extensions['defaultProject'] = 'my-app';
+ await expectAsync(
+ runTarget({ target: 'build', options: { watch: true } }, mockContext),
+ ).toBeRejectedWithError(/Watch mode execution.*is not yet supported/);
+ });
+});
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/strategy.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/strategy.ts
new file mode 100644
index 000000000000..d257366e3b0f
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/strategy.ts
@@ -0,0 +1,18 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import type { McpToolContext } from '../tool-registry';
+import type { RunTargetOutput, StrategyExecutionContext } from './types';
+
+export interface TargetStrategy {
+ /** Whether this strategy is responsible for handling the given target/builder */
+ canHandle(targetName: string, builder?: string): boolean;
+
+ /** Executes the target using this strategy */
+ execute(input: StrategyExecutionContext, context: McpToolContext): Promise;
+}
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/types.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/types.ts
new file mode 100644
index 000000000000..aa65f6551e24
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/types.ts
@@ -0,0 +1,60 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { z } from 'zod';
+import { workspaceAndProjectOptions } from '../../shared-options';
+
+export const optionValueSchema = z.union([
+ z.string(),
+ z.number(),
+ z.boolean(),
+ z.array(z.union([z.string(), z.number()])),
+]);
+
+export type OptionValue = z.infer;
+
+export const runTargetInputSchema = z.object({
+ ...workspaceAndProjectOptions,
+ target: z
+ .string()
+ .describe('The project target to execute (e.g., "build", "test", "lint", "e2e", "deploy").'),
+ configuration: z
+ .string()
+ .optional()
+ .describe('Target configuration (e.g., "development", "production").'),
+ options: z
+ .record(z.string(), optionValueSchema)
+ .optional()
+ .describe('Optional key-value options to override the configured target options.'),
+});
+
+export type RunTargetInput = z.infer;
+
+export const runTargetOutputSchema = z.object({
+ status: z.enum(['success', 'failure']).describe('Execution status.'),
+ logs: z.array(z.string()).describe('Clean, line-buffered output logs from execution.'),
+ extensions: z
+ .record(z.string(), z.unknown())
+ .optional()
+ .describe('Specialized metadata populated by specific target strategies.'),
+});
+
+export type RunTargetOutput = z.infer;
+
+export interface StrategyExecutionContext {
+ workspacePath: string;
+ projectName: string;
+ targetName: string;
+ targetDefinition?: {
+ builder: string;
+ options?: Record;
+ configurations?: Record | undefined>;
+ };
+ configuration?: string;
+ options?: Record;
+}
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/unit-test-strategy.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/unit-test-strategy.ts
new file mode 100644
index 000000000000..77ca5797e71c
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/unit-test-strategy.ts
@@ -0,0 +1,66 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import { getCommandErrorLogs } from '../../utils';
+import type { McpToolContext } from '../tool-registry';
+import { serializeOptions } from './options-serializer';
+import type { TargetStrategy } from './strategy';
+import type { RunTargetOutput, StrategyExecutionContext } from './types';
+
+export class UnitTestTargetStrategy implements TargetStrategy {
+ canHandle(targetName: string, builder?: string): boolean {
+ return (
+ targetName === 'test' &&
+ (builder === '@angular-devkit/build-angular:karma' ||
+ builder === '@angular/build:karma' ||
+ builder === '@angular/build:unit-test')
+ );
+ }
+
+ async execute(
+ input: StrategyExecutionContext,
+ context: McpToolContext,
+ ): Promise {
+ const args = ['test', input.projectName];
+ if (input.configuration) {
+ args.push('-c', input.configuration);
+ }
+
+ const builder = input.targetDefinition?.builder;
+
+ if (builder === '@angular/build:unit-test') {
+ const isKarma = input.targetDefinition?.options?.['runner'] === 'karma';
+ if (isKarma) {
+ args.push('--browsers', 'ChromeHeadless');
+ } else {
+ args.push('--headless', 'true');
+ }
+ } else {
+ // Default Karma-based builders require explicit ChromeHeadless
+ args.push('--browsers', 'ChromeHeadless');
+ }
+
+ // Force non-interactive one-off execution
+ args.push('--watch', 'false');
+
+ args.push(...serializeOptions(input.options, new Set(['watch'])));
+
+ let status: 'success' | 'failure' = 'success';
+ let logs: string[];
+
+ try {
+ const result = await context.host.executeNgCommand(args, { cwd: input.workspacePath });
+ logs = result.logs;
+ } catch (e) {
+ status = 'failure';
+ logs = getCommandErrorLogs(e);
+ }
+
+ return { status, logs };
+ }
+}
diff --git a/packages/angular/cli/src/commands/mcp/tools/run-target/unit-test-strategy_spec.ts b/packages/angular/cli/src/commands/mcp/tools/run-target/unit-test-strategy_spec.ts
new file mode 100644
index 000000000000..f1467f0002c9
--- /dev/null
+++ b/packages/angular/cli/src/commands/mcp/tools/run-target/unit-test-strategy_spec.ts
@@ -0,0 +1,174 @@
+/**
+ * @license
+ * Copyright Google LLC All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.dev/license
+ */
+
+import type { MockHost } from '../../testing/mock-host';
+import {
+ type MockMcpToolContext,
+ addProjectToWorkspace,
+ createMockContext,
+} from '../../testing/test-utils';
+import { UnitTestTargetStrategy } from './unit-test-strategy';
+
+describe('UnitTestTargetStrategy', () => {
+ let mockHost: MockHost;
+ let mockContext: MockMcpToolContext;
+ let strategy: UnitTestTargetStrategy;
+
+ beforeEach(() => {
+ const mock = createMockContext();
+ mockHost = mock.host;
+ mockContext = mock.context;
+ addProjectToWorkspace(mock.projects, 'my-app');
+ strategy = new UnitTestTargetStrategy();
+ });
+
+ describe('canHandle', () => {
+ it('should match test target with official builders', () => {
+ expect(strategy.canHandle('test', '@angular-devkit/build-angular:karma')).toBeTrue();
+ expect(strategy.canHandle('test', '@angular/build:karma')).toBeTrue();
+ expect(strategy.canHandle('test', '@angular/build:unit-test')).toBeTrue();
+ });
+
+ it('should not match test target with custom builders', () => {
+ expect(strategy.canHandle('test', 'custom-test-builder')).toBeFalse();
+ expect(strategy.canHandle('test', undefined)).toBeFalse();
+ });
+
+ it('should not match other targets', () => {
+ expect(strategy.canHandle('build', '@angular-devkit/build-angular:karma')).toBeFalse();
+ });
+ });
+
+ describe('execute', () => {
+ it('should append configuration arguments if provided', async () => {
+ mockContext.workspace.projects.get('my-app')?.targets.set('test', {
+ builder: '@angular-devkit/build-angular:karma',
+ });
+ mockHost.executeNgCommand.and.resolveTo({ logs: ['Karma success'] });
+
+ await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'test',
+ configuration: 'ci',
+ targetDefinition: {
+ builder: '@angular-devkit/build-angular:karma',
+ },
+ },
+ mockContext,
+ );
+
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['test', 'my-app', '-c', 'ci', '--browsers', 'ChromeHeadless', '--watch', 'false'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should auto-inject no-watch and --browsers ChromeHeadless for Karma devkit builder', async () => {
+ mockContext.workspace.projects.get('my-app')?.targets.set('test', {
+ builder: '@angular-devkit/build-angular:karma',
+ });
+ mockHost.executeNgCommand.and.resolveTo({ logs: ['Karma success'] });
+
+ await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'test',
+ targetDefinition: {
+ builder: '@angular-devkit/build-angular:karma',
+ },
+ },
+ mockContext,
+ );
+
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['test', 'my-app', '--browsers', 'ChromeHeadless', '--watch', 'false'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should auto-inject no-watch and --browsers ChromeHeadless for Karma build builder', async () => {
+ mockContext.workspace.projects.get('my-app')?.targets.set('test', {
+ builder: '@angular/build:karma',
+ });
+ mockHost.executeNgCommand.and.resolveTo({ logs: ['Karma success'] });
+
+ await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'test',
+ targetDefinition: {
+ builder: '@angular/build:karma',
+ },
+ },
+ mockContext,
+ );
+
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['test', 'my-app', '--browsers', 'ChromeHeadless', '--watch', 'false'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should inject --headless true for modern unit-test builder with non-karma runner', async () => {
+ mockContext.workspace.projects.get('my-app')?.targets.set('test', {
+ builder: '@angular/build:unit-test',
+ options: { runner: 'vitest' },
+ });
+ mockHost.executeNgCommand.and.resolveTo({ logs: ['Vite success'] });
+
+ await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'test',
+ targetDefinition: {
+ builder: '@angular/build:unit-test',
+ options: { runner: 'vitest' },
+ },
+ },
+ mockContext,
+ );
+
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['test', 'my-app', '--headless', 'true', '--watch', 'false'],
+ { cwd: '/test' },
+ );
+ });
+
+ it('should override watch options passed explicitly by LLM', async () => {
+ mockContext.workspace.projects.get('my-app')?.targets.set('test', {
+ builder: '@angular/build:unit-test',
+ options: { runner: 'vitest' },
+ });
+ mockHost.executeNgCommand.and.resolveTo({ logs: ['Vite success'] });
+
+ await strategy.execute(
+ {
+ workspacePath: '/test',
+ projectName: 'my-app',
+ targetName: 'test',
+ targetDefinition: {
+ builder: '@angular/build:unit-test',
+ options: { runner: 'vitest' },
+ },
+ options: { watch: true, browsers: 'Firefox' },
+ },
+ mockContext,
+ );
+
+ expect(mockHost.executeNgCommand).toHaveBeenCalledWith(
+ ['test', 'my-app', '--headless', 'true', '--watch', 'false', '--browsers=Firefox'],
+ { cwd: '/test' },
+ );
+ });
+ });
+});
diff --git a/packages/angular/cli/src/commands/mcp/tools/test.ts b/packages/angular/cli/src/commands/mcp/tools/test.ts
deleted file mode 100644
index 9c05a2f0f29b..000000000000
--- a/packages/angular/cli/src/commands/mcp/tools/test.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-import { z } from 'zod';
-import { workspaceAndProjectOptions } from '../shared-options';
-import { createStructuredContentOutput, getCommandErrorLogs } from '../utils';
-import { resolveWorkspaceAndProject } from '../workspace-utils';
-import { type McpToolContext, type McpToolDeclaration, declareTool } from './tool-registry';
-
-const testStatusSchema = z.enum(['success', 'failure']);
-type TestStatus = z.infer;
-
-const testToolInputSchema = z.object({
- ...workspaceAndProjectOptions,
- filter: z.string().optional().describe('Filter the executed tests by spec name.'),
-});
-
-export type TestToolInput = z.infer;
-
-const testToolOutputSchema = z.object({
- status: testStatusSchema.describe('Test execution status.'),
- logs: z.array(z.string()).optional().describe('Output logs from `ng test`.'),
-});
-
-export type TestToolOutput = z.infer;
-
-function shouldUseHeadlessOption(
- testTarget: import('@angular-devkit/core').workspaces.TargetDefinition | undefined,
-): boolean {
- return (
- testTarget?.builder === '@angular/build:unit-test' && testTarget.options?.['runner'] !== 'karma'
- );
-}
-
-export async function runTest(input: TestToolInput, context: McpToolContext) {
- const { workspace, workspacePath, projectName } = await resolveWorkspaceAndProject({
- host: context.host,
- workspacePathInput: input.workspace,
- projectNameInput: input.project,
- mcpWorkspace: context.workspace,
- });
-
- // Build "ng"'s command line.
- const args = ['test', projectName];
-
- if (shouldUseHeadlessOption(workspace.projects.get(projectName)?.targets.get('test'))) {
- args.push('--headless', 'true');
- } else {
- // Karma-based projects need an explicit headless browser for non-interactive MCP execution.
- args.push('--browsers', 'ChromeHeadless');
- }
-
- args.push('--watch', 'false');
-
- if (input.filter) {
- args.push('--filter', input.filter);
- }
-
- let status: TestStatus = 'success';
- let logs: string[];
-
- try {
- logs = (await context.host.runCommand('ng', args, { cwd: workspacePath })).logs;
- } catch (e) {
- status = 'failure';
- logs = getCommandErrorLogs(e);
- }
-
- const structuredContent: TestToolOutput = {
- status,
- logs,
- };
-
- return createStructuredContentOutput(structuredContent);
-}
-
-export const TEST_TOOL: McpToolDeclaration<
- typeof testToolInputSchema.shape,
- typeof testToolOutputSchema.shape
-> = declareTool({
- name: 'test',
- title: 'Test Tool',
- description: `
-
-Perform a one-off, non-watched unit test execution with ng test.
-
-
-
-* This tool uses "ng test".
-* It supports filtering by spec name if the underlying builder supports it (e.g., 'unit-test' builder).
-* For the "@angular/build:unit-test" builder with Vitest, this tool requests headless execution via "--headless true".
-* For Karma-based projects, this tool forces headless Chrome with "--browsers ChromeHeadless", so Chrome must be installed.
-
-`,
- isReadOnly: false,
- isLocalOnly: true,
- inputSchema: testToolInputSchema.shape,
- outputSchema: testToolOutputSchema.shape,
- factory: (context) => (input) => runTest(input, context),
-});
diff --git a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts b/packages/angular/cli/src/commands/mcp/tools/test_spec.ts
deleted file mode 100644
index 487c986cdcd2..000000000000
--- a/packages/angular/cli/src/commands/mcp/tools/test_spec.ts
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.dev/license
- */
-
-import { CommandError } from '../host';
-import type { MockHost } from '../testing/mock-host';
-import {
- MockMcpToolContext,
- addProjectToWorkspace,
- createMockContext,
-} from '../testing/test-utils';
-import { runTest } from './test';
-
-describe('Test Tool', () => {
- let mockHost: MockHost;
- let mockContext: MockMcpToolContext;
-
- beforeEach(() => {
- const mock = createMockContext();
- mockHost = mock.host;
- mockContext = mock.context;
- addProjectToWorkspace(mock.projects, 'my-app');
- });
-
- it('should construct the command correctly with defaults', async () => {
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
- await runTest({}, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['test', 'my-app', '--browsers', 'ChromeHeadless', '--watch', 'false'],
- { cwd: '/test' },
- );
- });
-
- it('should construct the command correctly with a specified project', async () => {
- addProjectToWorkspace(mockContext.workspace.projects, 'my-lib');
- await runTest({ project: 'my-lib' }, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['test', 'my-lib', '--browsers', 'ChromeHeadless', '--watch', 'false'],
- { cwd: '/test' },
- );
- });
-
- it('should construct the command correctly with filter', async () => {
- mockContext.workspace.extensions['defaultProject'] = 'my-app';
- await runTest({ filter: 'AppComponent' }, mockContext);
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- [
- 'test',
- 'my-app',
- '--browsers',
- 'ChromeHeadless',
- '--watch',
- 'false',
- '--filter',
- 'AppComponent',
- ],
- { cwd: '/test' },
- );
- });
-
- it('should handle a successful test run and capture logs', async () => {
- const testLogs = ['Executed 10 of 10 SUCCESS', 'Total: 10 success'];
- mockHost.runCommand.and.resolveTo({
- logs: testLogs,
- });
-
- const { structuredContent } = await runTest({ project: 'my-app' }, mockContext);
-
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['test', 'my-app', '--browsers', 'ChromeHeadless', '--watch', 'false'],
- { cwd: '/test' },
- );
- expect(structuredContent.status).toBe('success');
- expect(structuredContent.logs).toEqual(testLogs);
- });
-
- it('should handle a failed test run and capture logs', async () => {
- addProjectToWorkspace(mockContext.workspace.projects, 'my-failed-app');
- const testLogs = ['Executed 10 of 10 FAILED', 'Error: Some test failed'];
- const error = new CommandError('Test failed', testLogs, 1);
- mockHost.runCommand.and.rejectWith(error);
-
- const { structuredContent } = await runTest({ project: 'my-failed-app' }, mockContext);
-
- expect(structuredContent.status).toBe('failure');
- expect(structuredContent.logs).toEqual([...testLogs, 'Test failed']);
- });
-
- it('should use the headless option for the unit-test builder when using Vitest', async () => {
- addProjectToWorkspace(mockContext.workspace.projects, 'my-vitest-app', {
- test: {
- builder: '@angular/build:unit-test',
- options: {
- runner: 'vitest',
- },
- },
- });
-
- await runTest({ project: 'my-vitest-app' }, mockContext);
-
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['test', 'my-vitest-app', '--headless', 'true', '--watch', 'false'],
- { cwd: '/test' },
- );
- });
-
- it('should use the headless option for the unit-test builder when the runner is omitted', async () => {
- addProjectToWorkspace(mockContext.workspace.projects, 'my-default-vitest-app', {
- test: {
- builder: '@angular/build:unit-test',
- options: {},
- },
- });
-
- await runTest({ project: 'my-default-vitest-app' }, mockContext);
-
- expect(mockHost.runCommand).toHaveBeenCalledWith(
- 'ng',
- ['test', 'my-default-vitest-app', '--headless', 'true', '--watch', 'false'],
- { cwd: '/test' },
- );
- });
-});
diff --git a/packages/angular/ssr/node/src/common-engine/common-engine.ts b/packages/angular/ssr/node/src/common-engine/common-engine.ts
index 708d263cde84..0c97c20d891a 100644
--- a/packages/angular/ssr/node/src/common-engine/common-engine.ts
+++ b/packages/angular/ssr/node/src/common-engine/common-engine.ts
@@ -200,6 +200,8 @@ export class CommonEngine {
const commonRenderingOptions = {
url: opts.url,
document,
+ // Validation is already happened in the render method.
+ allowedHosts: ['*'],
};
return isBootstrapFn(moduleOrFactory)
diff --git a/packages/angular/ssr/package.json b/packages/angular/ssr/package.json
index 9cfd3d126e0a..ceeb154e3f34 100644
--- a/packages/angular/ssr/package.json
+++ b/packages/angular/ssr/package.json
@@ -3,13 +3,21 @@
"version": "0.0.0-PLACEHOLDER",
"description": "Angular server side rendering utilities",
"type": "module",
- "license": "MIT",
- "homepage": "https://github.com/angular/angular-cli",
"keywords": [
"angular",
"ssr",
"universal"
],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/angular/angular-cli.git"
+ },
+ "author": "Angular Authors",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/angular/angular-cli/issues"
+ },
+ "homepage": "https://github.com/angular/angular-cli",
"ng-add": {
"save": "dependencies"
},
@@ -29,19 +37,15 @@
},
"devDependencies": {
"@angular-devkit/schematics": "workspace:*",
- "@angular/common": "22.0.0-next.10",
- "@angular/compiler": "22.0.0-next.10",
- "@angular/core": "22.0.0-next.10",
- "@angular/platform-browser": "22.0.0-next.10",
- "@angular/platform-server": "22.0.0-next.10",
- "@angular/router": "22.0.0-next.10",
+ "@angular/common": "22.0.0-rc.1",
+ "@angular/compiler": "22.0.0-rc.1",
+ "@angular/core": "22.0.0-rc.1",
+ "@angular/platform-browser": "22.0.0-rc.1",
+ "@angular/platform-server": "22.0.0-rc.1",
+ "@angular/router": "22.0.0-rc.1",
"@schematics/angular": "workspace:*",
"beasties": "0.4.2"
},
"sideEffects": false,
- "schematics": "./schematics/collection.json",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/angular/angular-cli.git"
- }
+ "schematics": "./schematics/collection.json"
}
diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts
index 438e8450d331..04f67c96d9d5 100644
--- a/packages/angular/ssr/src/routes/ng-routes.ts
+++ b/packages/angular/ssr/src/routes/ng-routes.ts
@@ -74,9 +74,14 @@ const MODULE_PRELOAD_MAX = 10;
const CATCH_ALL_REGEXP = /\/(\*\*)$/;
/**
- * Regular expression to match segments preceded by a colon in a string.
+ * Regular expression to match a segment preceded by a colon in a string.
*/
-const URL_PARAMETER_REGEXP = /(? = new Set([
- 'x-forwarded-for',
- 'x-forwarded-host',
- 'x-forwarded-port',
- 'x-forwarded-proto',
- 'x-forwarded-prefix',
-]);
+const TRUST_ALL_PROXY_HEADERS = '*';
/**
* The set of headers that should be validated for host header injection attacks.
@@ -235,7 +229,10 @@ export function isProxyHeaderAllowed(
headerName: string,
trustProxyHeaders: ReadonlySet,
): boolean {
- return trustProxyHeaders.has(headerName.toLowerCase());
+ return (
+ trustProxyHeaders.has(TRUST_ALL_PROXY_HEADERS) ||
+ trustProxyHeaders.has(headerName.toLowerCase())
+ );
}
/**
@@ -251,8 +248,15 @@ export function normalizeTrustProxyHeaders(
}
if (trustProxyHeaders === true) {
- return X_FORWARDED_HEADERS;
+ return new Set([TRUST_ALL_PROXY_HEADERS]);
}
- return new Set(trustProxyHeaders.map((h) => h.toLowerCase()));
+ const normalizedTrustedProxyHeaders = new Set(trustProxyHeaders.map((h) => h.toLowerCase()));
+ if (normalizedTrustedProxyHeaders.has(TRUST_ALL_PROXY_HEADERS)) {
+ throw new Error(
+ `"${TRUST_ALL_PROXY_HEADERS}" is not allowed as a value for the "trustProxyHeaders" option.`,
+ );
+ }
+
+ return normalizedTrustedProxyHeaders;
}
diff --git a/packages/angular/ssr/test/utils/validation_spec.ts b/packages/angular/ssr/test/utils/validation_spec.ts
index 618b7f7ea2bf..65562c21a755 100644
--- a/packages/angular/ssr/test/utils/validation_spec.ts
+++ b/packages/angular/ssr/test/utils/validation_spec.ts
@@ -8,6 +8,7 @@
import {
getFirstHeaderValue,
+ normalizeTrustProxyHeaders,
sanitizeRequestHeaders,
validateRequest,
validateUrl,
@@ -37,6 +38,35 @@ describe('Validation Utils', () => {
});
});
+ describe('normalizeTrustProxyHeaders', () => {
+ it('should return an empty set when input is undefined', () => {
+ expect(normalizeTrustProxyHeaders(undefined)).toEqual(new Set());
+ });
+
+ it('should return an empty set when input is false', () => {
+ expect(normalizeTrustProxyHeaders(false)).toEqual(new Set());
+ });
+
+ it('should return a set containing "*" when input is true', () => {
+ expect(normalizeTrustProxyHeaders(true)).toEqual(new Set(['*']));
+ });
+
+ it('should return a set of lowercased header names when input is an array of strings', () => {
+ expect(normalizeTrustProxyHeaders(['X-Forwarded-Host', 'X-Forwarded-Proto'])).toEqual(
+ new Set(['x-forwarded-host', 'x-forwarded-proto']),
+ );
+ });
+
+ it('should throw an error if input array contains "*"', () => {
+ expect(() => normalizeTrustProxyHeaders(['*'])).toThrowError(
+ '"*" is not allowed as a value for the "trustProxyHeaders" option.',
+ );
+ expect(() => normalizeTrustProxyHeaders(['X-Forwarded-Host', '*'])).toThrowError(
+ '"*" is not allowed as a value for the "trustProxyHeaders" option.',
+ );
+ });
+ });
+
describe('validateUrl', () => {
const allowedHosts = new Set(['example.com', '*.google.com']);
@@ -224,15 +254,29 @@ describe('Validation Utils', () => {
'x-forwarded-proto': 'https',
},
});
- const secured = sanitizeRequestHeaders(req, new Set());
+ const secured = sanitizeRequestHeaders(req, normalizeTrustProxyHeaders(undefined));
expect(secured.headers.get('host')).toBe('example.com');
expect(secured.headers.has('x-forwarded-host')).toBeFalse();
expect(secured.headers.has('x-forwarded-proto')).toBeFalse();
});
- it('should retain allowed proxy headers when explicitly provided', () => {
- const trustProxyHeaders = new Set(['x-forwarded-host']);
+ it('should scrub unallowed proxy headers when trustProxyHeaders is false', () => {
+ const req = new Request('http://example.com', {
+ headers: {
+ 'host': 'example.com',
+ 'x-forwarded-host': 'evil.com',
+ 'x-forwarded-proto': 'https',
+ },
+ });
+ const secured = sanitizeRequestHeaders(req, normalizeTrustProxyHeaders(false));
+
+ expect(secured.headers.get('host')).toBe('example.com');
+ expect(secured.headers.has('x-forwarded-host')).toBeFalse();
+ expect(secured.headers.has('x-forwarded-proto')).toBeFalse();
+ });
+
+ it('should only retain allowed proxy headers when explicitly provided', () => {
const req = new Request('http://example.com', {
headers: {
'host': 'example.com',
@@ -240,7 +284,7 @@ describe('Validation Utils', () => {
'x-forwarded-proto': 'https',
},
});
- const secured = sanitizeRequestHeaders(req, trustProxyHeaders);
+ const secured = sanitizeRequestHeaders(req, normalizeTrustProxyHeaders(['x-forwarded-host']));
expect(secured.headers.get('host')).toBe('example.com');
expect(secured.headers.get('x-forwarded-host')).toBe('proxy.com');
@@ -253,23 +297,22 @@ describe('Validation Utils', () => {
'host': 'example.com',
'x-forwarded-host': 'proxy.com',
'x-forwarded-proto': 'https',
+ 'x-forwarded-email': 'user@example.com',
},
});
- const secured = sanitizeRequestHeaders(
- req,
- new Set(['x-forwarded-host', 'x-forwarded-proto']),
- );
+ const secured = sanitizeRequestHeaders(req, normalizeTrustProxyHeaders(true));
expect(secured.headers.get('host')).toBe('example.com');
expect(secured.headers.get('x-forwarded-host')).toBe('proxy.com');
expect(secured.headers.get('x-forwarded-proto')).toBe('https');
+ expect(secured.headers.get('x-forwarded-email')).toBe('user@example.com');
});
it('should not clone the request if no proxy headers need to be removed', () => {
const req = new Request('http://example.com', {
headers: { 'accept': 'application/json' },
});
- const secured = sanitizeRequestHeaders(req, new Set());
+ const secured = sanitizeRequestHeaders(req, normalizeTrustProxyHeaders(false));
expect(secured).toBe(req);
expect(secured.headers.get('accept')).toBe('application/json');
diff --git a/packages/angular_devkit/build_angular/package.json b/packages/angular_devkit/build_angular/package.json
index f50208e0e73f..f1778f70f2cd 100644
--- a/packages/angular_devkit/build_angular/package.json
+++ b/packages/angular_devkit/build_angular/package.json
@@ -66,7 +66,7 @@
"devDependencies": {
"@angular/ssr": "workspace:*",
"browser-sync": "3.0.4",
- "ng-packagr": "22.0.0-next.3",
+ "ng-packagr": "22.0.0-rc.0",
"undici": "8.2.0"
},
"peerDependencies": {
diff --git a/packages/angular_devkit/build_angular/src/builders/browser/tests/options/assets_spec.ts b/packages/angular_devkit/build_angular/src/builders/browser/tests/options/assets_spec.ts
index b8752e7c275e..c7ac266cf036 100644
--- a/packages/angular_devkit/build_angular/src/builders/browser/tests/options/assets_spec.ts
+++ b/packages/angular_devkit/build_angular/src/builders/browser/tests/options/assets_spec.ts
@@ -359,6 +359,28 @@ describeBuilder(buildWebpackBrowser, BROWSER_BUILDER_INFO, (harness) => {
harness.expectFile('dist/subdirectory/test.svg').content.toBe('');
});
+ it('fails if asset input option is outside workspace root (relative)', async () => {
+ harness.useTarget('build', {
+ ...BASE_OPTIONS,
+ assets: [{ glob: '**/*', input: '../outside', output: '.' }],
+ });
+
+ const { result } = await harness.executeOnce();
+
+ expect(result?.error).toMatch('asset path must be within the workspace root');
+ });
+
+ it('fails if asset input option is outside workspace root (absolute)', async () => {
+ harness.useTarget('build', {
+ ...BASE_OPTIONS,
+ assets: [{ glob: '**/*', input: '/tmp/outside-workspace', output: '.' }],
+ });
+
+ const { result } = await harness.executeOnce();
+
+ expect(result?.error).toMatch('asset path must be within the workspace root');
+ });
+
it('fails if output option is not within project output path', async () => {
await harness.writeFile('test.svg', '');
diff --git a/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts b/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts
index 7f18080e05f5..20e97e1d5162 100644
--- a/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts
+++ b/packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts
@@ -68,6 +68,11 @@ export function normalizeAssetPatterns(
assetPattern = { glob, input, output };
} else {
+ const resolvedInput = path.resolve(workspaceRoot, assetPattern.input);
+ if (!resolvedInput.startsWith(workspaceRoot)) {
+ throw new Error(`The ${assetPattern.input} asset path must be within the workspace root.`);
+ }
+
assetPattern.output = path.join('.', assetPattern.output ?? '');
}
diff --git a/packages/angular_devkit/build_webpack/src/builders/webpack/index_spec.ts b/packages/angular_devkit/build_webpack/src/builders/webpack/index_spec.ts
index 6209272d9376..3632f6858e77 100644
--- a/packages/angular_devkit/build_webpack/src/builders/webpack/index_spec.ts
+++ b/packages/angular_devkit/build_webpack/src/builders/webpack/index_spec.ts
@@ -10,9 +10,8 @@ import { Architect } from '@angular-devkit/architect';
import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node';
import { TestingArchitectHost } from '@angular-devkit/architect/testing';
import { join, normalize, schema, workspaces } from '@angular-devkit/core';
-import { NodeJsSyncHost, createConsoleLogger } from '@angular-devkit/core/node';
+import { NodeJsSyncHost } from '@angular-devkit/core/node';
import * as path from 'node:path';
-import { BuildResult } from './index';
describe('Webpack Builder basic test', () => {
let testArchitectHost: TestingArchitectHost;
@@ -99,11 +98,7 @@ describe('Webpack Builder basic test', () => {
});
it('works', async () => {
- const run = await architect.scheduleTarget(
- { project: 'app', target: 'build-webpack' },
- {},
- { logger: createConsoleLogger() },
- );
+ const run = await architect.scheduleTarget({ project: 'app', target: 'build-webpack' });
const output = await run.result;
expect(output.success).toBe(true);
diff --git a/packages/angular_devkit/core/node/cli-logger.ts b/packages/angular_devkit/core/node/cli-logger.ts
index 684c964019d3..a5cbada271ec 100644
--- a/packages/angular_devkit/core/node/cli-logger.ts
+++ b/packages/angular_devkit/core/node/cli-logger.ts
@@ -15,6 +15,8 @@ export interface ProcessOutput {
/**
* A Logger that sends information to STDOUT and STDERR.
+ *
+ * @deprecated Use a custom logger implementation instead.
*/
export function createConsoleLogger(
verbose = false,
diff --git a/packages/angular_devkit/core/src/json/schema/registry.ts b/packages/angular_devkit/core/src/json/schema/registry.ts
index d433a41bd460..77aeab6646a1 100644
--- a/packages/angular_devkit/core/src/json/schema/registry.ts
+++ b/packages/angular_devkit/core/src/json/schema/registry.ts
@@ -224,7 +224,7 @@ export class CoreSchemaRegistry implements SchemaRegistry {
* See: https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.appendix.B.2
*
* @param schema The schema or URI to flatten.
- * @returns An Observable of the flattened schema object.
+ * @return A Promise that resolves to the flattened schema object.
* @private since 11.2 without replacement.
*/
async ɵflatten(schema: JsonObject): Promise {
diff --git a/packages/ngtools/webpack/package.json b/packages/ngtools/webpack/package.json
index 00924ddef652..b77a8e053764 100644
--- a/packages/ngtools/webpack/package.json
+++ b/packages/ngtools/webpack/package.json
@@ -4,22 +4,12 @@
"description": "Webpack plugin that AoT compiles your Angular components and modules.",
"main": "./src/index.js",
"typings": "src/index.d.ts",
- "license": "MIT",
"keywords": [
"angular",
"webpack",
"plugin",
"aot"
],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/angular/angular-cli.git"
- },
- "author": "angular",
- "bugs": {
- "url": "https://github.com/angular/angular-cli/issues"
- },
- "homepage": "https://github.com/angular/angular-cli/tree/main/packages/ngtools/webpack",
"peerDependencies": {
"@angular/compiler-cli": "0.0.0-ANGULAR-FW-PEER-DEP",
"typescript": ">=6.0 <6.1",
@@ -27,8 +17,8 @@
},
"devDependencies": {
"@angular-devkit/core": "workspace:0.0.0-PLACEHOLDER",
- "@angular/compiler": "22.0.0-next.10",
- "@angular/compiler-cli": "22.0.0-next.10",
+ "@angular/compiler": "22.0.0-rc.1",
+ "@angular/compiler-cli": "22.0.0-rc.1",
"typescript": "6.0.3",
"webpack": "5.106.2"
}
diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts
index 543ba5a2daee..c840c374976d 100644
--- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts
+++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy.ts
@@ -505,6 +505,53 @@ function transformThisFor(
);
}
+function transformAllCallsArgs(
+ node: ts.Node,
+ { sourceFile, reporter, pendingVitestValueImports }: RefactorContext,
+): ts.Node {
+ if (
+ !ts.isPropertyAccessExpression(node) ||
+ !ts.isIdentifier(node.name) ||
+ node.name.text !== 'args'
+ ) {
+ return node;
+ }
+
+ const elementAccess = node.expression;
+ if (!ts.isElementAccessExpression(elementAccess)) {
+ return node;
+ }
+
+ const allCall = elementAccess.expression;
+ if (!ts.isCallExpression(allCall) || !ts.isPropertyAccessExpression(allCall.expression)) {
+ return node;
+ }
+
+ const allPae = allCall.expression;
+ if (!ts.isIdentifier(allPae.name) || allPae.name.text !== 'all') {
+ return node;
+ }
+
+ if (!ts.isPropertyAccessExpression(allPae.expression)) {
+ return node;
+ }
+
+ const spyIdentifier = getSpyIdentifierFromCalls(allPae.expression);
+ if (!spyIdentifier) {
+ return node;
+ }
+
+ reporter.reportTransformation(
+ sourceFile,
+ node,
+ 'Transformed `spy.calls.all()[i].args` to `vi.mocked(spy).mock.calls[i]`.',
+ );
+ const mockProperty = createMockedSpyMockProperty(spyIdentifier, pendingVitestValueImports);
+ const callsProperty = createPropertyAccess(mockProperty, 'calls');
+
+ return ts.factory.createElementAccessExpression(callsProperty, elementAccess.argumentExpression);
+}
+
export function transformSpyCallInspection(node: ts.Node, refactorCtx: RefactorContext): ts.Node {
const mostRecentArgsTransformed = transformMostRecentArgs(node, refactorCtx);
if (mostRecentArgsTransformed !== node) {
@@ -516,6 +563,11 @@ export function transformSpyCallInspection(node: ts.Node, refactorCtx: RefactorC
return thisForTransformed;
}
+ const allCallsArgsTransformed = transformAllCallsArgs(node, refactorCtx);
+ if (allCallsArgsTransformed !== node) {
+ return allCallsArgsTransformed;
+ }
+
if (!ts.isCallExpression(node) || !ts.isPropertyAccessExpression(node.expression)) {
return node;
}
diff --git a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts
index 85a0068240c7..97881049c1d5 100644
--- a/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts
+++ b/packages/schematics/angular/refactor/jasmine-vitest/transformers/jasmine-spy_spec.ts
@@ -270,6 +270,11 @@ describe('transformSpyCallInspection', () => {
input: `const allCalls = mySpy.calls.all();`,
expected: `const allCalls = vi.mocked(mySpy).mock.calls;`,
},
+ {
+ description: 'should transform spy.calls.all()[i].args',
+ input: `expect(mySpy.calls.all()[2].args[0]).toBeInstanceOf(RemoveShareUrlAction);`,
+ expected: `expect(vi.mocked(mySpy).mock.calls[2][0]).toBeInstanceOf(RemoveShareUrlAction);`,
+ },
{
description: 'should transform spy.calls.mostRecent().args',
input: `const recentArgs = mySpy.calls.mostRecent().args;`,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6694d20de137..e48f811fb87b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -14,8 +14,8 @@ importers:
.:
dependencies:
'@angular/compiler-cli':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3)
typescript:
specifier: 6.0.3
version: 6.0.3
@@ -26,44 +26,44 @@ importers:
built: true
devDependencies:
'@angular/animations':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
'@angular/cdk':
- specifier: 22.0.0-next.7
- version: 22.0.0-next.7(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
'@angular/common':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
'@angular/compiler':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1
'@angular/core':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
'@angular/forms':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
'@angular/localize':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3))(@angular/compiler@22.0.0-next.10)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3))(@angular/compiler@22.0.0-rc.1)
'@angular/material':
- specifier: 22.0.0-next.7
- version: 22.0.0-next.7(1ee8d5fdc2f291e5a1da1bc147744133)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(1accdefd456d74b3b7d2dbdb1ea5e0bc)
'@angular/ng-dev':
- specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#4de8a14a1682d0f07e0b14a3b26498757c195904
- version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4de8a14a1682d0f07e0b14a3b26498757c195904(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))
+ specifier: https://github.com/angular/dev-infra-private-ng-dev-builds.git#849693f516dcd7811143830933a71dbd501aceb2
+ version: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/849693f516dcd7811143830933a71dbd501aceb2(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))
'@angular/platform-browser':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
'@angular/platform-server':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@22.0.0-next.10)(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/compiler@22.0.0-rc.1)(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
'@angular/router':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
'@angular/service-worker':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
'@babel/core':
specifier: 7.29.0
version: 7.29.0
@@ -78,13 +78,13 @@ importers:
version: 0.28.0
'@eslint/compat':
specifier: 2.0.5
- version: 2.0.5(eslint@10.3.0(jiti@2.6.1))
+ version: 2.0.5(eslint@10.3.0(jiti@2.7.0))
'@eslint/eslintrc':
specifier: 3.3.5
version: 3.3.5
'@eslint/js':
specifier: 10.0.1
- version: 10.0.1(eslint@10.3.0(jiti@2.6.1))
+ version: 10.0.1(eslint@10.3.0(jiti@2.7.0))
'@rollup/plugin-alias':
specifier: ^6.0.0
version: 6.0.0(rollup@4.60.2)
@@ -102,10 +102,10 @@ importers:
version: 4.60.2
'@stylistic/eslint-plugin':
specifier: ^5.0.0
- version: 5.10.0(eslint@10.3.0(jiti@2.6.1))
+ version: 5.10.0(eslint@10.3.0(jiti@2.7.0))
'@tony.ganchev/eslint-plugin-header':
specifier: ~3.4.0
- version: 3.4.4(eslint@10.3.0(jiti@2.6.1))
+ version: 3.4.4(eslint@10.3.0(jiti@2.7.0))
'@types/babel__core':
specifier: 7.20.5
version: 7.20.5
@@ -144,7 +144,7 @@ importers:
version: 4.17.24
'@types/node':
specifier: ^22.12.0
- version: 22.19.17
+ version: 22.19.19
'@types/npm-package-arg':
specifier: ^6.1.0
version: 6.1.4
@@ -174,10 +174,10 @@ importers:
version: 1.1.9
'@typescript-eslint/eslint-plugin':
specifier: 8.59.1
- version: 8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
+ version: 8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
'@typescript-eslint/parser':
specifier: 8.59.1
- version: 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
+ version: 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
ajv:
specifier: 8.20.0
version: 8.20.0
@@ -192,13 +192,13 @@ importers:
version: 0.28.0
eslint:
specifier: 10.3.0
- version: 10.3.0(jiti@2.6.1)
+ version: 10.3.0(jiti@2.7.0)
eslint-config-prettier:
specifier: 10.1.8
- version: 10.1.8(eslint@10.3.0(jiti@2.6.1))
+ version: 10.1.8(eslint@10.3.0(jiti@2.7.0))
eslint-plugin-import:
specifier: 2.32.0
- version: 2.32.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))
+ version: 2.32.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))
express:
specifier: 5.2.1
version: 5.2.1
@@ -273,7 +273,7 @@ importers:
version: 6.4.1(rollup@4.60.2)(typescript@6.0.3)
rollup-plugin-sourcemaps2:
specifier: 0.5.6
- version: 0.5.6(@types/node@22.19.17)(rollup@4.60.2)
+ version: 0.5.6(@types/node@22.19.19)(rollup@4.60.2)
semver:
specifier: 7.7.4
version: 7.7.4
@@ -294,10 +294,10 @@ importers:
version: 6.5.2(encoding@0.1.13)
verdaccio-auth-memory:
specifier: ^13.0.0
- version: 13.0.0
+ version: 13.0.1
zone.js:
specifier: ^0.16.0
- version: 0.16.1
+ version: 0.16.2
modules/testing/builder:
devDependencies:
@@ -326,14 +326,14 @@ importers:
specifier: 29.1.1
version: 29.1.1
ng-packagr:
- specifier: 22.0.0-next.3
- version: 22.0.0-next.3(@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3)
+ specifier: 22.0.0-rc.0
+ version: 22.0.0-rc.0(@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3)
rxjs:
specifier: 7.8.2
version: 7.8.2
vitest:
specifier: 4.1.5
- version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(jiti@2.6.1)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.4)(@vitest/coverage-v8@4.1.5)(jiti@2.7.0)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
packages/angular/build:
dependencies:
@@ -354,10 +354,10 @@ importers:
version: 7.24.7
'@inquirer/confirm':
specifier: 6.0.12
- version: 6.0.12(@types/node@24.12.2)
+ version: 6.0.12(@types/node@24.12.4)
'@vitejs/plugin-basic-ssl':
specifier: 2.3.0
- version: 2.3.0(vite@7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))
+ version: 2.3.0(vite@7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0))
beasties:
specifier: 0.4.2
version: 0.4.2
@@ -408,7 +408,7 @@ importers:
version: 0.2.16
vite:
specifier: 7.3.2
- version: 7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ version: 7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
watchpack:
specifier: 2.5.1
version: 2.5.1
@@ -429,20 +429,20 @@ importers:
specifier: 4.6.4
version: 4.6.4
ng-packagr:
- specifier: 22.0.0-next.3
- version: 22.0.0-next.3(@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3)
+ specifier: 22.0.0-rc.0
+ version: 22.0.0-rc.0(@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3)
postcss:
- specifier: 8.5.13
- version: 8.5.13
+ specifier: 8.5.14
+ version: 8.5.14
rolldown:
- specifier: 1.0.0-rc.18
- version: 1.0.0-rc.18
+ specifier: 1.0.0
+ version: 1.0.0
rxjs:
specifier: 7.8.2
version: 7.8.2
vitest:
specifier: 4.1.5
- version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(jiti@2.6.1)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.4)(@vitest/coverage-v8@4.1.5)(jiti@2.7.0)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
optionalDependencies:
lmdb:
specifier: 3.5.4
@@ -461,10 +461,10 @@ importers:
version: link:../../angular_devkit/schematics
'@inquirer/prompts':
specifier: 8.4.2
- version: 8.4.2(@types/node@24.12.2)
+ version: 8.4.2(@types/node@24.12.4)
'@listr2/prompt-adapter-inquirer':
specifier: 4.2.3
- version: 4.2.3(@inquirer/prompts@8.4.2(@types/node@24.12.2))(@types/node@24.12.2)(listr2@10.2.1)
+ version: 4.2.3(@inquirer/prompts@8.4.2(@types/node@24.12.4))(@types/node@24.12.4)(listr2@10.2.1)
'@modelcontextprotocol/sdk':
specifier: 1.29.0
version: 1.29.0(zod@4.4.2)
@@ -527,23 +527,23 @@ importers:
specifier: workspace:*
version: link:../../angular_devkit/schematics
'@angular/common':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
'@angular/compiler':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1
'@angular/core':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
'@angular/platform-browser':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
'@angular/platform-server':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@22.0.0-next.10)(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/compiler@22.0.0-rc.1)(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
'@angular/router':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
'@schematics/angular':
specifier: workspace:*
version: link:../../schematics/angular
@@ -618,16 +618,16 @@ importers:
version: 10.5.0(postcss@8.5.13)
babel-loader:
specifier: 10.1.1
- version: 10.1.1(@babel/core@7.29.0)(webpack@5.106.2(esbuild@0.28.0))
+ version: 10.1.1(@babel/core@7.29.0)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
browserslist:
specifier: ^4.26.0
version: 4.28.2
copy-webpack-plugin:
specifier: 14.0.0
- version: 14.0.0(webpack@5.106.2(esbuild@0.28.0))
+ version: 14.0.0(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
css-loader:
specifier: 7.1.4
- version: 7.1.4(webpack@5.106.2(esbuild@0.28.0))
+ version: 7.1.4(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
esbuild-wasm:
specifier: 0.28.0
version: 0.28.0
@@ -648,16 +648,16 @@ importers:
version: 4.6.4
less-loader:
specifier: 12.3.2
- version: 12.3.2(less@4.6.4)(webpack@5.106.2(esbuild@0.28.0))
+ version: 12.3.2(less@4.6.4)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
license-webpack-plugin:
specifier: 4.0.2
- version: 4.0.2(webpack@5.106.2(esbuild@0.28.0))
+ version: 4.0.2(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
loader-utils:
specifier: 3.3.1
version: 3.3.1
mini-css-extract-plugin:
specifier: 2.10.2
- version: 2.10.2(webpack@5.106.2(esbuild@0.28.0))
+ version: 2.10.2(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
open:
specifier: 11.0.0
version: 11.0.0
@@ -675,7 +675,7 @@ importers:
version: 8.5.13
postcss-loader:
specifier: 8.2.1
- version: 8.2.1(postcss@8.5.13)(typescript@6.0.3)(webpack@5.106.2(esbuild@0.28.0))
+ version: 8.2.1(postcss@8.5.13)(typescript@6.0.3)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
resolve-url-loader:
specifier: 5.0.0
version: 5.0.0
@@ -687,13 +687,13 @@ importers:
version: 1.99.0
sass-loader:
specifier: 16.0.7
- version: 16.0.7(sass@1.99.0)(webpack@5.106.2(esbuild@0.28.0))
+ version: 16.0.7(sass@1.99.0)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
semver:
specifier: 7.7.4
version: 7.7.4
source-map-loader:
specifier: 5.0.0
- version: 5.0.0(webpack@5.106.2(esbuild@0.28.0))
+ version: 5.0.0(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
source-map-support:
specifier: 0.5.21
version: 0.5.21
@@ -708,19 +708,19 @@ importers:
version: 2.8.1
webpack:
specifier: 5.106.2
- version: 5.106.2(esbuild@0.28.0)
+ version: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
webpack-dev-middleware:
specifier: 8.0.3
- version: 8.0.3(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0))
+ version: 8.0.3(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
webpack-dev-server:
specifier: 5.2.3
- version: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.2(esbuild@0.28.0))
+ version: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
webpack-merge:
specifier: 6.0.1
version: 6.0.1
webpack-subresource-integrity:
specifier: 5.1.0
- version: 5.1.0(webpack@5.106.2(esbuild@0.28.0))
+ version: 5.1.0(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
devDependencies:
'@angular/ssr':
specifier: workspace:*
@@ -729,8 +729,8 @@ importers:
specifier: 3.0.4
version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)
ng-packagr:
- specifier: 22.0.0-next.3
- version: 22.0.0-next.3(@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3)
+ specifier: 22.0.0-rc.0
+ version: 22.0.0-rc.0(@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3)
undici:
specifier: 8.2.0
version: 8.2.0
@@ -814,7 +814,7 @@ importers:
version: link:../schematics
'@inquirer/prompts':
specifier: 8.4.2
- version: 8.4.2(@types/node@24.12.2)
+ version: 8.4.2(@types/node@24.12.4)
packages/ngtools/webpack:
devDependencies:
@@ -822,11 +822,11 @@ importers:
specifier: workspace:0.0.0-PLACEHOLDER
version: link:../../angular_devkit/core
'@angular/compiler':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1
'@angular/compiler-cli':
- specifier: 22.0.0-next.10
- version: 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3)
+ specifier: 22.0.0-rc.1
+ version: 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3)
typescript:
specifier: 6.0.3
version: 6.0.3
@@ -935,47 +935,47 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@angular/animations@22.0.0-next.10':
- resolution: {integrity: sha512-o4YxddwSuqW/l+Mot35Se/k3H/7tarFDjppHaf7IEPmZVqRz2+6/LLfmv51RuSZmtt5L+0FIFmazFmS+3+wRNw==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/animations@22.0.0-rc.1':
+ resolution: {integrity: sha512-F/JEs1juldeuxszTIT/lWaSsK7zIxdlgXwNFv0GlBMmkX0SnuuTSf/h3rzLJ8EvZ1MaemjcJyz3vH+Fth0Dwmw==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/core': 22.0.0-next.10
+ '@angular/core': 22.0.0-rc.1
- '@angular/cdk@22.0.0-next.7':
- resolution: {integrity: sha512-dAJexPGuFn6LwHNRJU2UVNcv0pL8VZzGdcaTs77dPKAR0W8V42/EhFR02SvondsYMA7kpfLLBjVdH5ckwsTCkA==}
+ '@angular/cdk@22.0.0-rc.1':
+ resolution: {integrity: sha512-kJAUre+r3Pb+Hghh63G7XduvPxD6uIFCfaSBAdKsTP7VYEwCD0fuvJD8uQxnetv0RakEHLjPnrZ7ajV8tcFUEA==}
peerDependencies:
'@angular/common': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
'@angular/core': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
'@angular/platform-browser': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
rxjs: ^6.5.3 || ^7.4.0
- '@angular/common@22.0.0-next.10':
- resolution: {integrity: sha512-AqcFvnjCMjwS9wNxCWMTy+tQH1Kr6HTHgyqBgDWP01Y4NDLicJSGtU99fZ7KXsalHyZyXmYqqZqvmyeCIzweqw==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/common@22.0.0-rc.1':
+ resolution: {integrity: sha512-IOrl4MfIt1mqLJRj3ELab5rOxwt7T8BzFtqg/eDV7pkJ6NPYH+FVOrvI2oH59WUxPEJCaUV6KalamFVZr7l3Kg==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/core': 22.0.0-next.10
+ '@angular/core': 22.0.0-rc.1
rxjs: ^6.5.3 || ^7.4.0
- '@angular/compiler-cli@22.0.0-next.10':
- resolution: {integrity: sha512-kCV2elmGIVu+k0UydnWnGgiNEvmCe6diyXntz7Hw3Ynuap62/ZiiLcHZVJRGhuei7TIUu6qoNAKHj7jm8pQ2xw==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/compiler-cli@22.0.0-rc.1':
+ resolution: {integrity: sha512-yWznFdmosmrBqt9fRQtkBpjXTZA65t+5DSt0UgtJ0eLdS6T5/7zM9p03pwmF+32HhW8UGq2t7tUEFcwG95d+qw==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
hasBin: true
peerDependencies:
- '@angular/compiler': 22.0.0-next.10
+ '@angular/compiler': 22.0.0-rc.1
typescript: '>=6.0 <6.1'
peerDependenciesMeta:
typescript:
optional: true
- '@angular/compiler@22.0.0-next.10':
- resolution: {integrity: sha512-EQKOrWGiZjZ5Jd4cV9wGxvqcS/8dfXIpo4hsvDQLvNGHQL3uVZqlCH+M6+iEahEYXO/u7QLcilDtOJ1jfwqbyQ==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/compiler@22.0.0-rc.1':
+ resolution: {integrity: sha512-BVBgGS6rVnIJ3ot4O87/tw1YSx+gC5fG8ag7PbQjAF5SKKbj1PrVHo0DUoxEXLLPhkIXJ1tccDG2LnfKcCLxcg==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
- '@angular/core@22.0.0-next.10':
- resolution: {integrity: sha512-L/uE6f8U+2aqzgNTq1OQbquV090kpR/lyOsnmtP4cZSUTPPG0fnIyA2ct3ycifw4xxpxEwhOv2VYQ4EYRyWb5w==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/core@22.0.0-rc.1':
+ resolution: {integrity: sha512-mwiS07LAqZfpW5lmnTnGEGcZM0f9Rsp2YfQKmilnLUt2NTDTHLEwJmVBIkUatYkRLNhFiNbNO3gXynQA8kysSA==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/compiler': 22.0.0-next.10
+ '@angular/compiler': 22.0.0-rc.1
rxjs: ^6.5.3 || ^7.4.0
zone.js: ~0.15.0 || ~0.16.0
peerDependenciesMeta:
@@ -984,74 +984,74 @@ packages:
zone.js:
optional: true
- '@angular/forms@22.0.0-next.10':
- resolution: {integrity: sha512-3RMIm2LmJwBSzQMIpv90ZAZfkkObW0Yq1GrpyJKv1U8lIQWcNnib1e9RIFVVMhTDk5+MRzpPH8Z5lAeo8yLAeg==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/forms@22.0.0-rc.1':
+ resolution: {integrity: sha512-mdyLKVxaF/rBRJ4YLxWYX1cm6MX3RMrIPSt26Dvinnx1bmnTnyjA1uicT0UZ9qEhO0a/M+F3dmEECWcaeMTgtQ==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/common': 22.0.0-next.10
- '@angular/core': 22.0.0-next.10
- '@angular/platform-browser': 22.0.0-next.10
+ '@angular/common': 22.0.0-rc.1
+ '@angular/core': 22.0.0-rc.1
+ '@angular/platform-browser': 22.0.0-rc.1
rxjs: ^6.5.3 || ^7.4.0
- '@angular/localize@22.0.0-next.10':
- resolution: {integrity: sha512-AuNQIl1OI1Lgje4KflwIlV7wEFQPE9WyNA8SgCR4Eief9N3TO4couzlfxUp72lq7eB13mCclScixiTZ+ys4aTA==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/localize@22.0.0-rc.1':
+ resolution: {integrity: sha512-AoJccNAE6z1n23SfG/x1aLgQVXTaQ4Do+cTaiMCdgZvead4nHIsyvaXouG3mb1kta3txN9/1W/Fgr9uB9zIM3g==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
hasBin: true
peerDependencies:
- '@angular/compiler': 22.0.0-next.10
- '@angular/compiler-cli': 22.0.0-next.10
+ '@angular/compiler': 22.0.0-rc.1
+ '@angular/compiler-cli': 22.0.0-rc.1
- '@angular/material@22.0.0-next.7':
- resolution: {integrity: sha512-yRmvcm7qrR43GTG33czQ988bCnvspZBadOpA8uci1UHsLF76T/v6U1BNVeM8bZYUofURtvLjyGDlggJmGYqRtg==}
+ '@angular/material@22.0.0-rc.1':
+ resolution: {integrity: sha512-DoXn/xMFsfcYuKrRFr3QGvTQhcrPgoh3gDJcuHFKK4w7/3brJQaOYOW0aruTBw5/2Z2NE9PHz1wHuswt14iE1g==}
peerDependencies:
- '@angular/cdk': 22.0.0-next.7
+ '@angular/cdk': 22.0.0-rc.1
'@angular/common': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
'@angular/core': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
'@angular/forms': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
'@angular/platform-browser': ^22.0.0-0 || ^22.1.0-0 || ^22.2.0-0 || ^22.3.0-0 || ^23.0.0-0
rxjs: ^6.5.3 || ^7.4.0
- '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4de8a14a1682d0f07e0b14a3b26498757c195904':
- resolution: {tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4de8a14a1682d0f07e0b14a3b26498757c195904}
- version: 0.0.0-e391d56ec4a9d89b4006515b0679350f1394d19a
+ '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/849693f516dcd7811143830933a71dbd501aceb2':
+ resolution: {gitHosted: true, integrity: sha512-11p4x/olm/A+GcSiMG4TC8oJZ9r6CAinlRtilrXZNwGmDGDEdq0zcpYxCSwZhcFHcBxq4eWpClWZLcMZBeb1dw==, tarball: https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/849693f516dcd7811143830933a71dbd501aceb2}
+ version: 0.0.0-adae685a338508cb2d4f688e84c4efd3204c7b69
hasBin: true
- '@angular/platform-browser@22.0.0-next.10':
- resolution: {integrity: sha512-Gs4vo/2Mof1T4LCJUJuaPaQV18p0KpkrhWJ0gEVT6MFX/wjM1uuHvP25tPKYQysNzb2iaUTVcS8QwuX0HGPoJQ==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/platform-browser@22.0.0-rc.1':
+ resolution: {integrity: sha512-POx91GJb8B4TFBGxjUpyHQGGDjE/sNQjH94RkpCRhQypN/UIkxgCwzBRECDfhH9q0jUU275IDpgnSUfxegTPDQ==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/animations': 22.0.0-next.10
- '@angular/common': 22.0.0-next.10
- '@angular/core': 22.0.0-next.10
+ '@angular/animations': 22.0.0-rc.1
+ '@angular/common': 22.0.0-rc.1
+ '@angular/core': 22.0.0-rc.1
peerDependenciesMeta:
'@angular/animations':
optional: true
- '@angular/platform-server@22.0.0-next.10':
- resolution: {integrity: sha512-KTtW83mQfmwlyzUhf3oS+M7WzrYYB+0apkmEAw+7HuvsGbAcAFO9ltzhykPwfslwwEV6mqbkGJRFxtkpqMQGqA==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/platform-server@22.0.0-rc.1':
+ resolution: {integrity: sha512-rC9OzOgCCAWjkXscwbJrmwpKnjeUpfUx38dWv+MbEx7N2XUfAqRqoRJds2rZyi6TtUYfcrI7TNoQab61kJSsCA==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/common': 22.0.0-next.10
- '@angular/compiler': 22.0.0-next.10
- '@angular/core': 22.0.0-next.10
- '@angular/platform-browser': 22.0.0-next.10
+ '@angular/common': 22.0.0-rc.1
+ '@angular/compiler': 22.0.0-rc.1
+ '@angular/core': 22.0.0-rc.1
+ '@angular/platform-browser': 22.0.0-rc.1
rxjs: ^6.5.3 || ^7.4.0
- '@angular/router@22.0.0-next.10':
- resolution: {integrity: sha512-IV28yTF+HM4SBGJGaHEwdDNr3ASLfjQhBuKSKoUy4Yf5vg87qZzbZnXIFo1jQWmbAu7lnFMMTfuLqnwHl07dAQ==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/router@22.0.0-rc.1':
+ resolution: {integrity: sha512-DzfoTMVpk4VbGRLB8ZVr7zDwZiIPtpFsz3KBlpaudDmwJTdWaF0Gr1y3G7fcw+vaqCLL7S3Sm2bO4WnljJLuZA==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
peerDependencies:
- '@angular/common': 22.0.0-next.10
- '@angular/core': 22.0.0-next.10
- '@angular/platform-browser': 22.0.0-next.10
+ '@angular/common': 22.0.0-rc.1
+ '@angular/core': 22.0.0-rc.1
+ '@angular/platform-browser': 22.0.0-rc.1
rxjs: ^6.5.3 || ^7.4.0
- '@angular/service-worker@22.0.0-next.10':
- resolution: {integrity: sha512-E72wxCjc/Oha0t0paXIjDUqfuak8ZMglmx7pCmZC50/84Nu1BkZ/d542nAAyVDVfiQl4wZWTBpD2DoHc7KWe+g==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ '@angular/service-worker@22.0.0-rc.1':
+ resolution: {integrity: sha512-y7kgcyBUvQOQtm7tFP49Mywy4dUs3t28rU+MsJJnuHx4vwveYAPPxW7SA0qlXz1finpWRCjaZKwOae+OrRF31g==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
hasBin: true
peerDependencies:
- '@angular/core': 22.0.0-next.10
+ '@angular/core': 22.0.0-rc.1
rxjs: ^6.5.3 || ^7.4.0
'@asamuzakjp/css-color@5.1.11':
@@ -1391,8 +1391,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-modules-systemjs@7.29.0':
- resolution: {integrity: sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==}
+ '@babel/plugin-transform-modules-systemjs@7.29.4':
+ resolution: {integrity: sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -1620,15 +1620,15 @@ packages:
resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==}
engines: {node: '>=20.19.0'}
- '@csstools/css-calc@3.2.0':
- resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==}
+ '@csstools/css-calc@3.2.1':
+ resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==}
engines: {node: '>=20.19.0'}
peerDependencies:
'@csstools/css-parser-algorithms': ^4.0.0
'@csstools/css-tokenizer': ^4.0.0
- '@csstools/css-color-parser@4.1.0':
- resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==}
+ '@csstools/css-color-parser@4.1.1':
+ resolution: {integrity: sha512-eZ5XOtyhK+mggRafYUWzA0tvaYOFgdY8AkgQiCJF9qNAePnUo/zmsqqYubBBb3sQ8uNUaSKTY9s9klfRaAXL0g==}
engines: {node: '>=20.19.0'}
peerDependencies:
'@csstools/css-parser-algorithms': ^4.0.0
@@ -1640,8 +1640,8 @@ packages:
peerDependencies:
'@csstools/css-tokenizer': ^4.0.0
- '@csstools/css-syntax-patches-for-csstree@1.1.3':
- resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==}
+ '@csstools/css-syntax-patches-for-csstree@1.1.4':
+ resolution: {integrity: sha512-wgsqt92b7C7tQhIdPNxj0n9zuUbQlvAuI1exyzeNrOKOi62SD7ren8zqszmpVREjAOqg8cD2FqYhQfAuKjk4sw==}
peerDependencies:
css-tree: ^3.2.1
peerDependenciesMeta:
@@ -2042,72 +2042,72 @@ packages:
'@noble/hashes':
optional: true
- '@firebase/ai@2.11.1':
- resolution: {integrity: sha512-WGTF81W3WBKJY+c7xqTzO15OGAkCAs8cpADqflAI0skhTZjIkhF0qyf55rq4Ctt6jKygkv99rPfMrjAHTgXaVQ==}
+ '@firebase/ai@2.12.0':
+ resolution: {integrity: sha512-b+OL4vdyiSLZL/7dLd67V55CjKJvU9MpNmwnday7eA6GG2+J4iwUEsEHgw0/jKY3A41FfkF0SrnYFvtKbQZ65A==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app': 0.x
'@firebase/app-types': 0.x
- '@firebase/analytics-compat@0.2.27':
- resolution: {integrity: sha512-ZObpYpAxL6JfgH7GnvlDD0sbzGZ0o4nijV8skatV9ZX49hJtCYbFqaEcPYptT94rgX1KUoKEderC7/fa7hybtw==}
+ '@firebase/analytics-compat@0.2.28':
+ resolution: {integrity: sha512-lIAlqUUbBu93FJMlQfslryQtBwwzdzvp23ePC6FNgymXk6Ook5v4Uvc0vdutvoIeqmyA3LfP0ZeRFK8+11kOOQ==}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/analytics-types@0.8.3':
- resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==}
+ '@firebase/analytics-types@0.8.4':
+ resolution: {integrity: sha512-zQ+XTgkwH6CY/eUSHJRP7e4LxM30RCxlCmob5sy2axs25GE3Ny0XdgpDscMTHHQIGqWkxPXad4w2Mw9sCgT8zQ==}
- '@firebase/analytics@0.10.21':
- resolution: {integrity: sha512-j2y2q65BlgLGB5Pwjhv/Jopw2X/TBTzvAtI5z/DSp56U4wBj7LfhBfzbdCtFPges+Wz0g55GdoawXibOH5jGng==}
+ '@firebase/analytics@0.10.22':
+ resolution: {integrity: sha512-8BSaq/QRGU1+xyi8L2PTLTJU7MH9aMA72RQdIxrbhWFauOZY9OXo8f2YDN/972xA8d588tlnNVEQ2Mo69pT9Ow==}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/app-check-compat@0.4.2':
- resolution: {integrity: sha512-M91NhxqbSkI0ChkJWy69blC+rPr6HEgaeRllddSaU1pQ/7IiegeCQM9pPDIgvWnwnBSzKhUHpe6ro/jhJ+cvzw==}
+ '@firebase/app-check-compat@0.4.3':
+ resolution: {integrity: sha512-L3AKIRTJxT9b7cDUH3OyV8gWTnmW3vYkwdzRsukWt4kbPBTct12xalnyvHDkm1lKkr+cQq/4uzBx1bOWsQ2ciw==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/app-check-interop-types@0.3.3':
- resolution: {integrity: sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==}
+ '@firebase/app-check-interop-types@0.3.4':
+ resolution: {integrity: sha512-zz3i6e13B8BfWiLy8MABtTh8aGIACgKbf9UVnyHcWs+yQzJXgQcl8A46b0zfaiJHdQ+niF0ouAfcpuf+3LMPQg==}
- '@firebase/app-check-types@0.5.3':
- resolution: {integrity: sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==}
+ '@firebase/app-check-types@0.5.4':
+ resolution: {integrity: sha512-xV7JsIyzVr15aA7f3Pi0rB9gdBuVubs89FGA8VkRYA4g0l78poADgdfrScgf7NndSg9mm7cR7PJyY0+t22KaGw==}
- '@firebase/app-check@0.11.2':
- resolution: {integrity: sha512-jcXQVMHAQ5AEKzVD5C7s5fmAYeFOuN6lAJeNTgZK2B9aLnofWaJt8u1A8Idm8gpsBBYSaY3cVyeH5SWMOVPBLQ==}
+ '@firebase/app-check@0.11.3':
+ resolution: {integrity: sha512-aJ4DfubWfTO8/2vhEhIAizOoOmiycESTU32e+OUgbWcS/G3PA4Vxlr/9zaiN2wfUG2AptQ7DTvj00tyuFZP5Bg==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/app-compat@0.5.11':
- resolution: {integrity: sha512-KaACDjXkK5VLpI01vEs592R7/8s5DjFdIXfKoR385ly1SmK3Tu+jMHCIB4MsiY5jsez6v7VlEX/3rJ90dVkHyA==}
+ '@firebase/app-compat@0.5.12':
+ resolution: {integrity: sha512-Pe513OBerK/CIBxz4/za9atd5MsZtd6DzHz4cmqkvkrcDWhQChAoHBpZ3McuZNuSP8YZiKwfX/J1frR07l15/w==}
engines: {node: '>=20.0.0'}
- '@firebase/app-types@0.9.4':
- resolution: {integrity: sha512-crX9TA5SVYZwLPG7/R16IsH8FLlgkPXjJUVhsVpHVDSqJiq3D/NuFTM5ctxGTExXAOeIn//69tQw47CPerM8MQ==}
+ '@firebase/app-types@0.9.5':
+ resolution: {integrity: sha512-YevqTjvo7Iujsa9Dwowmd6dSoElhzmD63ZSrq6bzjvQ6POjYgNjOFHLmNIgJs48eNO093NCERibuFnxbfOvU7A==}
- '@firebase/app@0.14.11':
- resolution: {integrity: sha512-yxADFW35LYkP8oSGobGsYIrI42I+GPCvKTNHx4meT9Yq3C950IVz1eANoBk822I9tbKv1wyv9P4Bv1G5TpucFw==}
+ '@firebase/app@0.14.12':
+ resolution: {integrity: sha512-FT+HoNp1NdaZ/N26hCwV3WbxS1m6gTn3p2QRBQ3KH7YqyCQqJx0iT7126RgVk68/Rq+9DeL/zCFnHZ0C4u1nLQ==}
engines: {node: '>=20.0.0'}
- '@firebase/auth-compat@0.6.5':
- resolution: {integrity: sha512-IfVsafZ3QiXbsydXTP/XMI0wVYbJLI1rkb8Qqf03/h5FnL+upbbPOb+6Yj3RpcX+Y1iP5Uh18lxTHlXfbiyAow==}
+ '@firebase/auth-compat@0.6.6':
+ resolution: {integrity: sha512-KDJ/GAf/rt7galOpn3DRb2buFfGkZCsHTryKjXDG0eeRnok4+2B4nnkMOMdjRnPkElmcJv2Ao0vEA6kp5m98PQ==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/auth-interop-types@0.2.4':
- resolution: {integrity: sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==}
+ '@firebase/auth-interop-types@0.2.5':
+ resolution: {integrity: sha512-1Li/YuBDBAXcKv7BzY4U28gontUmAaw53sYiqbaVOMCFb2lFKK/c3CGMUWqtwe7+TXrl3poWnTCL5umYBg85Eg==}
- '@firebase/auth-types@0.13.0':
- resolution: {integrity: sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==}
+ '@firebase/auth-types@0.13.1':
+ resolution: {integrity: sha512-0c1Mnid0uMDfGJHeUS4zfvBa4/CedJXotGy/n/NZJnBjwiJawt0ZYU+wH2VAVLiRCEfG2ncCkAX3yd1/2nrB7g==}
peerDependencies:
'@firebase/app-types': 0.x
'@firebase/util': 1.x
- '@firebase/auth@1.13.0':
- resolution: {integrity: sha512-mKkSLNym3UbnnZ06dAmtqzp5EpPGCANGCZDJbkoR135aoUdKG6Aizwcnp29RzsQpwH0nmy5nay17Sfbsh9oY8A==}
+ '@firebase/auth@1.13.1':
+ resolution: {integrity: sha512-/1nkKY/MicI+I9WWcx6R4NKs77AaW9NQ0IwsFdUBomWrW0/cXEmopfM2dtLm2oI1qG6z6vom3CXZDHJIJXoMuw==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app': 0.x
@@ -2116,141 +2116,141 @@ packages:
'@react-native-async-storage/async-storage':
optional: true
- '@firebase/component@0.7.2':
- resolution: {integrity: sha512-iyVDGc6Vjx7Rm0cAdccLH/NG6fADsgJak/XW9IA2lPf8AjIlsemOpFGKczYyPHxm4rnKdR8z6sK4+KEC7NwmEg==}
+ '@firebase/component@0.7.3':
+ resolution: {integrity: sha512-wFofIaa2879ogD/WvkjYXJxRmfnL0scen6ORgaC3na1FNOR9ASIUANQdhqQcmWu/h77/pVHY7ch5flewa5Bcew==}
engines: {node: '>=20.0.0'}
- '@firebase/data-connect@0.6.0':
- resolution: {integrity: sha512-OiugPRcdlhqXF97oR9CjVObILmsWU0dFUS0gXNYEe4bDfpW8pZmQ5GqhIPPtLWbT/0W2lMJJD7VILFMk+xuHPg==}
+ '@firebase/data-connect@0.7.0':
+ resolution: {integrity: sha512-ar9sNOJh5poQCSMSVlnVE8eo8+usTD1POWDCv65omkKUvnFMcdXaQ7J/e7WGKqJzcEMgiezSX/TZiKHZkItMbQ==}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/database-compat@2.1.3':
- resolution: {integrity: sha512-GMyfWjD8mehjg/QpNkY/tl9G/MoeugPeg91n9D0atggxbWuKF/2KhVPHZDH+XmoP0EKYqMWYTtKxBsaBaNKLYQ==}
+ '@firebase/database-compat@2.1.4':
+ resolution: {integrity: sha512-3pK35F1MAgmqFJQlf2nhQl44vtAXQO1uaCaQOEUI9kCRtLFqi7N+QRKR7lFZPg+xIZIyubgxQaxY69YgfZRZWg==}
engines: {node: '>=20.0.0'}
- '@firebase/database-types@1.0.19':
- resolution: {integrity: sha512-FqewjUZmV9LqFfuEnmgdcUpiOUz7qwLXxnm/H8BcMFEzQXtd1yyUDm8ex5VRad2nuTE+ahOuCjUAM/cyDncO+g==}
+ '@firebase/database-types@1.0.20':
+ resolution: {integrity: sha512-kegbOk/w8iU64pr0q6k2ItyNGjnQBMHFhwS7ohdWI4W+pc0/zhhdGXTdFj6X1oxItRjPoYOsSQmERgBkn/ihxw==}
- '@firebase/database@1.1.2':
- resolution: {integrity: sha512-lP96CMjMPy/+d1d9qaaHjHHdzdwvEOuyyLq9ehX89e2XMKwS1jHNzYBO+42bdSumuj5ukPbmnFtViZu8YOMT+w==}
+ '@firebase/database@1.1.3':
+ resolution: {integrity: sha512-XwWCa+E4TvNGpGwXrycLRNfdogADwFcvuhyow6wDWma9W54roaQIhe+4PM0KiLsIftBdSCGI7OKCXrdSRHbIhw==}
engines: {node: '>=20.0.0'}
- '@firebase/firestore-compat@0.4.8':
- resolution: {integrity: sha512-WK9NJRpnosGD2nuyjdr7K+Ht7AxRYJlTF62myI4rRA7ibJOosbecvjacR5oirJ7s1BgNS6qzcBw7n4fD3a5w1w==}
+ '@firebase/firestore-compat@0.4.9':
+ resolution: {integrity: sha512-NPtBuFr79BbIQJXFWhW4xFC6rBksK8/ewqCTYbbAYfZBDDx0/iHTUj4WpKi5D4d0Pn2Md/3T/e5V9379G5N/Zg==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/firestore-types@3.0.3':
- resolution: {integrity: sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==}
+ '@firebase/firestore-types@3.0.4':
+ resolution: {integrity: sha512-jGn+JSS4X9zZsrfu7Yw66v5YRdOLD1oyQh4USR0xWl4CUqV/DA6bNIXRPpxH/cUl3iVTNiP6MN7g+EL42A4qfA==}
peerDependencies:
'@firebase/app-types': 0.x
'@firebase/util': 1.x
- '@firebase/firestore@4.14.0':
- resolution: {integrity: sha512-bZc6YOjRkMBVA16527tgzi6iN9n//xRB3Mmx/R+Gr6UAP/+xrIKOejQIcn1hh+tCzNT8jO0jI+kWox5J4tB/qQ==}
+ '@firebase/firestore@4.14.1':
+ resolution: {integrity: sha512-PouS0NJZ3NYOZE/tPDvXa8VUeJ10Ll//7jIdFvMYdhQkd/P3O7nlqhyoTmY0h8Xa9hxg+H0j6gxUytJcoZ9YOg==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/functions-compat@0.4.3':
- resolution: {integrity: sha512-BxkEwWgx1of0tKaao/r2VR6WBLk/RAiyztatiONPrPE8gkitFkOnOCxf8i9cUyA5hX5RGt5H30uNn25Q6QNEmQ==}
+ '@firebase/functions-compat@0.4.4':
+ resolution: {integrity: sha512-Be+MwhseVf/eFAZwGrFJGok6S7cmsLrAPK8MgyM8LjM0MewTsx2n01WOOca9jio1UsCZOJ0aVyQobnINcdNuIQ==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/functions-types@0.6.3':
- resolution: {integrity: sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==}
+ '@firebase/functions-types@0.6.4':
+ resolution: {integrity: sha512-zV6kgqtduR4rUAdC/ilS7kmb93XD7bEZoJDlVBZqlOw2uGGGCNBQBuleww2rr0Ulr3L9o2TDjumEt68/l1f9DQ==}
- '@firebase/functions@0.13.3':
- resolution: {integrity: sha512-csO7ckK3SSs+NUZW1nms9EK7ckHe/1QOjiP8uAkCYa7ND18s44vjE9g3KxEeIUpyEPqZaX1EhJuFyZjHigAcYw==}
+ '@firebase/functions@0.13.4':
+ resolution: {integrity: sha512-oB5rpm2Emxn2+IS1gRelAeT/5tSZMwM/KhqC5LnJsmTNnS1ZDhD7ZMZNgCI8vchTW6PbaXIwEnpUryGuIQsNbg==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/installations-compat@0.2.21':
- resolution: {integrity: sha512-zahIUkaVKbR8zmTeBHkdfaVl6JGWlhVoSjF7CVH33nFqD3SlPEpEEegn2GNT5iAfsVdtlCyJJ9GW4YKjq+RJKQ==}
+ '@firebase/installations-compat@0.2.22':
+ resolution: {integrity: sha512-C/zpAuTP5S9OgKSPvXRupw3hoY/JZSlA1wFjD/Sb7LIQE0FNbcMdO8Y4KXVEkjVzma/DDDDIAzxEXqKMAzc88w==}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/installations-types@0.5.3':
- resolution: {integrity: sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==}
+ '@firebase/installations-types@0.5.4':
+ resolution: {integrity: sha512-U2eFapdHwjb43Vx9o+Pmj4dFfvcHEK1IirEFLqMtWrTHvmdrS3gBpBD1kmJk/9HjsOtoHZxJ2Paoe79e+L1ZPg==}
peerDependencies:
'@firebase/app-types': 0.x
- '@firebase/installations@0.6.21':
- resolution: {integrity: sha512-xGFGTeICJZ5vhrmmDukeczIcFULFXybojML2+QSDFoKj5A7zbGN7KzFGSKNhDkIxpjzsYG9IleJyUebuAcmqWA==}
+ '@firebase/installations@0.6.22':
+ resolution: {integrity: sha512-ef6nn3GGQTdReCfotRMG77PJZu8CqEbiK5pEoBnM0gTu/Z9v0i/az2p3HABsa/1beQmmyh1OsOjf7P5+pgwdZw==}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/logger@0.5.0':
- resolution: {integrity: sha512-cGskaAvkrnh42b3BA3doDWeBmuHFO/Mx5A83rbRDYakPjO9bJtRL3dX7javzc2Rr/JHZf4HlterTW2lUkfeN4g==}
+ '@firebase/logger@0.5.1':
+ resolution: {integrity: sha512-vZKLsqE1ABOy8OjQiE7cUTFn4gvaqlk88yp8N94Pk/sDpq61YqZGqmVFZTvOyflTwuYFcWirBdYGoJgbDaXKYQ==}
engines: {node: '>=20.0.0'}
- '@firebase/messaging-compat@0.2.25':
- resolution: {integrity: sha512-eoOQqGLtRlseTdiemTN44LlHZpltK5gnhq8XVUuLgtIOG+odtDzrz2UoTpcJWSzaJQVxNLb/x9f39tHdDM4N4w==}
+ '@firebase/messaging-compat@0.2.26':
+ resolution: {integrity: sha512-fn0XvWOfK4tsDLSipwJUW9Cp6ahWA6z+iJHxZ0pHp9MzMSUNQx85yuxZAuI7gkGXfqs7+DqEDHyyS7jDGswrmQ==}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/messaging-interop-types@0.2.3':
- resolution: {integrity: sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==}
+ '@firebase/messaging-interop-types@0.2.4':
+ resolution: {integrity: sha512-wrzITQq+xw5LtygX7O0fu43/k9ABQ4x5H9/sR5m1SbNnhIRI5xd3+raSNJaJkYC4BUhM9A4ZNSnyR2sjhxnb2Q==}
- '@firebase/messaging@0.12.25':
- resolution: {integrity: sha512-7RhDwoDHlOK1/ou0/LeubxmjcngsTjDdrY/ssg2vwAVpUuVAhQzQvuCAOYxcX5wNC1zCgQ54AP1vdngBwbCmOQ==}
+ '@firebase/messaging@0.12.26':
+ resolution: {integrity: sha512-lHVTO9uLofymHVWkYeUtMddIPcmJvSzVbHRB88W6XKfxbcKF+p3QrfqKhDxremSB4NQjUla1Gwn7d9umSMmt/w==}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/performance-compat@0.2.24':
- resolution: {integrity: sha512-YRlejH8wLt7ThWao+HXoKUHUrZKGYq+otxkPS+8nuE5PeN1cBXX7NAJl9ueuUkBwMIrnKdnDqL/voHXxDAAt3g==}
+ '@firebase/performance-compat@0.2.25':
+ resolution: {integrity: sha512-q6NjTXpIPoFuUmCmMN/maCdTgzT6aExs9xZo+PxfVLj6uLVGvpyAD6XWjmcrb7jChsFBYbq7E5dyNDF7Zhy9kA==}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/performance-types@0.2.3':
- resolution: {integrity: sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==}
+ '@firebase/performance-types@0.2.4':
+ resolution: {integrity: sha512-kJSEk7b0uhpcPRyL4SQ/GPujLqk52XNKcXlnsKDbWGAb9vugcLvOU3u6zfEdwd+d8hWJb5S5ZizV1JFFI0nkKg==}
- '@firebase/performance@0.7.11':
- resolution: {integrity: sha512-V3uAhrz7IYJuji+OgT3qYTGKxpek/TViXti9OSsUJ4AexZ3jQjYH5Yrn7JvBxk8MGiSLsC872hh+BxQiPZsm7g==}
+ '@firebase/performance@0.7.12':
+ resolution: {integrity: sha512-fe7nV8teUU3OBHlMUZ9Lw4gLhCW2k4m5Uc3pfWGV+fl8uwJQBGp9Q3lqsJ+HSrFu3Q2pJyLAgrClPGSKyDeYgQ==}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/remote-config-compat@0.2.23':
- resolution: {integrity: sha512-4+KqRRHEUUmKT6tFmnpWATOsaFfmSuBs1jXH8JzVtMLEYqq/WS9IDM92OdefFDSrAA2xGd0WN004z8mKeIIscw==}
+ '@firebase/remote-config-compat@0.2.24':
+ resolution: {integrity: sha512-EWZTt6fJ7YmPHodQNsSxAIDZY2x8P5kRPvXAc5CmzzBm+NyPFhODbfDsNllDXDL8jlzp50bVWjDY+BXepZS9Mg==}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/remote-config-types@0.5.0':
- resolution: {integrity: sha512-vI3bqLoF14L/GchtgayMiFpZJF+Ao3uR8WCde0XpYNkSokDpAKca2DxvcfeZv7lZUqkUwQPL2wD83d3vQ4vvrg==}
+ '@firebase/remote-config-types@0.5.1':
+ resolution: {integrity: sha512-cX/1LT6KQwkXzck2eSzeKnuvXZCyr8qaPpDcikoJs7jmI+oBOXixpDLeDtWj1U6GNMkIoXrEDNoyT2Ypcyp5/A==}
- '@firebase/remote-config@0.8.2':
- resolution: {integrity: sha512-5EXqOThV4upjK9D38d/qOSVwOqRhemlaOFk9vCkMNNALeIlwr+4pLjtLNo4qoY8etQmU/1q4aIATE9N8PFqg0g==}
+ '@firebase/remote-config@0.8.3':
+ resolution: {integrity: sha512-ggGKAaLy9YNOvpFoQZgm5p5SiFw3ZFtwti08dojnBQmQicpThTxvG5xZMSpCTYMj2o3gM/yK9CVd2w+kZub8YA==}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/storage-compat@0.4.2':
- resolution: {integrity: sha512-R+aB38wxCH5zjIO/xu9KznI7fgiPuZAG98uVm1NcidHyyupGgIDLKigGmRGBZMnxibe/m2oxNKoZpfEbUX2aQQ==}
+ '@firebase/storage-compat@0.4.3':
+ resolution: {integrity: sha512-gruVqjtUGX8tEoeNbaWXZm0Zfcfcb7fvmDmBxV8yPAbWvExRnZYLO2+qw9idxNE7BvPXt5csyjSYHy//dAizxw==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app-compat': 0.x
- '@firebase/storage-types@0.8.3':
- resolution: {integrity: sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==}
+ '@firebase/storage-types@0.8.4':
+ resolution: {integrity: sha512-BT7cwxJOx8SWwlQfrlC+bD/Sk3Cw+1odCi8UZNFNWTVZoPsBnA5W+mqtZzVnvsdJpXCFGSGQ7R7vOR6dtM/BRA==}
peerDependencies:
'@firebase/app-types': 0.x
'@firebase/util': 1.x
- '@firebase/storage@0.14.2':
- resolution: {integrity: sha512-o/culaTeJ8GRpKXRJov21rux/n9dRaSOWLebyatFP2sqEdCxQPjVA1H9Z2fzYwQxMIU0JVmC7SPPmU11v7L6vQ==}
+ '@firebase/storage@0.14.3':
+ resolution: {integrity: sha512-YX4/YL6P6/fufSSeGnVhjWddcIXbFq2cWIhMKFTZo1E/Rtcl2mJj/BYUQTwJfcE1Tl8un1FOya4L05jcSLN/Eg==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@firebase/app': 0.x
- '@firebase/util@1.15.0':
- resolution: {integrity: sha512-AmWf3cHAOMbrCPG4xdPKQaj5iHnyYfyLKZxwz+Xf55bqKbpAmcYifB4jQinT2W9XhDRHISOoPyBOariJpCG6FA==}
+ '@firebase/util@1.15.1':
+ resolution: {integrity: sha512-LUdM4Wg7YM9Pq/49nGYySJA0CSQEKnGffFzWV8+6gXN7mGxn+FL1IqvFbuZUtAQcfZgHYDwCE1wwlK7rB7gl2g==}
engines: {node: '>=20.0.0'}
- '@firebase/webchannel-wrapper@1.0.5':
- resolution: {integrity: sha512-+uGNN7rkfn41HLO0vekTFhTxk61eKa8mTpRGLO0QSqlQdKvIoGAvLp3ppdVIWbTGYJWM6Kp0iN+PjMIOcnVqTw==}
+ '@firebase/webchannel-wrapper@1.0.6':
+ resolution: {integrity: sha512-Vr/Mqu79dMwGRAyGbJ4uN4+BtXB3/mRTdzetD1daWNeG8QaWuzhhbG77GltO5c0yYmYls8i250iX73624GJd7Q==}
'@gar/promise-retry@1.0.3':
resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==}
@@ -2287,8 +2287,8 @@ packages:
resolution: {integrity: sha512-IJn+8A3QZJfe7FUtWqHVNo3xJs7KFpurCWGWCiCz3oEh+BkRymKZ1QxfAbU2yGMDzTytLGQ2IV6T2r3cuo75/w==}
engines: {node: '>=18'}
- '@google/genai@1.50.1':
- resolution: {integrity: sha512-YbkX7H9+1Pt8wOt7DDREy8XSoiL6fRDzZQRyaVBarFf8MR3zHGqVdvM4cLbDXqPhxqvegZShgfxb8kw9C7YhAQ==}
+ '@google/genai@1.52.0':
+ resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==}
engines: {node: '>=20.0.0'}
peerDependencies:
'@modelcontextprotocol/sdk': ^1.25.2
@@ -2309,8 +2309,8 @@ packages:
engines: {node: '>=6'}
hasBin: true
- '@grpc/proto-loader@0.8.0':
- resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==}
+ '@grpc/proto-loader@0.8.1':
+ resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==}
engines: {node: '>=6'}
hasBin: true
@@ -2347,8 +2347,8 @@ packages:
resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
- '@inquirer/checkbox@5.1.4':
- resolution: {integrity: sha512-w6KF8ZYRvqHhROkOTHXYC3qIV/KYEu5o12oLqQySvch61vrYtRxNSHTONSdJqWiFJPlCUQAHT5OgOIyuTr+MHQ==}
+ '@inquirer/checkbox@5.1.5':
+ resolution: {integrity: sha512-Jmf9tgBHIEK5SAOB7swYfStqmtkZb00xOTpSQmkoGEpdxOTpJi9RS0A8bkfDPHTTItZRJrRdZrEMu25wyj0VfQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2365,8 +2365,17 @@ packages:
'@types/node':
optional: true
- '@inquirer/core@11.1.9':
- resolution: {integrity: sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==}
+ '@inquirer/confirm@6.0.13':
+ resolution: {integrity: sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/core@11.1.10':
+ resolution: {integrity: sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2374,8 +2383,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/editor@5.1.1':
- resolution: {integrity: sha512-6y11LgmNpmn5D2aB5FgnCfBUBK8ZstwLCalyJmORcJZ/WrhOjm16mu6eSqIx8DnErxDqSLr+Jkp+GP8/Nwd5tA==}
+ '@inquirer/editor@5.1.2':
+ resolution: {integrity: sha512-Y3Nor7S/DhIPo+8Ym/dSY4efwKI4BsflKDwXh0jNeXJsSF3dteS/3Yf+z4wkibVZDvYMyCgknSTQlNahfunGHg==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2383,8 +2392,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/expand@5.0.13':
- resolution: {integrity: sha512-dF2zvrFo9LshkcB23/O1il13kBkBltWIXzut1evfbuBLXMiGIuC45c+ZQ0uukjCDsvI8OWqun4FRYMnzFCQa3g==}
+ '@inquirer/expand@5.0.14':
+ resolution: {integrity: sha512-qyY9zcIX2eKYwaAUiQo9zORd61Lc3sXeM72fVbeHkYnDkqfr8/armcRbmVAIrExeJhI2puk+uomeKtWrpUVUmQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2405,8 +2414,8 @@ packages:
resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
- '@inquirer/input@5.0.12':
- resolution: {integrity: sha512-uiMFBl4LqFzJClh80Q3f9hbOFJ6kgkDWI4LjAeBuyO6EanVVMF69AgOvpi1qdqjDSjDN6578B6nky9ceEpI+1Q==}
+ '@inquirer/input@5.0.13':
+ resolution: {integrity: sha512-0l0jCHlJnXIV8CTxwQC0C+5Ziq8WP22edWgmciW2xYvoeoSck4v5FvCS1ctKdqLLR0dUo93uAHgWHywgBSoRyw==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2414,8 +2423,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/number@4.0.12':
- resolution: {integrity: sha512-/vrwhEf7Xsuh+YlHF4IjSy3g1cyrQuPaSiHIxCEbLu8qnfvrcvJyCkoktOOF+xV9gSb77/G0n3h04RbMDW2sIg==}
+ '@inquirer/number@4.0.13':
+ resolution: {integrity: sha512-WHmkYnnJAou5gx7RgcvAfUggnHNM1zWfoh0dFPl3dxVssuqt+dK5rIbaOYQXNyOegvFnopbKupjnhw2O8gANNg==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2423,8 +2432,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/password@5.0.12':
- resolution: {integrity: sha512-CBh7YHju623lxJRcAOo498ZUwIuMy63bqW/vVq0tQAZVv+lkWlHkP9ealYE1utWSisEShY5VMdzIXRmyEODzcQ==}
+ '@inquirer/password@5.0.13':
+ resolution: {integrity: sha512-XDGu64ROHZjOOXLAANvJN7iIxWKhOSCG5VakrZ5kaScVR+snVJCFglD/hL3/677awtWcu4pXoWa280CDIYcBeg==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2441,8 +2450,17 @@ packages:
'@types/node':
optional: true
- '@inquirer/rawlist@5.2.8':
- resolution: {integrity: sha512-Su7FQvp5buZmCymN3PPoYv31ZQQX4ve2j02k7piGgKAWgE+AQRB5YoYVveGXcl3TZ9ldgRMSxj56YfDFmmaqLg==}
+ '@inquirer/prompts@8.4.3':
+ resolution: {integrity: sha512-ai5LseTw9HhegupIgmo4cn7RpnCGznjjXu4OI+7jMR8vu7T1ZCCNMzFFAovUCjL1fl0cceksIN1++yQE59SmZw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
+ peerDependencies:
+ '@types/node': '>=18'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+
+ '@inquirer/rawlist@5.2.9':
+ resolution: {integrity: sha512-a1ErXEfgjfPYpyQ89dp+7n2IISjH9oQg3ygvF5adz8B7aHn4n2PjEgu1wpVTp69K3bj3lVLxP0qJ2b1clk1Whw==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2450,8 +2468,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/search@4.1.8':
- resolution: {integrity: sha512-fGiHKGD6DyPIYUWxoXnQTeXeyYqSOUrasDMABBmMHUalH/LxkuzY0xVRtimXAt1sUeeyYkVuKQx1bebMuN11Kw==}
+ '@inquirer/search@4.1.9':
+ resolution: {integrity: sha512-ZlbM28Q9lmLkFPNAIv+ZuY530n5Km8U1WW48oYEvDhe9yc2uL3m3t+JSdRUkQlk5fuIuskgiIVjcb7czFzQpuA==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2459,8 +2477,8 @@ packages:
'@types/node':
optional: true
- '@inquirer/select@5.1.4':
- resolution: {integrity: sha512-2kWcGKPMLAXAWRp1AH1SLsQmX+j0QjeljyXMUji9WMZC8nRDO0b7qquIGr6143E7KMLt3VAIGNXzwa/6PXQs4Q==}
+ '@inquirer/select@5.1.5':
+ resolution: {integrity: sha512-6SRg6kHfK/sjLXOsuqNebuir+sjwrf/iWuRUnXgB2slzEewppI1WfzeS16XxDcOQmXBruMmmB9Cgrz7wsAxqMg==}
engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
@@ -2719,8 +2737,8 @@ packages:
cpu: [x64]
os: [win32]
- '@mswjs/interceptors@0.41.8':
- resolution: {integrity: sha512-pRLMNKTSGRoLq+KnEB/7OY5vijw1XmcheAAOiv6pj7W1FG32kAGqj1C/RK/cqxRGr1Fh+zBi8sDur8kj3EQv6A==}
+ '@mswjs/interceptors@0.41.9':
+ resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==}
engines: {node: '>=18'}
'@napi-rs/nice-android-arm-eabi@1.1.1':
@@ -2963,8 +2981,8 @@ packages:
resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
engines: {node: '>= 20'}
- '@octokit/request@10.0.8':
- resolution: {integrity: sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw==}
+ '@octokit/request@10.0.9':
+ resolution: {integrity: sha512-o8Bi3f608eyM+7BmBiUWxFsdjLb3/ym1cQek5LZOv9KkZcxRrHCPhhRzm6xjO6HVZ85ItD6+sTsjxo821SVa/A==}
engines: {node: '>= 20'}
'@octokit/rest@22.0.1':
@@ -2999,12 +3017,12 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/semantic-conventions@1.40.0':
- resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==}
+ '@opentelemetry/semantic-conventions@1.41.1':
+ resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==}
engines: {node: '>=14'}
- '@oxc-project/types@0.128.0':
- resolution: {integrity: sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==}
+ '@oxc-project/types@0.129.0':
+ resolution: {integrity: sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==}
'@parcel/watcher-android-arm64@2.5.6':
resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
@@ -3170,14 +3188,14 @@ packages:
'@protobufjs/eventemitter@1.1.0':
resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
- '@protobufjs/fetch@1.1.0':
- resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
+ '@protobufjs/fetch@1.1.1':
+ resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==}
'@protobufjs/float@1.0.2':
resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
- '@protobufjs/inquire@1.1.1':
- resolution: {integrity: sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==}
+ '@protobufjs/inquire@1.1.2':
+ resolution: {integrity: sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==}
'@protobufjs/path@1.1.2':
resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
@@ -3193,103 +3211,103 @@ packages:
engines: {node: '>=18'}
hasBin: true
- '@rolldown/binding-android-arm64@1.0.0-rc.18':
- resolution: {integrity: sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==}
+ '@rolldown/binding-android-arm64@1.0.0':
+ resolution: {integrity: sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@rolldown/binding-darwin-arm64@1.0.0-rc.18':
- resolution: {integrity: sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==}
+ '@rolldown/binding-darwin-arm64@1.0.0':
+ resolution: {integrity: sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.0-rc.18':
- resolution: {integrity: sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==}
+ '@rolldown/binding-darwin-x64@1.0.0':
+ resolution: {integrity: sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@rolldown/binding-freebsd-x64@1.0.0-rc.18':
- resolution: {integrity: sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==}
+ '@rolldown/binding-freebsd-x64@1.0.0':
+ resolution: {integrity: sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18':
- resolution: {integrity: sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0':
+ resolution: {integrity: sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18':
- resolution: {integrity: sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==}
+ '@rolldown/binding-linux-arm64-gnu@1.0.0':
+ resolution: {integrity: sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18':
- resolution: {integrity: sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==}
+ '@rolldown/binding-linux-arm64-musl@1.0.0':
+ resolution: {integrity: sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18':
- resolution: {integrity: sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==}
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0':
+ resolution: {integrity: sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18':
- resolution: {integrity: sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==}
+ '@rolldown/binding-linux-s390x-gnu@1.0.0':
+ resolution: {integrity: sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18':
- resolution: {integrity: sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==}
+ '@rolldown/binding-linux-x64-gnu@1.0.0':
+ resolution: {integrity: sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rolldown/binding-linux-x64-musl@1.0.0-rc.18':
- resolution: {integrity: sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==}
+ '@rolldown/binding-linux-x64-musl@1.0.0':
+ resolution: {integrity: sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rolldown/binding-openharmony-arm64@1.0.0-rc.18':
- resolution: {integrity: sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==}
+ '@rolldown/binding-openharmony-arm64@1.0.0':
+ resolution: {integrity: sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-wasm32-wasi@1.0.0-rc.18':
- resolution: {integrity: sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==}
+ '@rolldown/binding-wasm32-wasi@1.0.0':
+ resolution: {integrity: sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
- '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18':
- resolution: {integrity: sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==}
+ '@rolldown/binding-win32-arm64-msvc@1.0.0':
+ resolution: {integrity: sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18':
- resolution: {integrity: sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==}
+ '@rolldown/binding-win32-x64-msvc@1.0.0':
+ resolution: {integrity: sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
- '@rolldown/pluginutils@1.0.0-rc.18':
- resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==}
+ '@rolldown/pluginutils@1.0.0':
+ resolution: {integrity: sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==}
'@rollup/plugin-alias@6.0.0':
resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==}
@@ -3613,6 +3631,9 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
'@types/events@3.0.3':
resolution: {integrity: sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g==}
@@ -3676,11 +3697,11 @@ packages:
'@types/node-fetch@2.6.13':
resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==}
- '@types/node@22.19.17':
- resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==}
+ '@types/node@22.19.19':
+ resolution: {integrity: sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==}
- '@types/node@24.12.2':
- resolution: {integrity: sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==}
+ '@types/node@24.12.4':
+ resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==}
'@types/npm-package-arg@6.1.4':
resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==}
@@ -3706,8 +3727,8 @@ packages:
'@types/pumpify@1.4.5':
resolution: {integrity: sha512-BGVAQyK5yJdfIII230fVYGY47V63hUNAhryuuS3b4lEN2LNwxUXFKsEf8QLDCjmZuimlj23BHppJgcrGvNtqKg==}
- '@types/qs@6.15.0':
- resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==}
+ '@types/qs@6.15.1':
+ resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==}
'@types/range-parser@1.2.7':
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
@@ -3817,6 +3838,10 @@ packages:
resolution: {integrity: sha512-ZDCjgccSdYPw5Bxh+my4Z0lJU96ZDN7jbBzvmEn0FZx3RtU1C7VWl6NbDx94bwY3V5YsgwRzJPOgeY2Q/nLG8A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/types@8.59.4':
+ resolution: {integrity: sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/typescript-estree@8.59.1':
resolution: {integrity: sha512-OUd+vJS05sSkOip+BkZ/2NS8RMxrAAJemsC6vU3kmfLyeaJT0TftHkV9mcx2107MmsBVXXexhVu4F0TZXyMl4g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3842,10 +3867,6 @@ packages:
resolution: {integrity: sha512-SbmDMJpora293B+TDYfxJL5LEaFh7gdh0MmkPJCBkmGlRPmynTfHcQzVzAll3+IMYFkrf1zZtq/qlgorjaoFoQ==}
engines: {node: '>=18'}
- '@verdaccio/core@8.0.0':
- resolution: {integrity: sha512-bfJjO1AsLhmjpAG7eABmiA5U3ntGfcMCp4sqjejkkaXfNdl9lwqr5nXFT4NRS460StcsblUNhE1veZbepsxu2Q==}
- engines: {node: '>=18'}
-
'@verdaccio/core@8.0.0-next-8.21':
resolution: {integrity: sha512-n3Y8cqf84cwXxUUdTTfEJc8fV55PONPKijCt2YaC0jilb5qp1ieB3d4brqTOdCdXuwkmnG2uLCiGpUd/RuSW0Q==}
engines: {node: '>=18'}
@@ -3854,6 +3875,10 @@ packages:
resolution: {integrity: sha512-R8rDEa2mPjfHhEK2tWTMFnrfvyNmTd5ZrNz9X5/EiFVJPr/+oo9cTZkDXzY9+KREJUUIUFili4qynmBt0lw8nw==}
engines: {node: '>=18'}
+ '@verdaccio/core@8.1.0':
+ resolution: {integrity: sha512-rGJy2dnwVwx6QvQqh1YEfyjigX/pyKjMAqO+d6uDYGoBw8Y25sMmJqwuaZx8GTvC3HigcteZBHjkOxFiBgoNLQ==}
+ engines: {node: '>=18'}
+
'@verdaccio/file-locking@10.3.1':
resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==}
engines: {node: '>=12'}
@@ -4294,8 +4319,8 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
- bare-events@2.8.2:
- resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
+ bare-events@2.8.3:
+ resolution: {integrity: sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw==}
peerDependencies:
bare-abort-controller: '*'
peerDependenciesMeta:
@@ -4332,8 +4357,8 @@ packages:
bare-events:
optional: true
- bare-url@2.4.2:
- resolution: {integrity: sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==}
+ bare-url@2.4.3:
+ resolution: {integrity: sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -4342,8 +4367,8 @@ packages:
resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
engines: {node: ^4.5.0 || >= 5.9}
- baseline-browser-mapping@2.10.27:
- resolution: {integrity: sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==}
+ baseline-browser-mapping@2.10.31:
+ resolution: {integrity: sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -4403,8 +4428,8 @@ packages:
brace-expansion@2.1.0:
resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==}
- brace-expansion@5.0.5:
- resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==}
+ brace-expansion@5.0.6:
+ resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
engines: {node: 18 || 20 || >=22}
braces@3.0.3:
@@ -4493,8 +4518,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- caniuse-lite@1.0.30001791:
- resolution: {integrity: sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==}
+ caniuse-lite@1.0.30001793:
+ resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}
caseless@0.12.0:
resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
@@ -4660,6 +4685,10 @@ packages:
resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
engines: {node: '>= 0.6'}
+ content-type@2.0.0:
+ resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==}
+ engines: {node: '>=18'}
+
conventional-commits-filter@5.0.0:
resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==}
engines: {node: '>=18'}
@@ -4976,8 +5005,8 @@ packages:
engines: {node: '>=0.12.18'}
hasBin: true
- electron-to-chromium@1.5.349:
- resolution: {integrity: sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==}
+ electron-to-chromium@1.5.358:
+ resolution: {integrity: sha512-EO7tKm3QxRqTs1lSuPXzl6yRAwznehp0AH9OoMOIC+4mQzTFday8FJCO5KU6J/TFSQXEOahNq4vTKpz1jmCVOA==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -5017,8 +5046,8 @@ packages:
resolution: {integrity: sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==}
engines: {node: '>=10.2.0'}
- enhanced-resolve@5.21.0:
- resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==}
+ enhanced-resolve@5.21.4:
+ resolution: {integrity: sha512-wE4fDO8OjJhrPFH69HUQStq5oKvGRTNXEyW+k5C/pUQLASSsTu7obd2V3GvCDgPcY9AWjhJ4jz9Kh7iRvrxhJg==}
engines: {node: '>=10.13.0'}
ent@2.2.2:
@@ -5270,8 +5299,8 @@ packages:
express-rate-limit@5.5.1:
resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==}
- express-rate-limit@8.4.1:
- resolution: {integrity: sha512-NGVYwQSAyEQgzxX1iCM978PP9AdO/hW93gMcF6ZwQCm+rFvLsBH6w4xcXWTcliS8La5EPRN3p9wzItqBwJrfNw==}
+ express-rate-limit@8.5.2:
+ resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==}
engines: {node: '>= 16'}
peerDependencies:
express: '>= 4.11'
@@ -5280,6 +5309,10 @@ packages:
resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==}
engines: {node: '>= 0.10.0'}
+ express@4.22.2:
+ resolution: {integrity: sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==}
+ engines: {node: '>= 0.10.0'}
+
express@5.2.1:
resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==}
engines: {node: '>= 18'}
@@ -5321,8 +5354,8 @@ packages:
fast-string-width@3.0.2:
resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==}
- fast-uri@3.1.0:
- resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
+ fast-uri@3.1.2:
+ resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==}
fast-wrap-ansi@0.2.0:
resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==}
@@ -5386,8 +5419,8 @@ packages:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
- firebase@12.12.1:
- resolution: {integrity: sha512-ee7xA+bTJLfjB9BP/8FQr3EkxmpAAGc1lNc5QkWgTDpUw24HYXFPm7FEWRdLtGnygxIdYpFmepSc5VjkI6NHhw==}
+ firebase@12.13.0:
+ resolution: {integrity: sha512-iutR8ejvAqk6qUClnsPz3U3VIjTWp243AX4cD3iifak5t56to1J29xUIQgSDDzaAqKvhshZerzSahwMQj2TlvA==}
flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
@@ -5400,8 +5433,8 @@ packages:
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
- folder-hash@4.1.2:
- resolution: {integrity: sha512-rjdiHw3ShVonhMZZXvD/I28boUkbJFT/RBsg5MbQQd8e61PhevIwFwmL218/AscBEsW/blH4BC4A+kFeIqHVfw==}
+ folder-hash@4.1.3:
+ resolution: {integrity: sha512-94fj+fXj1XHT8zGumUy/VlyFARc/yrslKJ2+vjrP/U6ftTdL7u68+gQhvSBjz9wrwTuty6BpZ7JsbEK5OU9RNw==}
engines: {node: '>=10.10.0'}
hasBin: true
@@ -5500,8 +5533,8 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-east-asian-width@1.5.0:
- resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==}
+ get-east-asian-width@1.6.0:
+ resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
engines: {node: '>=18'}
get-intrinsic@1.3.0:
@@ -5528,9 +5561,6 @@ packages:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
- get-tsconfig@4.14.0:
- resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
-
get-uri@6.0.5:
resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==}
engines: {node: '>= 14'}
@@ -5609,8 +5639,8 @@ packages:
peerDependencies:
graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
- graphql@16.13.2:
- resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==}
+ graphql@16.14.0:
+ resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
grpc-gcp@1.0.1:
@@ -5658,8 +5688,8 @@ packages:
resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==}
engines: {node: '>= 0.4'}
- hono@4.12.16:
- resolution: {integrity: sha512-jN0ZewiNAWSe5khM3EyCmBb250+b40wWbwNILNfEvq84VREWwOIkuUsFONk/3i3nqkz7Oe1PcpM2mwQEK2L9Kg==}
+ hono@4.12.19:
+ resolution: {integrity: sha512-xa3eYXYXx68XTT4hZ7dRzsXBhaq85ToSrlUJNoR0gwz/1Ap/CNwX47wfvV7pc/xWhjKVVkLT7zBJy8chhNguqQ==}
engines: {node: '>=16.9.0'}
hosted-git-info@9.0.3:
@@ -5830,10 +5860,6 @@ packages:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
- ip-address@10.1.0:
- resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
- engines: {node: '>= 12'}
-
ip-address@10.2.0:
resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==}
engines: {node: '>= 12'}
@@ -5873,8 +5899,8 @@ packages:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
- is-core-module@2.16.1:
- resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ is-core-module@2.16.2:
+ resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
engines: {node: '>= 0.4'}
is-data-view@1.0.2:
@@ -5945,8 +5971,8 @@ packages:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
- is-network-error@1.3.1:
- resolution: {integrity: sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==}
+ is-network-error@1.3.2:
+ resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==}
engines: {node: '>=16'}
is-node-process@1.2.0:
@@ -6123,8 +6149,8 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
- jiti@2.6.1:
- resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
+ jiti@2.7.0:
+ resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
jose@6.2.3:
@@ -6396,8 +6422,8 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lru-cache@11.3.5:
- resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
+ lru-cache@11.4.0:
+ resolution: {integrity: sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==}
engines: {node: 20 || >=22}
lru-cache@5.1.1:
@@ -6410,8 +6436,8 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- magicast@0.5.2:
- resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==}
+ magicast@0.5.3:
+ resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==}
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
@@ -6653,9 +6679,9 @@ packages:
resolution: {integrity: sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==}
engines: {node: '>= 0.4.0'}
- ng-packagr@22.0.0-next.3:
- resolution: {integrity: sha512-M4h0PxrWLJSlJ8TCaH5Y5ZDBeRJvSQTe9FlsyMVMSjo/1fPYG16a/qkMbv/EYO0+LCrooRS+DdRjKx13b6P15A==}
- engines: {node: ^22.22.0 || >=24.13.1}
+ ng-packagr@22.0.0-rc.0:
+ resolution: {integrity: sha512-5R/axgfRB500l2fhFMVdjqZB2FhEgxHIKIauSsFBFTeJ3XbODKsQZiVya2P8/LTXEQRit1tOkvjYYB9iwlrPZg==}
+ engines: {node: ^22.22.0 || ^24.13.1 || >=26.0.0}
hasBin: true
peerDependencies:
'@angular/compiler-cli': ^22.0.0-next.3
@@ -6666,8 +6692,8 @@ packages:
tailwindcss:
optional: true
- nock@14.0.13:
- resolution: {integrity: sha512-SCPsQmGVNY8h1rfS3aU0MzOGYY+wKIFukHEsoSIwPRCYocZkya7MFIlWIEYPWQZj+Gaksg6EyUaY255ZDqpQuA==}
+ nock@14.0.15:
+ resolution: {integrity: sha512-S0a47C9pLvcYx/Ugf0H30BVBEcUgMMBDk9VJIDlJ8XGrfH2QDUD4Tgdp45qDIiHttokBG+IbsOtsvIjGR/j3bg==}
engines: {node: '>=18.20.0 <20 || >=20.12.1'}
node-addon-api@6.1.0:
@@ -6723,8 +6749,8 @@ packages:
engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true
- node-releases@2.0.38:
- resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==}
+ node-releases@2.0.44:
+ resolution: {integrity: sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==}
nopt@9.0.0:
resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==}
@@ -7109,6 +7135,10 @@ packages:
resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.14:
+ resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==}
+ engines: {node: ^10 || ^12 || >=14}
+
powershell-utils@0.1.0:
resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
engines: {node: '>=20'}
@@ -7151,8 +7181,8 @@ packages:
resolution: {integrity: sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==}
engines: {node: '>=18'}
- protobufjs@7.5.6:
- resolution: {integrity: sha512-M71sTMB146U3u0di3yup8iM+zv8yPRNQVr1KK4tyBitl3qFvEGucq/rGDRShD2rsJhtN02RJaJ7j5X5hmy8SJg==}
+ protobufjs@7.6.0:
+ resolution: {integrity: sha512-LtESOsMPTZgyYtwxhvdgdjGL0HmXEaRA/hVD6sol4zA60hVXXXP/SGmxnqDbgGE8gy7pYex7cym+5vYPcmaXBQ==}
engines: {node: '>=12.0.0'}
proxy-addr@2.0.7:
@@ -7209,8 +7239,8 @@ packages:
resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==}
engines: {node: '>=0.6'}
- qs@6.15.1:
- resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==}
+ qs@6.15.2:
+ resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==}
engines: {node: '>=0.6'}
queue-microtask@1.2.3:
@@ -7319,9 +7349,6 @@ packages:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
- resolve-pkg-maps@1.0.0:
- resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
-
resolve-url-loader@5.0.0:
resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==}
engines: {node: '>=12'}
@@ -7331,8 +7358,8 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
- resolve@2.0.0-next.6:
- resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==}
+ resolve@2.0.0-next.7:
+ resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==}
engines: {node: '>= 0.4'}
hasBin: true
@@ -7371,8 +7398,8 @@ packages:
resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
hasBin: true
- rolldown@1.0.0-rc.18:
- resolution: {integrity: sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==}
+ rolldown@1.0.0:
+ resolution: {integrity: sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -7507,6 +7534,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.8.0:
+ resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==}
+ engines: {node: '>=10'}
+ hasBin: true
+
send@0.19.2:
resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==}
engines: {node: '>= 0.8.0'}
@@ -7629,8 +7661,8 @@ packages:
resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
engines: {node: '>= 14'}
- socks@2.8.8:
- resolution: {integrity: sha512-NlGELfPrgX2f1TAAcz0WawlLn+0r3FyhhCRpFFK2CemXenPYvzMWWZINv3eDNo9ucdwme7oCHRY0Jnbs4aIkog==}
+ socks@2.8.9:
+ resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
sonic-boom@3.8.1:
@@ -7847,8 +7879,8 @@ packages:
tar-stream@3.2.0:
resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
- tar@7.5.13:
- resolution: {integrity: sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==}
+ tar@7.5.15:
+ resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==}
engines: {node: '>=18'}
teeny-request@10.1.2:
@@ -7858,19 +7890,46 @@ packages:
teex@1.0.1:
resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
- terser-webpack-plugin@5.5.0:
- resolution: {integrity: sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==}
+ terser-webpack-plugin@5.6.0:
+ resolution: {integrity: sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
+ '@minify-html/node': '*'
'@swc/core': '*'
+ '@swc/css': '*'
+ '@swc/html': '*'
+ clean-css: '*'
+ cssnano: '*'
+ csso: '*'
esbuild: '*'
+ html-minifier-terser: '*'
+ lightningcss: '*'
+ postcss: '*'
uglify-js: '*'
webpack: ^5.1.0
peerDependenciesMeta:
+ '@minify-html/node':
+ optional: true
'@swc/core':
optional: true
+ '@swc/css':
+ optional: true
+ '@swc/html':
+ optional: true
+ clean-css:
+ optional: true
+ cssnano:
+ optional: true
+ csso:
+ optional: true
esbuild:
optional: true
+ html-minifier-terser:
+ optional: true
+ lightningcss:
+ optional: true
+ postcss:
+ optional: true
uglify-js:
optional: true
@@ -7943,9 +8002,9 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- toad-cache@3.7.0:
- resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
- engines: {node: '>=12'}
+ toad-cache@3.7.1:
+ resolution: {integrity: sha512-5DXWzE4Vz7xNHsv+xQ+MGfJYyC78Aok3tEr0MNwHoRf7vZnga1mQXZ4/Nsodld4VR6Wd+VhfmqnNrsRJyYPfrQ==}
+ engines: {node: '>=20'}
toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
@@ -7987,8 +8046,8 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsx@4.21.0:
- resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
+ tsx@4.22.3:
+ resolution: {integrity: sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -8021,9 +8080,9 @@ packages:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
- type-is@2.0.1:
- resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
- engines: {node: '>= 0.6'}
+ type-is@2.1.0:
+ resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==}
+ engines: {node: '>= 18'}
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
@@ -8176,8 +8235,8 @@ packages:
resolution: {integrity: sha512-ckn4xxNEkK5lflwb8a6xs2j6rVe//9sEH4rJHBqh2RelKYnFkxHbnN06gsdV2KtqSKDD9F4NE2UDA9SSs8E90w==}
engines: {node: '>=18'}
- verdaccio-auth-memory@13.0.0:
- resolution: {integrity: sha512-83nPBvWTR14XSsz9Yx5ICl4jtSE+/1PecUstYa9d2PJEzcCwWizlUCUq0xGOXA0rGaCHim5h9C/t6rzyNoQsFw==}
+ verdaccio-auth-memory@13.0.1:
+ resolution: {integrity: sha512-bZTf2AIYZPofCYybZ/XCQghMGb0p99w12D3/IMlkfkU2oVaRr0o1ixbYlyBE4Lef2P3wDWvBUrtVTQ8ctEWMWA==}
engines: {node: '>=18'}
verdaccio-htpasswd@13.0.0-next-8.37:
@@ -8416,6 +8475,11 @@ packages:
engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true
+ which@7.0.0:
+ resolution: {integrity: sha512-RancgH2dmbLdHl6LRhEqvklWMgl/Hdnun0Y90KhBOLkMefg8Qa7/Zel8Sm+8HEcP6DEjzsWzpkuBQEZok58isA==}
+ engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0}
+ hasBin: true
+
why-is-node-running@2.3.0:
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
@@ -8462,8 +8526,8 @@ packages:
utf-8-validate:
optional: true
- ws@8.20.0:
- resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==}
+ ws@8.20.1:
+ resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -8515,13 +8579,8 @@ packages:
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
engines: {node: '>=18'}
- yaml@2.8.3:
- resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==}
- engines: {node: '>= 14.6'}
- hasBin: true
-
- yaml@2.8.4:
- resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==}
+ yaml@2.9.0:
+ resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==}
engines: {node: '>= 14.6'}
hasBin: true
@@ -8571,8 +8630,8 @@ packages:
zod@4.4.2:
resolution: {integrity: sha512-IynmDyxsEsb9RKzO3J9+4SxXnl2FTFSzNBaKKaMV6tsSk0rw9gYw9gs+JFCq/qk2LCZ78KDwyj+Z289TijSkUw==}
- zone.js@0.16.1:
- resolution: {integrity: sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==}
+ zone.js@0.16.2:
+ resolution: {integrity: sha512-Eky7p2Z1Ig3NnbfodSPoARCjKBSTFMnE/ACsP1L/XJEfY4SdOFce19BsUCWVwL6K5ABZFy5J3bjcMWffX+YM3Q==}
snapshots:
@@ -8681,29 +8740,29 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
- '@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))':
+ '@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))':
dependencies:
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
tslib: 2.8.1
- '@angular/cdk@22.0.0-next.7(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/cdk@22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
+ '@angular/platform-browser': 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
parse5: 8.0.1
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
+ '@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)':
dependencies:
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3)':
+ '@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3)':
dependencies:
- '@angular/compiler': 22.0.0-next.10
+ '@angular/compiler': 22.0.0-rc.1
'@babel/core': 7.29.0
'@jridgewell/sourcemap-codec': 1.5.5
chokidar: 5.0.0
@@ -8717,32 +8776,32 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@angular/compiler@22.0.0-next.10':
+ '@angular/compiler@22.0.0-rc.1':
dependencies:
tslib: 2.8.1
- '@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)':
+ '@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)':
dependencies:
rxjs: 7.8.2
tslib: 2.8.1
optionalDependencies:
- '@angular/compiler': 22.0.0-next.10
- zone.js: 0.16.1
+ '@angular/compiler': 22.0.0-rc.1
+ zone.js: 0.16.2
- '@angular/forms@22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/forms@22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
+ '@angular/platform-browser': 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
'@standard-schema/spec': 1.1.0
rxjs: 7.8.2
tslib: 2.8.1
zod: 4.4.2
- '@angular/localize@22.0.0-next.10(@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3))(@angular/compiler@22.0.0-next.10)':
+ '@angular/localize@22.0.0-rc.1(@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3))(@angular/compiler@22.0.0-rc.1)':
dependencies:
- '@angular/compiler': 22.0.0-next.10
- '@angular/compiler-cli': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3)
+ '@angular/compiler': 22.0.0-rc.1
+ '@angular/compiler-cli': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3)
'@babel/core': 7.29.0
'@types/babel__core': 7.20.5
tinyglobby: 0.2.16
@@ -8750,24 +8809,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@angular/material@22.0.0-next.7(1ee8d5fdc2f291e5a1da1bc147744133)':
+ '@angular/material@22.0.0-rc.1(1accdefd456d74b3b7d2dbdb1ea5e0bc)':
dependencies:
- '@angular/cdk': 22.0.0-next.7(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
- '@angular/common': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/forms': 22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)
- '@angular/platform-browser': 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/cdk': 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
+ '@angular/common': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
+ '@angular/forms': 22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)
+ '@angular/platform-browser': 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/4de8a14a1682d0f07e0b14a3b26498757c195904(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))':
+ '@angular/ng-dev@https://codeload.github.com/angular/dev-infra-private-ng-dev-builds/tar.gz/849693f516dcd7811143830933a71dbd501aceb2(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))':
dependencies:
'@actions/core': 3.0.1
'@conventional-changelog/git-client': 2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)
'@google-cloud/spanner': 8.0.0(supports-color@10.2.2)
- '@google/genai': 1.50.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)
- '@inquirer/prompts': 8.4.2(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)
+ '@inquirer/prompts': 8.4.3(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
'@octokit/auth-app': 8.2.0
'@octokit/core': 7.0.6
'@octokit/graphql': 9.0.3
@@ -8784,7 +8843,7 @@ snapshots:
'@types/events': 3.0.3
'@types/folder-hash': 4.0.4
'@types/jasmine': 6.0.0
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
'@types/semver': 7.7.1
'@types/which': 3.0.4
'@types/yargs': 17.0.35
@@ -8797,66 +8856,66 @@ snapshots:
ejs: 5.0.2
encoding: 0.1.13
fast-glob: 3.3.3
- firebase: 12.12.1
- folder-hash: 4.1.2(supports-color@10.2.2)
+ firebase: 12.13.0
+ folder-hash: 4.1.3(supports-color@10.2.2)
jasmine: 6.2.0
jasmine-core: 6.2.0
jasmine-reporters: 2.5.2
jsonc-parser: 3.3.1
minimatch: 10.2.5
multimatch: 8.0.0
- nock: 14.0.13
- semver: 7.7.4
+ nock: 14.0.15
+ semver: 7.8.0
supports-color: 10.2.2
- tsx: 4.21.0
+ tsx: 4.22.3
typed-graphqlify: 3.1.6
typescript: 6.0.3
utf-8-validate: 6.0.6
- which: 6.0.1
- yaml: 2.8.3
+ which: 7.0.0
+ yaml: 2.9.0
yargs: 18.0.0
zod: 4.4.2
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
- '@react-native-async-storage/async-storage'
- '@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))':
+ '@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))':
dependencies:
- '@angular/common': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/common': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
tslib: 2.8.1
optionalDependencies:
- '@angular/animations': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/animations': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
- '@angular/platform-server@22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@22.0.0-next.10)(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/platform-server@22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/compiler@22.0.0-rc.1)(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/compiler': 22.0.0-next.10
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
+ '@angular/compiler': 22.0.0-rc.1
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
+ '@angular/platform-browser': 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
rxjs: 7.8.2
tslib: 2.8.1
xhr2: 0.2.1
- '@angular/router@22.0.0-next.10(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)':
+ '@angular/router@22.0.0-rc.1(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(@angular/platform-browser@22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(rxjs@7.8.2)':
dependencies:
- '@angular/common': 22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
- '@angular/platform-browser': 22.0.0-next.10(@angular/animations@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))
+ '@angular/common': 22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
+ '@angular/platform-browser': 22.0.0-rc.1(@angular/animations@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)))(@angular/common@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2))(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))
rxjs: 7.8.2
tslib: 2.8.1
- '@angular/service-worker@22.0.0-next.10(@angular/core@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)':
+ '@angular/service-worker@22.0.0-rc.1(@angular/core@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2)':
dependencies:
- '@angular/core': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(rxjs@7.8.2)(zone.js@0.16.1)
+ '@angular/core': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(rxjs@7.8.2)(zone.js@0.16.2)
rxjs: 7.8.2
tslib: 2.8.1
'@asamuzakjp/css-color@5.1.11':
dependencies:
'@asamuzakjp/generational-cache': 1.0.1
- '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
- '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-color-parser': 4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
@@ -9265,7 +9324,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-systemjs@7.29.0(@babel/core@7.29.0)':
+ '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
'@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
@@ -9484,7 +9543,7 @@ snapshots:
'@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.29.0)
'@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.29.0)
'@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
- '@babel/plugin-transform-modules-systemjs': 7.29.0(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.0)
'@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.29.0)
'@babel/plugin-transform-named-capturing-groups-regex': 7.29.0(@babel/core@7.29.0)
'@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.29.0)
@@ -9576,15 +9635,15 @@ snapshots:
'@csstools/color-helpers@6.0.2': {}
- '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
dependencies:
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
- '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ '@csstools/css-color-parser@4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
dependencies:
'@csstools/color-helpers': 6.0.2
- '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
@@ -9592,7 +9651,7 @@ snapshots:
dependencies:
'@csstools/css-tokenizer': 4.0.0
- '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)':
+ '@csstools/css-syntax-patches-for-csstree@1.1.4(css-tree@3.2.1)':
optionalDependencies:
css-tree: 3.2.1
@@ -9793,18 +9852,18 @@ snapshots:
'@esbuild/win32-x64@0.28.0':
optional: true
- '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.6.1))':
+ '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.7.0))':
dependencies:
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.2': {}
- '@eslint/compat@2.0.5(eslint@10.3.0(jiti@2.6.1))':
+ '@eslint/compat@2.0.5(eslint@10.3.0(jiti@2.7.0))':
dependencies:
'@eslint/core': 1.2.1
optionalDependencies:
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
'@eslint/config-array@0.23.5':
dependencies:
@@ -9836,9 +9895,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@10.0.1(eslint@10.3.0(jiti@2.6.1))':
+ '@eslint/js@10.0.1(eslint@10.3.0(jiti@2.7.0))':
optionalDependencies:
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
'@eslint/object-schema@3.0.5': {}
@@ -9849,325 +9908,325 @@ snapshots:
'@exodus/bytes@1.15.0': {}
- '@firebase/ai@2.11.1(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)':
+ '@firebase/ai@2.12.0(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/app-check-interop-types': 0.3.3
- '@firebase/app-types': 0.9.4
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/app-check-interop-types': 0.3.4
+ '@firebase/app-types': 0.9.5
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/analytics-compat@0.2.27(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)':
+ '@firebase/analytics-compat@0.2.28(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/analytics': 0.10.21(@firebase/app@0.14.11)
- '@firebase/analytics-types': 0.8.3
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/util': 1.15.0
+ '@firebase/analytics': 0.10.22(@firebase/app@0.14.12)
+ '@firebase/analytics-types': 0.8.4
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/analytics-types@0.8.3': {}
+ '@firebase/analytics-types@0.8.4': {}
- '@firebase/analytics@0.10.21(@firebase/app@0.14.11)':
+ '@firebase/analytics@0.10.22(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/installations': 0.6.21(@firebase/app@0.14.11)
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/installations': 0.6.22(@firebase/app@0.14.12)
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/app-check-compat@0.4.2(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)':
+ '@firebase/app-check-compat@0.4.3(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-check': 0.11.2(@firebase/app@0.14.11)
- '@firebase/app-check-types': 0.5.3
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app-check': 0.11.3(@firebase/app@0.14.12)
+ '@firebase/app-check-types': 0.5.4
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/app-check-interop-types@0.3.3': {}
+ '@firebase/app-check-interop-types@0.3.4': {}
- '@firebase/app-check-types@0.5.3': {}
+ '@firebase/app-check-types@0.5.4': {}
- '@firebase/app-check@0.11.2(@firebase/app@0.14.11)':
+ '@firebase/app-check@0.11.3(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/app-compat@0.5.11':
+ '@firebase/app-compat@0.5.12':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/app-types@0.9.4':
+ '@firebase/app-types@0.9.5':
dependencies:
- '@firebase/logger': 0.5.0
+ '@firebase/logger': 0.5.1
- '@firebase/app@0.14.11':
+ '@firebase/app@0.14.12':
dependencies:
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
idb: 7.1.1
tslib: 2.8.1
- '@firebase/auth-compat@0.6.5(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)':
+ '@firebase/auth-compat@0.6.6(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/auth': 1.13.0(@firebase/app@0.14.11)
- '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.4)(@firebase/util@1.15.0)
- '@firebase/component': 0.7.2
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/auth': 1.13.1(@firebase/app@0.14.12)
+ '@firebase/auth-types': 0.13.1(@firebase/app-types@0.9.5)(@firebase/util@1.15.1)
+ '@firebase/component': 0.7.3
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/app-types'
- '@react-native-async-storage/async-storage'
- '@firebase/auth-interop-types@0.2.4': {}
+ '@firebase/auth-interop-types@0.2.5': {}
- '@firebase/auth-types@0.13.0(@firebase/app-types@0.9.4)(@firebase/util@1.15.0)':
+ '@firebase/auth-types@0.13.1(@firebase/app-types@0.9.5)(@firebase/util@1.15.1)':
dependencies:
- '@firebase/app-types': 0.9.4
- '@firebase/util': 1.15.0
+ '@firebase/app-types': 0.9.5
+ '@firebase/util': 1.15.1
- '@firebase/auth@1.13.0(@firebase/app@0.14.11)':
+ '@firebase/auth@1.13.1(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/component@0.7.2':
+ '@firebase/component@0.7.3':
dependencies:
- '@firebase/util': 1.15.0
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/data-connect@0.6.0(@firebase/app@0.14.11)':
+ '@firebase/data-connect@0.7.0(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/auth-interop-types': 0.2.4
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/auth-interop-types': 0.2.5
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/database-compat@2.1.3':
+ '@firebase/database-compat@2.1.4':
dependencies:
- '@firebase/component': 0.7.2
- '@firebase/database': 1.1.2
- '@firebase/database-types': 1.0.19
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/component': 0.7.3
+ '@firebase/database': 1.1.3
+ '@firebase/database-types': 1.0.20
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/database-types@1.0.19':
+ '@firebase/database-types@1.0.20':
dependencies:
- '@firebase/app-types': 0.9.4
- '@firebase/util': 1.15.0
+ '@firebase/app-types': 0.9.5
+ '@firebase/util': 1.15.1
- '@firebase/database@1.1.2':
+ '@firebase/database@1.1.3':
dependencies:
- '@firebase/app-check-interop-types': 0.3.3
- '@firebase/auth-interop-types': 0.2.4
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app-check-interop-types': 0.3.4
+ '@firebase/auth-interop-types': 0.2.5
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
faye-websocket: 0.11.4
tslib: 2.8.1
- '@firebase/firestore-compat@0.4.8(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)':
+ '@firebase/firestore-compat@0.4.9(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/firestore': 4.14.0(@firebase/app@0.14.11)
- '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.4)(@firebase/util@1.15.0)
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/firestore': 4.14.1(@firebase/app@0.14.12)
+ '@firebase/firestore-types': 3.0.4(@firebase/app-types@0.9.5)(@firebase/util@1.15.1)
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/app-types'
- '@firebase/firestore-types@3.0.3(@firebase/app-types@0.9.4)(@firebase/util@1.15.0)':
+ '@firebase/firestore-types@3.0.4(@firebase/app-types@0.9.5)(@firebase/util@1.15.1)':
dependencies:
- '@firebase/app-types': 0.9.4
- '@firebase/util': 1.15.0
+ '@firebase/app-types': 0.9.5
+ '@firebase/util': 1.15.1
- '@firebase/firestore@4.14.0(@firebase/app@0.14.11)':
+ '@firebase/firestore@4.14.1(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
- '@firebase/webchannel-wrapper': 1.0.5
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
+ '@firebase/webchannel-wrapper': 1.0.6
'@grpc/grpc-js': 1.9.15
'@grpc/proto-loader': 0.7.15
tslib: 2.8.1
- '@firebase/functions-compat@0.4.3(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)':
+ '@firebase/functions-compat@0.4.4(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/functions': 0.13.3(@firebase/app@0.14.11)
- '@firebase/functions-types': 0.6.3
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/functions': 0.13.4(@firebase/app@0.14.12)
+ '@firebase/functions-types': 0.6.4
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/functions-types@0.6.3': {}
+ '@firebase/functions-types@0.6.4': {}
- '@firebase/functions@0.13.3(@firebase/app@0.14.11)':
+ '@firebase/functions@0.13.4(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/app-check-interop-types': 0.3.3
- '@firebase/auth-interop-types': 0.2.4
- '@firebase/component': 0.7.2
- '@firebase/messaging-interop-types': 0.2.3
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/app-check-interop-types': 0.3.4
+ '@firebase/auth-interop-types': 0.2.5
+ '@firebase/component': 0.7.3
+ '@firebase/messaging-interop-types': 0.2.4
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/installations-compat@0.2.21(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)':
+ '@firebase/installations-compat@0.2.22(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/installations': 0.6.21(@firebase/app@0.14.11)
- '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.4)
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/installations': 0.6.22(@firebase/app@0.14.12)
+ '@firebase/installations-types': 0.5.4(@firebase/app-types@0.9.5)
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/app-types'
- '@firebase/installations-types@0.5.3(@firebase/app-types@0.9.4)':
+ '@firebase/installations-types@0.5.4(@firebase/app-types@0.9.5)':
dependencies:
- '@firebase/app-types': 0.9.4
+ '@firebase/app-types': 0.9.5
- '@firebase/installations@0.6.21(@firebase/app@0.14.11)':
+ '@firebase/installations@0.6.22(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/util': 1.15.1
idb: 7.1.1
tslib: 2.8.1
- '@firebase/logger@0.5.0':
+ '@firebase/logger@0.5.1':
dependencies:
tslib: 2.8.1
- '@firebase/messaging-compat@0.2.25(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)':
+ '@firebase/messaging-compat@0.2.26(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/messaging': 0.12.25(@firebase/app@0.14.11)
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/messaging': 0.12.26(@firebase/app@0.14.12)
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/messaging-interop-types@0.2.3': {}
+ '@firebase/messaging-interop-types@0.2.4': {}
- '@firebase/messaging@0.12.25(@firebase/app@0.14.11)':
+ '@firebase/messaging@0.12.26(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/installations': 0.6.21(@firebase/app@0.14.11)
- '@firebase/messaging-interop-types': 0.2.3
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/installations': 0.6.22(@firebase/app@0.14.12)
+ '@firebase/messaging-interop-types': 0.2.4
+ '@firebase/util': 1.15.1
idb: 7.1.1
tslib: 2.8.1
- '@firebase/performance-compat@0.2.24(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)':
+ '@firebase/performance-compat@0.2.25(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/performance': 0.7.11(@firebase/app@0.14.11)
- '@firebase/performance-types': 0.2.3
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/performance': 0.7.12(@firebase/app@0.14.12)
+ '@firebase/performance-types': 0.2.4
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/performance-types@0.2.3': {}
+ '@firebase/performance-types@0.2.4': {}
- '@firebase/performance@0.7.11(@firebase/app@0.14.11)':
+ '@firebase/performance@0.7.12(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/installations': 0.6.21(@firebase/app@0.14.11)
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/installations': 0.6.22(@firebase/app@0.14.12)
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
web-vitals: 4.2.4
- '@firebase/remote-config-compat@0.2.23(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)':
+ '@firebase/remote-config-compat@0.2.24(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/logger': 0.5.0
- '@firebase/remote-config': 0.8.2(@firebase/app@0.14.11)
- '@firebase/remote-config-types': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/logger': 0.5.1
+ '@firebase/remote-config': 0.8.3(@firebase/app@0.14.12)
+ '@firebase/remote-config-types': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/remote-config-types@0.5.0': {}
+ '@firebase/remote-config-types@0.5.1': {}
- '@firebase/remote-config@0.8.2(@firebase/app@0.14.11)':
+ '@firebase/remote-config@0.8.3(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/installations': 0.6.21(@firebase/app@0.14.11)
- '@firebase/logger': 0.5.0
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/installations': 0.6.22(@firebase/app@0.14.12)
+ '@firebase/logger': 0.5.1
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/storage-compat@0.4.2(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)':
+ '@firebase/storage-compat@0.4.3(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app-compat': 0.5.11
- '@firebase/component': 0.7.2
- '@firebase/storage': 0.14.2(@firebase/app@0.14.11)
- '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.4)(@firebase/util@1.15.0)
- '@firebase/util': 1.15.0
+ '@firebase/app-compat': 0.5.12
+ '@firebase/component': 0.7.3
+ '@firebase/storage': 0.14.3(@firebase/app@0.14.12)
+ '@firebase/storage-types': 0.8.4(@firebase/app-types@0.9.5)(@firebase/util@1.15.1)
+ '@firebase/util': 1.15.1
tslib: 2.8.1
transitivePeerDependencies:
- '@firebase/app'
- '@firebase/app-types'
- '@firebase/storage-types@0.8.3(@firebase/app-types@0.9.4)(@firebase/util@1.15.0)':
+ '@firebase/storage-types@0.8.4(@firebase/app-types@0.9.5)(@firebase/util@1.15.1)':
dependencies:
- '@firebase/app-types': 0.9.4
- '@firebase/util': 1.15.0
+ '@firebase/app-types': 0.9.5
+ '@firebase/util': 1.15.1
- '@firebase/storage@0.14.2(@firebase/app@0.14.11)':
+ '@firebase/storage@0.14.3(@firebase/app@0.14.12)':
dependencies:
- '@firebase/app': 0.14.11
- '@firebase/component': 0.7.2
- '@firebase/util': 1.15.0
+ '@firebase/app': 0.14.12
+ '@firebase/component': 0.7.3
+ '@firebase/util': 1.15.1
tslib: 2.8.1
- '@firebase/util@1.15.0':
+ '@firebase/util@1.15.1':
dependencies:
tslib: 2.8.1
- '@firebase/webchannel-wrapper@1.0.5': {}
+ '@firebase/webchannel-wrapper@1.0.6': {}
'@gar/promise-retry@1.0.3': {}
@@ -10207,7 +10266,7 @@ snapshots:
'@opentelemetry/api': 1.9.1
'@opentelemetry/context-async-hooks': 2.7.1(@opentelemetry/api@1.9.1)
'@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1)
- '@opentelemetry/semantic-conventions': 1.40.0
+ '@opentelemetry/semantic-conventions': 1.41.1
'@types/big.js': 6.2.2
'@types/stack-trace': 0.0.33
big.js: 7.0.1
@@ -10217,12 +10276,12 @@ snapshots:
extend: 3.0.2
google-auth-library: 10.6.2(supports-color@10.2.2)
google-gax: 5.0.6(supports-color@10.2.2)
- grpc-gcp: 1.0.1(protobufjs@7.5.6)
+ grpc-gcp: 1.0.1(protobufjs@7.6.0)
is: 3.3.2
lodash.snakecase: 4.1.1
merge-stream: 2.0.0
p-queue: 6.6.2
- protobufjs: 7.5.6
+ protobufjs: 7.6.0
retry-request: 8.0.2(supports-color@10.2.2)
split-array-stream: 2.0.0
stack-trace: 0.0.10
@@ -10232,12 +10291,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@google/genai@1.50.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)':
+ '@google/genai@1.52.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.2))(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)':
dependencies:
google-auth-library: 10.6.2(supports-color@10.2.2)
p-retry: 4.6.2
- protobufjs: 7.5.6
- ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ protobufjs: 7.6.0
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
optionalDependencies:
'@modelcontextprotocol/sdk': 1.29.0(zod@4.4.2)
transitivePeerDependencies:
@@ -10247,34 +10306,34 @@ snapshots:
'@grpc/grpc-js@1.14.3':
dependencies:
- '@grpc/proto-loader': 0.8.0
+ '@grpc/proto-loader': 0.8.1
'@js-sdsl/ordered-map': 4.4.2
'@grpc/grpc-js@1.9.15':
dependencies:
'@grpc/proto-loader': 0.7.15
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@grpc/proto-loader@0.7.15':
dependencies:
lodash.camelcase: 4.3.0
long: 5.3.2
- protobufjs: 7.5.6
+ protobufjs: 7.6.0
yargs: 17.7.2
- '@grpc/proto-loader@0.8.0':
+ '@grpc/proto-loader@0.8.1':
dependencies:
lodash.camelcase: 4.3.0
long: 5.3.2
- protobufjs: 7.5.6
+ protobufjs: 7.6.0
yargs: 17.7.2
'@harperfast/extended-iterable@1.0.3':
optional: true
- '@hono/node-server@1.19.14(hono@4.12.16)':
+ '@hono/node-server@1.19.14(hono@4.12.19)':
dependencies:
- hono: 4.12.16
+ hono: 4.12.19
'@humanfs/core@0.19.2':
dependencies:
@@ -10294,122 +10353,144 @@ snapshots:
'@inquirer/ansi@2.0.5': {}
- '@inquirer/checkbox@5.1.4(@types/node@24.12.2)':
+ '@inquirer/checkbox@5.1.5(@types/node@24.12.4)':
dependencies:
'@inquirer/ansi': 2.0.5
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
'@inquirer/figures': 2.0.5
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
+ optionalDependencies:
+ '@types/node': 24.12.4
+
+ '@inquirer/confirm@6.0.12(@types/node@24.12.4)':
+ dependencies:
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/confirm@6.0.12(@types/node@24.12.2)':
+ '@inquirer/confirm@6.0.13(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/core@11.1.9(@types/node@24.12.2)':
+ '@inquirer/core@11.1.10(@types/node@24.12.4)':
dependencies:
'@inquirer/ansi': 2.0.5
'@inquirer/figures': 2.0.5
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
cli-width: 4.1.0
fast-wrap-ansi: 0.2.0
mute-stream: 3.0.0
signal-exit: 4.1.0
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/editor@5.1.1(@types/node@24.12.2)':
+ '@inquirer/editor@5.1.2(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/external-editor': 3.0.0(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/external-editor': 3.0.0(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/expand@5.0.13(@types/node@24.12.2)':
+ '@inquirer/expand@5.0.14(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/external-editor@3.0.0(@types/node@24.12.2)':
+ '@inquirer/external-editor@3.0.0(@types/node@24.12.4)':
dependencies:
chardet: 2.1.1
iconv-lite: 0.7.2
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
'@inquirer/figures@2.0.5': {}
- '@inquirer/input@5.0.12(@types/node@24.12.2)':
+ '@inquirer/input@5.0.13(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/number@4.0.12(@types/node@24.12.2)':
+ '@inquirer/number@4.0.13(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/password@5.0.12(@types/node@24.12.2)':
+ '@inquirer/password@5.0.13(@types/node@24.12.4)':
dependencies:
'@inquirer/ansi': 2.0.5
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
-
- '@inquirer/prompts@8.4.2(@types/node@24.12.2)':
- dependencies:
- '@inquirer/checkbox': 5.1.4(@types/node@24.12.2)
- '@inquirer/confirm': 6.0.12(@types/node@24.12.2)
- '@inquirer/editor': 5.1.1(@types/node@24.12.2)
- '@inquirer/expand': 5.0.13(@types/node@24.12.2)
- '@inquirer/input': 5.0.12(@types/node@24.12.2)
- '@inquirer/number': 4.0.12(@types/node@24.12.2)
- '@inquirer/password': 5.0.12(@types/node@24.12.2)
- '@inquirer/rawlist': 5.2.8(@types/node@24.12.2)
- '@inquirer/search': 4.1.8(@types/node@24.12.2)
- '@inquirer/select': 5.1.4(@types/node@24.12.2)
+ '@types/node': 24.12.4
+
+ '@inquirer/prompts@8.4.2(@types/node@24.12.4)':
+ dependencies:
+ '@inquirer/checkbox': 5.1.5(@types/node@24.12.4)
+ '@inquirer/confirm': 6.0.12(@types/node@24.12.4)
+ '@inquirer/editor': 5.1.2(@types/node@24.12.4)
+ '@inquirer/expand': 5.0.14(@types/node@24.12.4)
+ '@inquirer/input': 5.0.13(@types/node@24.12.4)
+ '@inquirer/number': 4.0.13(@types/node@24.12.4)
+ '@inquirer/password': 5.0.13(@types/node@24.12.4)
+ '@inquirer/rawlist': 5.2.9(@types/node@24.12.4)
+ '@inquirer/search': 4.1.9(@types/node@24.12.4)
+ '@inquirer/select': 5.1.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
+
+ '@inquirer/prompts@8.4.3(@types/node@24.12.4)':
+ dependencies:
+ '@inquirer/checkbox': 5.1.5(@types/node@24.12.4)
+ '@inquirer/confirm': 6.0.13(@types/node@24.12.4)
+ '@inquirer/editor': 5.1.2(@types/node@24.12.4)
+ '@inquirer/expand': 5.0.14(@types/node@24.12.4)
+ '@inquirer/input': 5.0.13(@types/node@24.12.4)
+ '@inquirer/number': 4.0.13(@types/node@24.12.4)
+ '@inquirer/password': 5.0.13(@types/node@24.12.4)
+ '@inquirer/rawlist': 5.2.9(@types/node@24.12.4)
+ '@inquirer/search': 4.1.9(@types/node@24.12.4)
+ '@inquirer/select': 5.1.5(@types/node@24.12.4)
+ optionalDependencies:
+ '@types/node': 24.12.4
- '@inquirer/rawlist@5.2.8(@types/node@24.12.2)':
+ '@inquirer/rawlist@5.2.9(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/search@4.1.8(@types/node@24.12.2)':
+ '@inquirer/search@4.1.9(@types/node@24.12.4)':
dependencies:
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
'@inquirer/figures': 2.0.5
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/select@5.1.4(@types/node@24.12.2)':
+ '@inquirer/select@5.1.5(@types/node@24.12.4)':
dependencies:
'@inquirer/ansi': 2.0.5
- '@inquirer/core': 11.1.9(@types/node@24.12.2)
+ '@inquirer/core': 11.1.10(@types/node@24.12.4)
'@inquirer/figures': 2.0.5
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
- '@inquirer/type@4.0.5(@types/node@24.12.2)':
+ '@inquirer/type@4.0.5(@types/node@24.12.4)':
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
'@isaacs/cliui@8.0.2':
dependencies:
@@ -10583,10 +10664,10 @@ snapshots:
'@leichtgewicht/ip-codec@2.0.5': {}
- '@listr2/prompt-adapter-inquirer@4.2.3(@inquirer/prompts@8.4.2(@types/node@24.12.2))(@types/node@24.12.2)(listr2@10.2.1)':
+ '@listr2/prompt-adapter-inquirer@4.2.3(@inquirer/prompts@8.4.2(@types/node@24.12.4))(@types/node@24.12.4)(listr2@10.2.1)':
dependencies:
- '@inquirer/prompts': 8.4.2(@types/node@24.12.2)
- '@inquirer/type': 4.0.5(@types/node@24.12.2)
+ '@inquirer/prompts': 8.4.2(@types/node@24.12.4)
+ '@inquirer/type': 4.0.5(@types/node@24.12.4)
listr2: 10.2.1
transitivePeerDependencies:
- '@types/node'
@@ -10614,7 +10695,7 @@ snapshots:
'@modelcontextprotocol/sdk@1.29.0(zod@4.4.2)':
dependencies:
- '@hono/node-server': 1.19.14(hono@4.12.16)
+ '@hono/node-server': 1.19.14(hono@4.12.19)
ajv: 8.20.0
ajv-formats: 3.0.1(ajv@8.20.0)
content-type: 1.0.5
@@ -10623,8 +10704,8 @@ snapshots:
eventsource: 3.0.7
eventsource-parser: 3.0.8
express: 5.2.1
- express-rate-limit: 8.4.1(express@5.2.1)
- hono: 4.12.16
+ express-rate-limit: 8.5.2(express@5.2.1)
+ hono: 4.12.19
jose: 6.2.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
@@ -10652,7 +10733,7 @@ snapshots:
'@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3':
optional: true
- '@mswjs/interceptors@0.41.8':
+ '@mswjs/interceptors@0.41.9':
dependencies:
'@open-draft/deferred-promise': 2.2.0
'@open-draft/logger': 0.3.0
@@ -10759,7 +10840,7 @@ snapshots:
agent-base: 7.1.4
http-proxy-agent: 7.0.2(supports-color@10.2.2)
https-proxy-agent: 7.0.6(supports-color@10.2.2)
- lru-cache: 11.3.5
+ lru-cache: 11.4.0
socks-proxy-agent: 8.0.5
transitivePeerDependencies:
- supports-color
@@ -10773,7 +10854,7 @@ snapshots:
'@gar/promise-retry': 1.0.3
'@npmcli/promise-spawn': 9.0.1
ini: 6.0.0
- lru-cache: 11.3.5
+ lru-cache: 11.4.0
npm-pick-manifest: 11.0.3
proc-log: 6.1.0
semver: 7.7.4
@@ -10814,10 +10895,10 @@ snapshots:
dependencies:
'@octokit/auth-oauth-app': 9.0.3
'@octokit/auth-oauth-user': 6.0.2
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/request-error': 7.1.0
'@octokit/types': 16.0.0
- toad-cache: 3.7.0
+ toad-cache: 3.7.1
universal-github-app-jwt: 2.2.2
universal-user-agent: 7.0.3
@@ -10825,14 +10906,14 @@ snapshots:
dependencies:
'@octokit/auth-oauth-device': 8.0.3
'@octokit/auth-oauth-user': 6.0.2
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/types': 16.0.0
universal-user-agent: 7.0.3
'@octokit/auth-oauth-device@8.0.3':
dependencies:
'@octokit/oauth-methods': 6.0.2
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/types': 16.0.0
universal-user-agent: 7.0.3
@@ -10840,7 +10921,7 @@ snapshots:
dependencies:
'@octokit/auth-oauth-device': 8.0.3
'@octokit/oauth-methods': 6.0.2
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/types': 16.0.0
universal-user-agent: 7.0.3
@@ -10850,7 +10931,7 @@ snapshots:
dependencies:
'@octokit/auth-token': 6.0.0
'@octokit/graphql': 9.0.3
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/request-error': 7.1.0
'@octokit/types': 16.0.0
before-after-hook: 4.0.0
@@ -10863,12 +10944,12 @@ snapshots:
'@octokit/graphql-schema@15.26.1':
dependencies:
- graphql: 16.13.2
- graphql-tag: 2.12.6(graphql@16.13.2)
+ graphql: 16.14.0
+ graphql-tag: 2.12.6(graphql@16.14.0)
'@octokit/graphql@9.0.3':
dependencies:
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/types': 16.0.0
universal-user-agent: 7.0.3
@@ -10877,7 +10958,7 @@ snapshots:
'@octokit/oauth-methods@6.0.2':
dependencies:
'@octokit/oauth-authorization-url': 8.0.0
- '@octokit/request': 10.0.8
+ '@octokit/request': 10.0.9
'@octokit/request-error': 7.1.0
'@octokit/types': 16.0.0
@@ -10901,11 +10982,12 @@ snapshots:
dependencies:
'@octokit/types': 16.0.0
- '@octokit/request@10.0.8':
+ '@octokit/request@10.0.9':
dependencies:
'@octokit/endpoint': 11.0.3
'@octokit/request-error': 7.1.0
'@octokit/types': 16.0.0
+ content-type: 2.0.0
fast-content-type-parse: 3.0.0
json-with-bigint: 3.5.8
universal-user-agent: 7.0.3
@@ -10939,11 +11021,11 @@ snapshots:
'@opentelemetry/core@2.7.1(@opentelemetry/api@1.9.1)':
dependencies:
'@opentelemetry/api': 1.9.1
- '@opentelemetry/semantic-conventions': 1.40.0
+ '@opentelemetry/semantic-conventions': 1.41.1
- '@opentelemetry/semantic-conventions@1.40.0': {}
+ '@opentelemetry/semantic-conventions@1.41.1': {}
- '@oxc-project/types@0.128.0': {}
+ '@oxc-project/types@0.129.0': {}
'@parcel/watcher-android-arm64@2.5.6':
optional: true
@@ -11133,14 +11215,13 @@ snapshots:
'@protobufjs/eventemitter@1.1.0': {}
- '@protobufjs/fetch@1.1.0':
+ '@protobufjs/fetch@1.1.1':
dependencies:
'@protobufjs/aspromise': 1.1.2
- '@protobufjs/inquire': 1.1.1
'@protobufjs/float@1.0.2': {}
- '@protobufjs/inquire@1.1.1': {}
+ '@protobufjs/inquire@1.1.2': {}
'@protobufjs/path@1.1.2': {}
@@ -11163,56 +11244,56 @@ snapshots:
- react-native-b4a
- supports-color
- '@rolldown/binding-android-arm64@1.0.0-rc.18':
+ '@rolldown/binding-android-arm64@1.0.0':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.0-rc.18':
+ '@rolldown/binding-darwin-arm64@1.0.0':
optional: true
- '@rolldown/binding-darwin-x64@1.0.0-rc.18':
+ '@rolldown/binding-darwin-x64@1.0.0':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.0-rc.18':
+ '@rolldown/binding-freebsd-x64@1.0.0':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.18':
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.18':
+ '@rolldown/binding-linux-arm64-gnu@1.0.0':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.0-rc.18':
+ '@rolldown/binding-linux-arm64-musl@1.0.0':
optional: true
- '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.18':
+ '@rolldown/binding-linux-ppc64-gnu@1.0.0':
optional: true
- '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.18':
+ '@rolldown/binding-linux-s390x-gnu@1.0.0':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.0-rc.18':
+ '@rolldown/binding-linux-x64-gnu@1.0.0':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.0-rc.18':
+ '@rolldown/binding-linux-x64-musl@1.0.0':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.0-rc.18':
+ '@rolldown/binding-openharmony-arm64@1.0.0':
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.0-rc.18':
+ '@rolldown/binding-wasm32-wasi@1.0.0':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.18':
+ '@rolldown/binding-win32-arm64-msvc@1.0.0':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.0-rc.18':
+ '@rolldown/binding-win32-x64-msvc@1.0.0':
optional: true
- '@rolldown/pluginutils@1.0.0-rc.18': {}
+ '@rolldown/pluginutils@1.0.0': {}
'@rollup/plugin-alias@6.0.0(rollup@4.60.2)':
optionalDependencies:
@@ -11248,7 +11329,7 @@ snapshots:
'@rollup/pluginutils@5.3.0(rollup@4.60.2)':
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
estree-walker: 2.0.2
picomatch: 4.0.4
optionalDependencies:
@@ -11381,11 +11462,11 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1))':
+ '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0))':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1))
- '@typescript-eslint/types': 8.59.1
- eslint: 10.3.0(jiti@2.6.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0))
+ '@typescript-eslint/types': 8.59.4
+ eslint: 10.3.0(jiti@2.7.0)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@@ -11395,9 +11476,9 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.3.0(jiti@2.6.1))':
+ '@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.3.0(jiti@2.7.0))':
dependencies:
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
'@tootallnate/quickjs-emscripten@0.23.0': {}
@@ -11439,16 +11520,16 @@ snapshots:
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/bonjour@3.5.13':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/browser-sync@2.29.1':
dependencies:
'@types/micromatch': 2.3.35
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/serve-static': 2.2.0
chokidar: 3.6.0
@@ -11459,56 +11540,58 @@ snapshots:
'@types/cli-progress@3.11.6':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/connect-history-api-fallback@1.5.4':
dependencies:
'@types/express-serve-static-core': 4.19.8
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/connect@3.4.38':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/cors@2.8.19':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/deep-eql@4.0.2': {}
'@types/duplexify@3.6.5':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/ejs@3.1.5': {}
'@types/eslint-scope@3.7.7':
dependencies:
'@types/eslint': 9.6.1
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/eslint@9.6.1':
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/json-schema': 7.0.15
'@types/esrecurse@4.3.1': {}
'@types/estree@1.0.8': {}
+ '@types/estree@1.0.9': {}
+
'@types/events@3.0.3': {}
'@types/express-serve-static-core@4.19.8':
dependencies:
- '@types/node': 22.19.17
- '@types/qs': 6.15.0
+ '@types/node': 22.19.19
+ '@types/qs': 6.15.1
'@types/range-parser': 1.2.7
'@types/send': 1.2.1
'@types/express-serve-static-core@5.1.1':
dependencies:
- '@types/node': 22.19.17
- '@types/qs': 6.15.0
+ '@types/node': 22.19.19
+ '@types/qs': 6.15.1
'@types/range-parser': 1.2.7
'@types/send': 1.2.1
@@ -11516,7 +11599,7 @@ snapshots:
dependencies:
'@types/body-parser': 1.19.6
'@types/express-serve-static-core': 4.19.8
- '@types/qs': 6.15.0
+ '@types/qs': 6.15.1
'@types/serve-static': 1.15.10
'@types/express@5.0.6':
@@ -11529,13 +11612,13 @@ snapshots:
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/http-errors@2.0.5': {}
'@types/http-proxy@1.17.17':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/ini@4.1.1': {}
@@ -11551,7 +11634,7 @@ snapshots:
'@types/karma@6.3.9':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
log4js: 6.9.1
transitivePeerDependencies:
- supports-color
@@ -11560,11 +11643,20 @@ snapshots:
'@types/loader-utils@3.0.0(esbuild@0.28.0)':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
webpack: 5.106.2(esbuild@0.28.0)
transitivePeerDependencies:
+ - '@minify-html/node'
- '@swc/core'
+ - '@swc/css'
+ - '@swc/html'
+ - clean-css
+ - cssnano
+ - csso
- esbuild
+ - html-minifier-terser
+ - lightningcss
+ - postcss
- uglify-js
- webpack-cli
@@ -11578,14 +11670,14 @@ snapshots:
'@types/node-fetch@2.6.13':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
form-data: 4.0.5
- '@types/node@22.19.17':
+ '@types/node@22.19.19':
dependencies:
undici-types: 6.21.0
- '@types/node@24.12.2':
+ '@types/node@24.12.4':
dependencies:
undici-types: 7.16.0
@@ -11593,7 +11685,7 @@ snapshots:
'@types/npm-registry-fetch@8.0.9':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/node-fetch': 2.6.13
'@types/npm-package-arg': 6.1.4
'@types/npmlog': 7.0.0
@@ -11601,11 +11693,11 @@ snapshots:
'@types/npmlog@7.0.0':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/pacote@11.1.8':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/npm-registry-fetch': 8.0.9
'@types/npmlog': 7.0.0
'@types/ssri': 7.1.5
@@ -11616,14 +11708,14 @@ snapshots:
'@types/progress@2.0.7':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/pumpify@1.4.5':
dependencies:
'@types/duplexify': 3.6.5
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
- '@types/qs@6.15.0': {}
+ '@types/qs@6.15.1': {}
'@types/range-parser@1.2.7': {}
@@ -11631,7 +11723,7 @@ snapshots:
'@types/responselike@1.0.0':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/retry@0.12.0': {}
@@ -11642,11 +11734,11 @@ snapshots:
'@types/send@0.17.6':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/send@1.2.1':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/serve-index@1.9.4':
dependencies:
@@ -11655,38 +11747,38 @@ snapshots:
'@types/serve-static@1.15.10':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/send': 0.17.6
'@types/serve-static@2.2.0':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/sockjs@0.3.36':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/ssri@7.1.5':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/stack-trace@0.0.33': {}
'@types/tar-stream@3.1.4':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/watchpack@2.4.5':
dependencies:
'@types/graceful-fs': 4.1.9
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/which@3.0.4': {}
'@types/ws@8.18.1':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/yargs-parser@21.0.3': {}
@@ -11698,18 +11790,18 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
optional: true
- '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)':
+ '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
'@typescript-eslint/scope-manager': 8.59.1
- '@typescript-eslint/type-utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
- '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
+ '@typescript-eslint/type-utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.59.1
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
ignore: 7.0.5
natural-compare: 1.4.0
ts-api-utils: 2.5.0(typescript@6.0.3)
@@ -11717,14 +11809,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)':
+ '@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.59.1
'@typescript-eslint/types': 8.59.1
'@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3)
'@typescript-eslint/visitor-keys': 8.59.1
debug: 4.4.3(supports-color@10.2.2)
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -11747,13 +11839,13 @@ snapshots:
dependencies:
typescript: 6.0.3
- '@typescript-eslint/type-utils@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)':
+ '@typescript-eslint/type-utils@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
'@typescript-eslint/types': 8.59.1
'@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3)
- '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
+ '@typescript-eslint/utils': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
debug: 4.4.3(supports-color@10.2.2)
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
ts-api-utils: 2.5.0(typescript@6.0.3)
typescript: 6.0.3
transitivePeerDependencies:
@@ -11761,6 +11853,8 @@ snapshots:
'@typescript-eslint/types@8.59.1': {}
+ '@typescript-eslint/types@8.59.4': {}
+
'@typescript-eslint/typescript-estree@8.59.1(typescript@6.0.3)':
dependencies:
'@typescript-eslint/project-service': 8.59.1(typescript@6.0.3)
@@ -11776,13 +11870,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)':
+ '@typescript-eslint/utils@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0))
'@typescript-eslint/scope-manager': 8.59.1
'@typescript-eslint/types': 8.59.1
'@typescript-eslint/typescript-estree': 8.59.1(typescript@6.0.3)
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
typescript: 6.0.3
transitivePeerDependencies:
- supports-color
@@ -11813,15 +11907,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@verdaccio/core@8.0.0':
- dependencies:
- ajv: 8.18.0
- http-errors: 2.0.1
- http-status-codes: 2.3.0
- minimatch: 7.4.9
- process-warning: 1.0.0
- semver: 7.7.4
-
'@verdaccio/core@8.0.0-next-8.21':
dependencies:
ajv: 8.17.1
@@ -11840,6 +11925,15 @@ snapshots:
process-warning: 1.0.0
semver: 7.7.4
+ '@verdaccio/core@8.1.0':
+ dependencies:
+ ajv: 8.18.0
+ http-errors: 2.0.1
+ http-status-codes: 2.3.0
+ minimatch: 7.4.9
+ process-warning: 1.0.0
+ semver: 7.7.4
+
'@verdaccio/file-locking@10.3.1':
dependencies:
lockfile: 1.0.4
@@ -11970,9 +12064,9 @@ snapshots:
lodash: 4.18.1
minimatch: 7.4.9
- '@vitejs/plugin-basic-ssl@2.3.0(vite@7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))':
+ '@vitejs/plugin-basic-ssl@2.3.0(vite@7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0))':
dependencies:
- vite: 7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ vite: 7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
'@vitest/coverage-v8@4.1.5(vitest@4.1.5)':
dependencies:
@@ -11982,11 +12076,11 @@ snapshots:
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-reports: 3.2.0
- magicast: 0.5.2
+ magicast: 0.5.3
obug: 2.1.1
std-env: 4.1.0
tinyrainbow: 3.1.0
- vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(jiti@2.6.1)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.4)(@vitest/coverage-v8@4.1.5)(jiti@2.7.0)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
'@vitest/expect@4.1.5':
dependencies:
@@ -11997,13 +12091,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.5(vite@7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))':
+ '@vitest/mocker@4.1.5(vite@7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.5
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ vite: 7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
'@vitest/pretty-format@4.1.5':
dependencies:
@@ -12182,21 +12276,21 @@ snapshots:
ajv@8.17.1:
dependencies:
fast-deep-equal: 3.1.3
- fast-uri: 3.1.0
+ fast-uri: 3.1.2
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
ajv@8.18.0:
dependencies:
fast-deep-equal: 3.1.3
- fast-uri: 3.1.0
+ fast-uri: 3.1.2
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
ajv@8.20.0:
dependencies:
fast-deep-equal: 3.1.3
- fast-uri: 3.1.0
+ fast-uri: 3.1.2
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
@@ -12343,7 +12437,7 @@ snapshots:
autoprefixer@10.5.0(postcss@8.5.13):
dependencies:
browserslist: 4.28.2
- caniuse-lite: 1.0.30001791
+ caniuse-lite: 1.0.30001793
fraction.js: 5.3.4
picocolors: 1.1.1
postcss: 8.5.13
@@ -12359,12 +12453,12 @@ snapshots:
b4a@1.8.1: {}
- babel-loader@10.1.1(@babel/core@7.29.0)(webpack@5.106.2(esbuild@0.28.0)):
+ babel-loader@10.1.1(@babel/core@7.29.0)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
'@babel/core': 7.29.0
find-up: 5.0.0
optionalDependencies:
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0):
dependencies:
@@ -12402,14 +12496,14 @@ snapshots:
balanced-match@4.0.4: {}
- bare-events@2.8.2: {}
+ bare-events@2.8.3: {}
bare-fs@4.7.1:
dependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.3
bare-path: 3.0.0
- bare-stream: 2.13.1(bare-events@2.8.2)
- bare-url: 2.4.2
+ bare-stream: 2.13.1(bare-events@2.8.3)
+ bare-url: 2.4.3
fast-fifo: 1.3.2
transitivePeerDependencies:
- bare-abort-controller
@@ -12421,16 +12515,16 @@ snapshots:
dependencies:
bare-os: 3.9.1
- bare-stream@2.13.1(bare-events@2.8.2):
+ bare-stream@2.13.1(bare-events@2.8.3):
dependencies:
streamx: 2.25.0
teex: 1.0.1
optionalDependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.3
transitivePeerDependencies:
- react-native-b4a
- bare-url@2.4.2:
+ bare-url@2.4.3:
dependencies:
bare-path: 3.0.0
@@ -12438,7 +12532,7 @@ snapshots:
base64id@2.0.0: {}
- baseline-browser-mapping@2.10.27: {}
+ baseline-browser-mapping@2.10.31: {}
basic-ftp@5.3.1: {}
@@ -12458,9 +12552,9 @@ snapshots:
domhandler: 5.0.3
htmlparser2: 10.1.0
picocolors: 1.1.1
- postcss: 8.5.13
+ postcss: 8.5.14
postcss-media-query-parser: 0.2.3
- postcss-safe-parser: 7.0.1(postcss@8.5.13)
+ postcss-safe-parser: 7.0.1(postcss@8.5.14)
before-after-hook@4.0.0: {}
@@ -12486,7 +12580,7 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.4.24
on-finished: 2.4.1
- qs: 6.15.1
+ qs: 6.15.2
raw-body: 2.5.3
type-is: 1.6.18
unpipe: 1.0.0
@@ -12501,9 +12595,9 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.7.2
on-finished: 2.4.1
- qs: 6.15.1
+ qs: 6.15.2
raw-body: 3.0.2
- type-is: 2.0.1
+ type-is: 2.1.0
transitivePeerDependencies:
- supports-color
@@ -12523,7 +12617,7 @@ snapshots:
dependencies:
balanced-match: 1.0.2
- brace-expansion@5.0.5:
+ brace-expansion@5.0.6:
dependencies:
balanced-match: 4.0.4
@@ -12595,10 +12689,10 @@ snapshots:
browserslist@4.28.2:
dependencies:
- baseline-browser-mapping: 2.10.27
- caniuse-lite: 1.0.30001791
- electron-to-chromium: 1.5.349
- node-releases: 2.0.38
+ baseline-browser-mapping: 2.10.31
+ caniuse-lite: 1.0.30001793
+ electron-to-chromium: 1.5.358
+ node-releases: 2.0.44
update-browserslist-db: 1.2.3(browserslist@4.28.2)
bs-recipes@1.3.4: {}
@@ -12631,7 +12725,7 @@ snapshots:
'@npmcli/fs': 5.0.0
fs-minipass: 3.0.3
glob: 13.0.6
- lru-cache: 11.3.5
+ lru-cache: 11.4.0
minipass: 7.1.3
minipass-collect: 2.0.1
minipass-flush: 1.0.7
@@ -12670,7 +12764,7 @@ snapshots:
callsites@3.1.0: {}
- caniuse-lite@1.0.30001791: {}
+ caniuse-lite@1.0.30001793: {}
caseless@0.12.0: {}
@@ -12846,6 +12940,8 @@ snapshots:
content-type@1.0.5: {}
+ content-type@2.0.0: {}
+
conventional-commits-filter@5.0.0: {}
conventional-commits-parser@6.4.0:
@@ -12867,14 +12963,14 @@ snapshots:
dependencies:
is-what: 4.1.16
- copy-webpack-plugin@14.0.0(webpack@5.106.2(esbuild@0.28.0)):
+ copy-webpack-plugin@14.0.0(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
glob-parent: 6.0.2
normalize-path: 3.0.0
schema-utils: 4.3.3
serialize-javascript: 7.0.5
tinyglobby: 0.2.16
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
core-js-compat@3.49.0:
dependencies:
@@ -12910,18 +13006,18 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- css-loader@7.1.4(webpack@5.106.2(esbuild@0.28.0)):
+ css-loader@7.1.4(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
- icss-utils: 5.1.0(postcss@8.5.13)
- postcss: 8.5.13
- postcss-modules-extract-imports: 3.1.0(postcss@8.5.13)
- postcss-modules-local-by-default: 4.2.0(postcss@8.5.13)
- postcss-modules-scope: 3.2.1(postcss@8.5.13)
- postcss-modules-values: 4.0.0(postcss@8.5.13)
+ icss-utils: 5.1.0(postcss@8.5.14)
+ postcss: 8.5.14
+ postcss-modules-extract-imports: 3.1.0(postcss@8.5.14)
+ postcss-modules-local-by-default: 4.2.0(postcss@8.5.14)
+ postcss-modules-scope: 3.2.1(postcss@8.5.14)
+ postcss-modules-values: 4.0.0(postcss@8.5.14)
postcss-value-parser: 4.2.0
semver: 7.7.4
optionalDependencies:
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
css-select@6.0.0:
dependencies:
@@ -13141,7 +13237,7 @@ snapshots:
ejs@5.0.2: {}
- electron-to-chromium@1.5.349: {}
+ electron-to-chromium@1.5.358: {}
emoji-regex@10.6.0: {}
@@ -13180,7 +13276,7 @@ snapshots:
engine.io@6.6.7(bufferutil@4.1.0)(utf-8-validate@6.0.6):
dependencies:
'@types/cors': 2.8.19
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
'@types/ws': 8.18.1
accepts: 1.3.8
base64id: 2.0.0
@@ -13194,7 +13290,7 @@ snapshots:
- supports-color
- utf-8-validate
- enhanced-resolve@5.21.0:
+ enhanced-resolve@5.21.4:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.3
@@ -13385,29 +13481,29 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-config-prettier@10.1.8(eslint@10.3.0(jiti@2.6.1)):
+ eslint-config-prettier@10.1.8(eslint@10.3.0(jiti@2.7.0)):
dependencies:
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
eslint-import-resolver-node@0.3.10:
dependencies:
debug: 3.2.7
- is-core-module: 2.16.1
- resolve: 2.0.0-next.6
+ is-core-module: 2.16.2
+ resolve: 2.0.0-next.7
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.3.0(jiti@2.6.1)):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.3.0(jiti@2.7.0)):
dependencies:
debug: 3.2.7
optionalDependencies:
- '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
- eslint: 10.3.0(jiti@2.6.1)
+ '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
+ eslint: 10.3.0(jiti@2.7.0)
eslint-import-resolver-node: 0.3.10
transitivePeerDependencies:
- supports-color
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -13416,11 +13512,11 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 10.3.0(jiti@2.6.1)
+ eslint: 10.3.0(jiti@2.7.0)
eslint-import-resolver-node: 0.3.10
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.3.0(jiti@2.6.1))
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.3.0(jiti@2.7.0))
hasown: 2.0.3
- is-core-module: 2.16.1
+ is-core-module: 2.16.2
is-glob: 4.0.3
minimatch: 3.1.5
object.fromentries: 2.0.8
@@ -13430,7 +13526,7 @@ snapshots:
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
optionalDependencies:
- '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)
+ '@typescript-eslint/parser': 8.59.1(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
@@ -13444,7 +13540,7 @@ snapshots:
eslint-scope@9.1.2:
dependencies:
'@types/esrecurse': 4.3.1
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
esrecurse: 4.3.0
estraverse: 5.3.0
@@ -13454,9 +13550,9 @@ snapshots:
eslint-visitor-keys@5.0.1: {}
- eslint@10.3.0(jiti@2.6.1):
+ eslint@10.3.0(jiti@2.7.0):
dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1))
+ '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0))
'@eslint-community/regexpp': 4.12.2
'@eslint/config-array': 0.23.5
'@eslint/config-helpers': 0.5.5
@@ -13465,7 +13561,7 @@ snapshots:
'@humanfs/node': 0.16.8
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.4.3
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
ajv: 6.15.0
cross-spawn: 7.0.6
debug: 4.4.3(supports-color@10.2.2)
@@ -13487,7 +13583,7 @@ snapshots:
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
- jiti: 2.6.1
+ jiti: 2.7.0
transitivePeerDependencies:
- supports-color
@@ -13521,7 +13617,7 @@ snapshots:
estree-walker@3.0.3:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
esutils@2.0.3: {}
@@ -13537,7 +13633,7 @@ snapshots:
events-universal@1.0.1:
dependencies:
- bare-events: 2.8.2
+ bare-events: 2.8.3
transitivePeerDependencies:
- bare-abort-controller
@@ -13555,10 +13651,10 @@ snapshots:
express-rate-limit@5.5.1: {}
- express-rate-limit@8.4.1(express@5.2.1):
+ express-rate-limit@8.5.2(express@5.2.1):
dependencies:
express: 5.2.1
- ip-address: 10.1.0
+ ip-address: 10.2.0
express@4.22.1:
dependencies:
@@ -13596,6 +13692,42 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ express@4.22.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.5
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.0.7
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.2
+ fresh: 0.5.2
+ http-errors: 2.0.1
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.13
+ proxy-addr: 2.0.7
+ qs: 6.15.2
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.2
+ serve-static: 1.16.3
+ setprototypeof: 1.2.0
+ statuses: 2.0.2
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
express@5.2.1:
dependencies:
accepts: 2.0.0
@@ -13618,13 +13750,13 @@ snapshots:
once: 1.4.0
parseurl: 1.3.3
proxy-addr: 2.0.7
- qs: 6.15.1
+ qs: 6.15.2
range-parser: 1.2.1
router: 2.2.0
send: 1.2.1
serve-static: 2.2.1
statuses: 2.0.2
- type-is: 2.0.1
+ type-is: 2.1.0
vary: 1.1.2
transitivePeerDependencies:
- supports-color
@@ -13667,7 +13799,7 @@ snapshots:
dependencies:
fast-string-truncated-width: 3.0.3
- fast-uri@3.1.0: {}
+ fast-uri@3.1.2: {}
fast-wrap-ansi@0.2.0:
dependencies:
@@ -13761,36 +13893,36 @@ snapshots:
locate-path: 6.0.0
path-exists: 4.0.0
- firebase@12.12.1:
- dependencies:
- '@firebase/ai': 2.11.1(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)
- '@firebase/analytics': 0.10.21(@firebase/app@0.14.11)
- '@firebase/analytics-compat': 0.2.27(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)
- '@firebase/app': 0.14.11
- '@firebase/app-check': 0.11.2(@firebase/app@0.14.11)
- '@firebase/app-check-compat': 0.4.2(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)
- '@firebase/app-compat': 0.5.11
- '@firebase/app-types': 0.9.4
- '@firebase/auth': 1.13.0(@firebase/app@0.14.11)
- '@firebase/auth-compat': 0.6.5(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)
- '@firebase/data-connect': 0.6.0(@firebase/app@0.14.11)
- '@firebase/database': 1.1.2
- '@firebase/database-compat': 2.1.3
- '@firebase/firestore': 4.14.0(@firebase/app@0.14.11)
- '@firebase/firestore-compat': 0.4.8(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)
- '@firebase/functions': 0.13.3(@firebase/app@0.14.11)
- '@firebase/functions-compat': 0.4.3(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)
- '@firebase/installations': 0.6.21(@firebase/app@0.14.11)
- '@firebase/installations-compat': 0.2.21(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)
- '@firebase/messaging': 0.12.25(@firebase/app@0.14.11)
- '@firebase/messaging-compat': 0.2.25(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)
- '@firebase/performance': 0.7.11(@firebase/app@0.14.11)
- '@firebase/performance-compat': 0.2.24(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)
- '@firebase/remote-config': 0.8.2(@firebase/app@0.14.11)
- '@firebase/remote-config-compat': 0.2.23(@firebase/app-compat@0.5.11)(@firebase/app@0.14.11)
- '@firebase/storage': 0.14.2(@firebase/app@0.14.11)
- '@firebase/storage-compat': 0.4.2(@firebase/app-compat@0.5.11)(@firebase/app-types@0.9.4)(@firebase/app@0.14.11)
- '@firebase/util': 1.15.0
+ firebase@12.13.0:
+ dependencies:
+ '@firebase/ai': 2.12.0(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)
+ '@firebase/analytics': 0.10.22(@firebase/app@0.14.12)
+ '@firebase/analytics-compat': 0.2.28(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)
+ '@firebase/app': 0.14.12
+ '@firebase/app-check': 0.11.3(@firebase/app@0.14.12)
+ '@firebase/app-check-compat': 0.4.3(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)
+ '@firebase/app-compat': 0.5.12
+ '@firebase/app-types': 0.9.5
+ '@firebase/auth': 1.13.1(@firebase/app@0.14.12)
+ '@firebase/auth-compat': 0.6.6(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)
+ '@firebase/data-connect': 0.7.0(@firebase/app@0.14.12)
+ '@firebase/database': 1.1.3
+ '@firebase/database-compat': 2.1.4
+ '@firebase/firestore': 4.14.1(@firebase/app@0.14.12)
+ '@firebase/firestore-compat': 0.4.9(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)
+ '@firebase/functions': 0.13.4(@firebase/app@0.14.12)
+ '@firebase/functions-compat': 0.4.4(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)
+ '@firebase/installations': 0.6.22(@firebase/app@0.14.12)
+ '@firebase/installations-compat': 0.2.22(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)
+ '@firebase/messaging': 0.12.26(@firebase/app@0.14.12)
+ '@firebase/messaging-compat': 0.2.26(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)
+ '@firebase/performance': 0.7.12(@firebase/app@0.14.12)
+ '@firebase/performance-compat': 0.2.25(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)
+ '@firebase/remote-config': 0.8.3(@firebase/app@0.14.12)
+ '@firebase/remote-config-compat': 0.2.24(@firebase/app-compat@0.5.12)(@firebase/app@0.14.12)
+ '@firebase/storage': 0.14.3(@firebase/app@0.14.12)
+ '@firebase/storage-compat': 0.4.3(@firebase/app-compat@0.5.12)(@firebase/app-types@0.9.5)(@firebase/app@0.14.12)
+ '@firebase/util': 1.15.1
transitivePeerDependencies:
- '@react-native-async-storage/async-storage'
@@ -13803,7 +13935,7 @@ snapshots:
flatted@3.4.2: {}
- folder-hash@4.1.2(supports-color@10.2.2):
+ folder-hash@4.1.3(supports-color@10.2.2):
dependencies:
debug: 4.4.0(supports-color@10.2.2)
minimatch: 7.4.9
@@ -13903,7 +14035,7 @@ snapshots:
get-caller-file@2.0.5: {}
- get-east-asian-width@1.5.0: {}
+ get-east-asian-width@1.6.0: {}
get-intrinsic@1.3.0:
dependencies:
@@ -13937,10 +14069,6 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.3.0
- get-tsconfig@4.14.0:
- dependencies:
- resolve-pkg-maps: 1.0.0
-
get-uri@6.0.5:
dependencies:
basic-ftp: 5.3.1
@@ -14014,14 +14142,14 @@ snapshots:
google-gax@5.0.6(supports-color@10.2.2):
dependencies:
'@grpc/grpc-js': 1.14.3
- '@grpc/proto-loader': 0.8.0
+ '@grpc/proto-loader': 0.8.1
duplexify: 4.1.3
google-auth-library: 10.6.2(supports-color@10.2.2)
google-logging-utils: 1.1.3
node-fetch: 3.3.2
object-hash: 3.0.0
proto3-json-serializer: 3.0.4
- protobufjs: 7.5.6
+ protobufjs: 7.6.0
retry-request: 8.0.2(supports-color@10.2.2)
rimraf: 5.0.10
transitivePeerDependencies:
@@ -14048,17 +14176,17 @@ snapshots:
graceful-fs@4.2.11: {}
- graphql-tag@2.12.6(graphql@16.13.2):
+ graphql-tag@2.12.6(graphql@16.14.0):
dependencies:
- graphql: 16.13.2
+ graphql: 16.14.0
tslib: 2.8.1
- graphql@16.13.2: {}
+ graphql@16.14.0: {}
- grpc-gcp@1.0.1(protobufjs@7.5.6):
+ grpc-gcp@1.0.1(protobufjs@7.6.0):
dependencies:
'@grpc/grpc-js': 1.14.3
- protobufjs: 7.5.6
+ protobufjs: 7.6.0
gunzip-maybe@1.4.2:
dependencies:
@@ -14102,11 +14230,11 @@ snapshots:
dependencies:
function-bind: 1.1.2
- hono@4.12.16: {}
+ hono@4.12.19: {}
hosted-git-info@9.0.3:
dependencies:
- lru-cache: 11.3.5
+ lru-cache: 11.4.0
hpack.js@2.1.6:
dependencies:
@@ -14250,9 +14378,9 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
- icss-utils@5.1.0(postcss@8.5.13):
+ icss-utils@5.1.0(postcss@8.5.14):
dependencies:
- postcss: 8.5.13
+ postcss: 8.5.14
idb@7.1.1: {}
@@ -14299,8 +14427,6 @@ snapshots:
hasown: 2.0.3
side-channel: 1.1.0
- ip-address@10.1.0: {}
-
ip-address@10.2.0: {}
ipaddr.js@1.9.1: {}
@@ -14338,7 +14464,7 @@ snapshots:
is-callable@1.2.7: {}
- is-core-module@2.16.1:
+ is-core-module@2.16.2:
dependencies:
hasown: 2.0.3
@@ -14367,7 +14493,7 @@ snapshots:
is-fullwidth-code-point@5.1.0:
dependencies:
- get-east-asian-width: 1.5.0
+ get-east-asian-width: 1.6.0
is-generator-function@1.1.2:
dependencies:
@@ -14397,7 +14523,7 @@ snapshots:
is-negative-zero@2.0.3: {}
- is-network-error@1.3.1: {}
+ is-network-error@1.3.2: {}
is-node-process@1.2.0: {}
@@ -14428,7 +14554,7 @@ snapshots:
is-reference@1.2.1:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
is-regex@1.2.1:
dependencies:
@@ -14569,11 +14695,11 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
merge-stream: 2.0.0
supports-color: 8.1.1
- jiti@2.6.1: {}
+ jiti@2.7.0: {}
jose@6.2.3: {}
@@ -14594,14 +14720,14 @@ snapshots:
'@asamuzakjp/css-color': 5.1.11
'@asamuzakjp/dom-selector': 7.1.1
'@bramus/specificity': 2.4.2
- '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1)
+ '@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1)
'@exodus/bytes': 1.15.0
css-tree: 3.2.1
data-urls: 7.0.0
decimal.js: 10.6.0
html-encoding-sniffer: 6.0.0
is-potential-custom-element-name: 1.0.1
- lru-cache: 11.3.5
+ lru-cache: 11.4.0
parse5: 8.0.1
saxes: 6.0.0
symbol-tree: 3.2.4
@@ -14763,11 +14889,11 @@ snapshots:
picocolors: 1.1.1
shell-quote: 1.8.3
- less-loader@12.3.2(less@4.6.4)(webpack@5.106.2(esbuild@0.28.0)):
+ less-loader@12.3.2(less@4.6.4)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
less: 4.6.4
optionalDependencies:
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
less@4.6.4:
dependencies:
@@ -14787,11 +14913,11 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
- license-webpack-plugin@4.0.2(webpack@5.106.2(esbuild@0.28.0)):
+ license-webpack-plugin@4.0.2(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
webpack-sources: 3.4.1
optionalDependencies:
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
limiter@1.1.5: {}
@@ -14904,7 +15030,7 @@ snapshots:
lru-cache@10.4.3: {}
- lru-cache@11.3.5: {}
+ lru-cache@11.4.0: {}
lru-cache@5.1.1:
dependencies:
@@ -14916,7 +15042,7 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- magicast@0.5.2:
+ magicast@0.5.3:
dependencies:
'@babel/parser': 7.29.3
'@babel/types': 7.29.0
@@ -15015,17 +15141,17 @@ snapshots:
mimic-response@3.1.0: {}
- mini-css-extract-plugin@2.10.2(webpack@5.106.2(esbuild@0.28.0)):
+ mini-css-extract-plugin@2.10.2(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
schema-utils: 4.3.3
tapable: 2.3.3
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
minimalistic-assert@1.0.1: {}
minimatch@10.2.5:
dependencies:
- brace-expansion: 5.0.5
+ brace-expansion: 5.0.6
minimatch@3.1.5:
dependencies:
@@ -15145,10 +15271,10 @@ snapshots:
netmask@2.1.1: {}
- ng-packagr@22.0.0-next.3(@angular/compiler-cli@22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3):
+ ng-packagr@22.0.0-rc.0(@angular/compiler-cli@22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3):
dependencies:
'@ampproject/remapping': 2.3.0
- '@angular/compiler-cli': 22.0.0-next.10(@angular/compiler@22.0.0-next.10)(typescript@6.0.3)
+ '@angular/compiler-cli': 22.0.0-rc.1(@angular/compiler@22.0.0-rc.1)(typescript@6.0.3)
'@rollup/plugin-json': 6.1.0(rollup@4.60.2)
'@rollup/wasm-node': 4.60.2
ajv: 8.20.0
@@ -15163,7 +15289,7 @@ snapshots:
less: 4.6.4
ora: 9.4.0
piscina: 5.1.4
- postcss: 8.5.13
+ postcss: 8.5.14
rollup-plugin-dts: 6.4.1(rollup@4.60.2)(typescript@6.0.3)
rxjs: 7.8.2
sass: 1.99.0
@@ -15173,9 +15299,9 @@ snapshots:
optionalDependencies:
rollup: 4.60.2
- nock@14.0.13:
+ nock@14.0.15:
dependencies:
- '@mswjs/interceptors': 0.41.8
+ '@mswjs/interceptors': 0.41.9
json-stringify-safe: 5.0.1
propagate: 2.0.1
@@ -15229,12 +15355,12 @@ snapshots:
nopt: 9.0.0
proc-log: 6.1.0
semver: 7.7.4
- tar: 7.5.13
+ tar: 7.5.15
tinyglobby: 0.2.16
undici: 6.25.0
which: 6.0.1
- node-releases@2.0.38: {}
+ node-releases@2.0.44: {}
nopt@9.0.0:
dependencies:
@@ -15436,7 +15562,7 @@ snapshots:
p-retry@6.2.1:
dependencies:
'@types/retry': 0.12.2
- is-network-error: 1.3.1
+ is-network-error: 1.3.2
retry: 0.13.1
p-timeout@3.2.0:
@@ -15481,7 +15607,7 @@ snapshots:
proc-log: 6.1.0
sigstore: 4.1.0
ssri: 13.0.1
- tar: 7.5.13
+ tar: 7.5.15
transitivePeerDependencies:
- supports-color
@@ -15533,7 +15659,7 @@ snapshots:
path-scurry@2.0.2:
dependencies:
- lru-cache: 11.3.5
+ lru-cache: 11.4.0
minipass: 7.1.3
path-to-regexp@0.1.13: {}
@@ -15618,43 +15744,43 @@ snapshots:
possible-typed-array-names@1.1.0: {}
- postcss-loader@8.2.1(postcss@8.5.13)(typescript@6.0.3)(webpack@5.106.2(esbuild@0.28.0)):
+ postcss-loader@8.2.1(postcss@8.5.13)(typescript@6.0.3)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
cosmiconfig: 9.0.1(typescript@6.0.3)
- jiti: 2.6.1
+ jiti: 2.7.0
postcss: 8.5.13
semver: 7.7.4
optionalDependencies:
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
transitivePeerDependencies:
- typescript
postcss-media-query-parser@0.2.3: {}
- postcss-modules-extract-imports@3.1.0(postcss@8.5.13):
+ postcss-modules-extract-imports@3.1.0(postcss@8.5.14):
dependencies:
- postcss: 8.5.13
+ postcss: 8.5.14
- postcss-modules-local-by-default@4.2.0(postcss@8.5.13):
+ postcss-modules-local-by-default@4.2.0(postcss@8.5.14):
dependencies:
- icss-utils: 5.1.0(postcss@8.5.13)
- postcss: 8.5.13
+ icss-utils: 5.1.0(postcss@8.5.14)
+ postcss: 8.5.14
postcss-selector-parser: 7.1.1
postcss-value-parser: 4.2.0
- postcss-modules-scope@3.2.1(postcss@8.5.13):
+ postcss-modules-scope@3.2.1(postcss@8.5.14):
dependencies:
- postcss: 8.5.13
+ postcss: 8.5.14
postcss-selector-parser: 7.1.1
- postcss-modules-values@4.0.0(postcss@8.5.13):
+ postcss-modules-values@4.0.0(postcss@8.5.14):
dependencies:
- icss-utils: 5.1.0(postcss@8.5.13)
- postcss: 8.5.13
+ icss-utils: 5.1.0(postcss@8.5.14)
+ postcss: 8.5.14
- postcss-safe-parser@7.0.1(postcss@8.5.13):
+ postcss-safe-parser@7.0.1(postcss@8.5.14):
dependencies:
- postcss: 8.5.13
+ postcss: 8.5.14
postcss-selector-parser@7.1.1:
dependencies:
@@ -15669,6 +15795,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.14:
+ dependencies:
+ nanoid: 3.3.12
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
powershell-utils@0.1.0: {}
prelude-ls@1.2.1: {}
@@ -15691,21 +15823,21 @@ snapshots:
proto3-json-serializer@3.0.4:
dependencies:
- protobufjs: 7.5.6
+ protobufjs: 7.6.0
- protobufjs@7.5.6:
+ protobufjs@7.6.0:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
'@protobufjs/codegen': 2.0.5
'@protobufjs/eventemitter': 1.1.0
- '@protobufjs/fetch': 1.1.0
+ '@protobufjs/fetch': 1.1.1
'@protobufjs/float': 1.0.2
- '@protobufjs/inquire': 1.1.1
+ '@protobufjs/inquire': 1.1.2
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.1
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
long: 5.3.2
proxy-addr@2.0.7:
@@ -15759,7 +15891,7 @@ snapshots:
devtools-protocol: 0.0.1595872
typed-query-selector: 2.12.2
webdriver-bidi-protocol: 0.4.1
- ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
transitivePeerDependencies:
- bare-abort-controller
- bare-buffer
@@ -15797,7 +15929,7 @@ snapshots:
dependencies:
side-channel: 1.1.0
- qs@6.15.1:
+ qs@6.15.2:
dependencies:
side-channel: 1.1.0
@@ -15822,7 +15954,7 @@ snapshots:
unicode-properties: 1.4.1
urijs: 1.19.11
wordwrap: 1.0.0
- yaml: 2.8.4
+ yaml: 2.9.0
transitivePeerDependencies:
- encoding
@@ -15939,27 +16071,25 @@ snapshots:
resolve-from@4.0.0: {}
- resolve-pkg-maps@1.0.0: {}
-
resolve-url-loader@5.0.0:
dependencies:
adjust-sourcemap-loader: 4.0.0
convert-source-map: 1.9.0
loader-utils: 2.0.4
- postcss: 8.5.13
+ postcss: 8.5.14
source-map: 0.6.1
resolve@1.22.12:
dependencies:
es-errors: 1.3.0
- is-core-module: 2.16.1
+ is-core-module: 2.16.2
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- resolve@2.0.0-next.6:
+ resolve@2.0.0-next.7:
dependencies:
es-errors: 1.3.0
- is-core-module: 2.16.1
+ is-core-module: 2.16.2
node-exports-info: 1.6.0
object-keys: 1.1.1
path-parse: 1.0.7
@@ -16002,26 +16132,26 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown@1.0.0-rc.18:
+ rolldown@1.0.0:
dependencies:
- '@oxc-project/types': 0.128.0
- '@rolldown/pluginutils': 1.0.0-rc.18
+ '@oxc-project/types': 0.129.0
+ '@rolldown/pluginutils': 1.0.0
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.0-rc.18
- '@rolldown/binding-darwin-arm64': 1.0.0-rc.18
- '@rolldown/binding-darwin-x64': 1.0.0-rc.18
- '@rolldown/binding-freebsd-x64': 1.0.0-rc.18
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.18
- '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.18
- '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.18
- '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.18
- '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.18
- '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.18
- '@rolldown/binding-linux-x64-musl': 1.0.0-rc.18
- '@rolldown/binding-openharmony-arm64': 1.0.0-rc.18
- '@rolldown/binding-wasm32-wasi': 1.0.0-rc.18
- '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.18
- '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.18
+ '@rolldown/binding-android-arm64': 1.0.0
+ '@rolldown/binding-darwin-arm64': 1.0.0
+ '@rolldown/binding-darwin-x64': 1.0.0
+ '@rolldown/binding-freebsd-x64': 1.0.0
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.0
+ '@rolldown/binding-linux-arm64-gnu': 1.0.0
+ '@rolldown/binding-linux-arm64-musl': 1.0.0
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.0
+ '@rolldown/binding-linux-s390x-gnu': 1.0.0
+ '@rolldown/binding-linux-x64-gnu': 1.0.0
+ '@rolldown/binding-linux-x64-musl': 1.0.0
+ '@rolldown/binding-openharmony-arm64': 1.0.0
+ '@rolldown/binding-wasm32-wasi': 1.0.0
+ '@rolldown/binding-win32-arm64-msvc': 1.0.0
+ '@rolldown/binding-win32-x64-msvc': 1.0.0
rollup-license-plugin@3.2.1:
dependencies:
@@ -16041,12 +16171,12 @@ snapshots:
optionalDependencies:
'@babel/code-frame': 7.29.0
- rollup-plugin-sourcemaps2@0.5.6(@types/node@22.19.17)(rollup@4.60.2):
+ rollup-plugin-sourcemaps2@0.5.6(@types/node@22.19.19)(rollup@4.60.2):
dependencies:
'@rollup/pluginutils': 5.3.0(rollup@4.60.2)
rollup: 4.60.2
optionalDependencies:
- '@types/node': 22.19.17
+ '@types/node': 22.19.19
rollup@4.60.2:
dependencies:
@@ -16128,12 +16258,12 @@ snapshots:
safer-buffer@2.1.2: {}
- sass-loader@16.0.7(sass@1.99.0)(webpack@5.106.2(esbuild@0.28.0)):
+ sass-loader@16.0.7(sass@1.99.0)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
neo-async: 2.6.2
optionalDependencies:
sass: 1.99.0
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
sass@1.99.0:
dependencies:
@@ -16173,6 +16303,8 @@ snapshots:
semver@7.7.4: {}
+ semver@7.8.0: {}
+
send@0.19.2:
dependencies:
debug: 2.6.9
@@ -16385,11 +16517,11 @@ snapshots:
dependencies:
agent-base: 7.1.4
debug: 4.4.3(supports-color@10.2.2)
- socks: 2.8.8
+ socks: 2.8.9
transitivePeerDependencies:
- supports-color
- socks@2.8.8:
+ socks@2.8.9:
dependencies:
ip-address: 10.2.0
smart-buffer: 4.2.0
@@ -16404,11 +16536,11 @@ snapshots:
source-map-js@1.2.1: {}
- source-map-loader@5.0.0(webpack@5.106.2(esbuild@0.28.0)):
+ source-map-loader@5.0.0(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
iconv-lite: 0.6.3
source-map-js: 1.2.1
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
source-map-support@0.5.21:
dependencies:
@@ -16559,12 +16691,12 @@ snapshots:
string-width@7.2.0:
dependencies:
emoji-regex: 10.6.0
- get-east-asian-width: 1.5.0
+ get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
string-width@8.2.1:
dependencies:
- get-east-asian-width: 1.5.0
+ get-east-asian-width: 1.6.0
strip-ansi: 7.2.0
string.prototype.trim@1.2.10:
@@ -16660,7 +16792,7 @@ snapshots:
- bare-buffer
- react-native-b4a
- tar@7.5.13:
+ tar@7.5.15:
dependencies:
'@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0
@@ -16684,7 +16816,18 @@ snapshots:
- bare-abort-controller
- react-native-b4a
- terser-webpack-plugin@5.5.0(esbuild@0.28.0)(webpack@5.106.2(esbuild@0.28.0)):
+ terser-webpack-plugin@5.6.0(esbuild@0.28.0)(postcss@8.5.13)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ jest-worker: 27.5.1
+ schema-utils: 4.3.3
+ terser: 5.46.2
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
+ optionalDependencies:
+ esbuild: 0.28.0
+ postcss: 8.5.13
+
+ terser-webpack-plugin@5.6.0(esbuild@0.28.0)(webpack@5.106.2(esbuild@0.28.0)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
@@ -16759,7 +16902,7 @@ snapshots:
dependencies:
is-number: 7.0.0
- toad-cache@3.7.0: {}
+ toad-cache@3.7.1: {}
toidentifier@1.0.1: {}
@@ -16796,10 +16939,9 @@ snapshots:
tslib@2.8.1: {}
- tsx@4.21.0:
+ tsx@4.22.3:
dependencies:
- esbuild: 0.27.7
- get-tsconfig: 4.14.0
+ esbuild: 0.28.0
optionalDependencies:
fsevents: 2.3.3
@@ -16834,9 +16976,9 @@ snapshots:
media-typer: 0.3.0
mime-types: 2.1.35
- type-is@2.0.1:
+ type-is@2.1.0:
dependencies:
- content-type: 1.0.5
+ content-type: 2.0.0
media-typer: 1.1.0
mime-types: 3.0.2
@@ -16983,9 +17125,9 @@ snapshots:
- encoding
- supports-color
- verdaccio-auth-memory@13.0.0:
+ verdaccio-auth-memory@13.0.1:
dependencies:
- '@verdaccio/core': 8.0.0
+ '@verdaccio/core': 8.1.0
debug: 4.4.3(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
@@ -17047,28 +17189,28 @@ snapshots:
core-util-is: 1.0.2
extsprintf: 1.3.0
- vite@7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4):
+ vite@7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0):
dependencies:
esbuild: 0.27.7
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
- postcss: 8.5.13
+ postcss: 8.5.14
rollup: 4.60.2
tinyglobby: 0.2.16
optionalDependencies:
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
fsevents: 2.3.3
- jiti: 2.6.1
+ jiti: 2.7.0
less: 4.6.4
sass: 1.99.0
terser: 5.46.2
- tsx: 4.21.0
- yaml: 2.8.4
+ tsx: 4.22.3
+ yaml: 2.9.0
- vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.2)(@vitest/coverage-v8@4.1.5)(jiti@2.6.1)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4):
+ vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@24.12.4)(@vitest/coverage-v8@4.1.5)(jiti@2.7.0)(jsdom@29.1.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0):
dependencies:
'@vitest/expect': 4.1.5
- '@vitest/mocker': 4.1.5(vite@7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))
+ '@vitest/mocker': 4.1.5(vite@7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.5
'@vitest/runner': 4.1.5
'@vitest/snapshot': 4.1.5
@@ -17085,11 +17227,11 @@ snapshots:
tinyexec: 1.1.2
tinyglobby: 0.2.16
tinyrainbow: 3.1.0
- vite: 7.3.2(@types/node@24.12.2)(jiti@2.6.1)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)
+ vite: 7.3.2(@types/node@24.12.4)(jiti@2.7.0)(less@4.6.4)(sass@1.99.0)(terser@5.46.2)(tsx@4.22.3)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.1
- '@types/node': 24.12.2
+ '@types/node': 24.12.4
'@vitest/coverage-v8': 4.1.5(vitest@4.1.5)
jsdom: 29.1.1
transitivePeerDependencies:
@@ -17133,6 +17275,19 @@ snapshots:
webidl-conversions@8.0.1: {}
+ webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
+ dependencies:
+ colorette: 2.0.20
+ memfs: 4.57.2(tslib@2.8.1)
+ mime-types: 3.0.2
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ schema-utils: 4.3.3
+ optionalDependencies:
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
+ transitivePeerDependencies:
+ - tslib
+
webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0)):
dependencies:
colorette: 2.0.20
@@ -17146,7 +17301,7 @@ snapshots:
transitivePeerDependencies:
- tslib
- webpack-dev-middleware@8.0.3(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0)):
+ webpack-dev-middleware@8.0.3(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
memfs: 4.57.2(tslib@2.8.1)
mime-types: 3.0.2
@@ -17154,10 +17309,49 @@ snapshots:
range-parser: 1.2.1
schema-utils: 4.3.3
optionalDependencies:
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
transitivePeerDependencies:
- tslib
+ webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
+ dependencies:
+ '@types/bonjour': 3.5.13
+ '@types/connect-history-api-fallback': 1.5.4
+ '@types/express': 4.17.25
+ '@types/express-serve-static-core': 4.19.8
+ '@types/serve-index': 1.9.4
+ '@types/serve-static': 1.15.10
+ '@types/sockjs': 0.3.36
+ '@types/ws': 8.18.1
+ ansi-html-community: 0.0.8
+ bonjour-service: 1.3.0
+ chokidar: 3.6.0
+ colorette: 2.0.20
+ compression: 1.8.1
+ connect-history-api-fallback: 2.0.0
+ express: 4.22.2
+ graceful-fs: 4.2.11
+ http-proxy-middleware: 2.0.9(@types/express@4.17.25)
+ ipaddr.js: 2.4.0
+ launch-editor: 2.13.2
+ open: 10.2.0
+ p-retry: 6.2.1
+ schema-utils: 4.3.3
+ selfsigned: 5.5.0
+ serve-index: 1.9.2
+ sockjs: 0.3.24
+ spdy: 4.0.2
+ webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ optionalDependencies:
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
+ transitivePeerDependencies:
+ - bufferutil
+ - debug
+ - supports-color
+ - tslib
+ - utf-8-validate
+
webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.2(esbuild@0.28.0)):
dependencies:
'@types/bonjour': 3.5.13
@@ -17174,7 +17368,7 @@ snapshots:
colorette: 2.0.20
compression: 1.8.1
connect-history-api-fallback: 2.0.0
- express: 4.22.1
+ express: 4.22.2
graceful-fs: 4.2.11
http-proxy-middleware: 2.0.9(@types/express@4.17.25)
ipaddr.js: 2.4.0
@@ -17187,7 +17381,7 @@ snapshots:
sockjs: 0.3.24
spdy: 4.0.2
webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.106.2(esbuild@0.28.0))
- ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
+ ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6)
optionalDependencies:
webpack: 5.106.2(esbuild@0.28.0)
transitivePeerDependencies:
@@ -17205,15 +17399,55 @@ snapshots:
webpack-sources@3.4.1: {}
- webpack-subresource-integrity@5.1.0(webpack@5.106.2(esbuild@0.28.0)):
+ webpack-subresource-integrity@5.1.0(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13)):
dependencies:
typed-assert: 1.0.9
- webpack: 5.106.2(esbuild@0.28.0)
+ webpack: 5.106.2(esbuild@0.28.0)(postcss@8.5.13)
webpack@5.106.2(esbuild@0.28.0):
dependencies:
'@types/eslint-scope': 3.7.7
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
+ '@types/json-schema': 7.0.15
+ '@webassemblyjs/ast': 1.14.1
+ '@webassemblyjs/wasm-edit': 1.14.1
+ '@webassemblyjs/wasm-parser': 1.14.1
+ acorn: 8.16.0
+ acorn-import-phases: 1.0.4(acorn@8.16.0)
+ browserslist: 4.28.2
+ chrome-trace-event: 1.0.4
+ enhanced-resolve: 5.21.4
+ es-module-lexer: 2.1.0
+ eslint-scope: 5.1.1
+ events: 3.3.0
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ loader-runner: 4.3.2
+ mime-db: 1.54.0
+ neo-async: 2.6.2
+ schema-utils: 4.3.3
+ tapable: 2.3.3
+ terser-webpack-plugin: 5.6.0(esbuild@0.28.0)(webpack@5.106.2(esbuild@0.28.0))
+ watchpack: 2.5.1
+ webpack-sources: 3.4.1
+ transitivePeerDependencies:
+ - '@minify-html/node'
+ - '@swc/core'
+ - '@swc/css'
+ - '@swc/html'
+ - clean-css
+ - cssnano
+ - csso
+ - esbuild
+ - html-minifier-terser
+ - lightningcss
+ - postcss
+ - uglify-js
+
+ webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13):
+ dependencies:
+ '@types/eslint-scope': 3.7.7
+ '@types/estree': 1.0.9
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
@@ -17222,7 +17456,7 @@ snapshots:
acorn-import-phases: 1.0.4(acorn@8.16.0)
browserslist: 4.28.2
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.21.0
+ enhanced-resolve: 5.21.4
es-module-lexer: 2.1.0
eslint-scope: 5.1.1
events: 3.3.0
@@ -17233,12 +17467,21 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.3
- terser-webpack-plugin: 5.5.0(esbuild@0.28.0)(webpack@5.106.2(esbuild@0.28.0))
+ terser-webpack-plugin: 5.6.0(esbuild@0.28.0)(postcss@8.5.13)(webpack@5.106.2(esbuild@0.28.0)(postcss@8.5.13))
watchpack: 2.5.1
webpack-sources: 3.4.1
transitivePeerDependencies:
+ - '@minify-html/node'
- '@swc/core'
+ - '@swc/css'
+ - '@swc/html'
+ - clean-css
+ - cssnano
+ - csso
- esbuild
+ - html-minifier-terser
+ - lightningcss
+ - postcss
- uglify-js
websocket-driver@0.7.4:
@@ -17317,6 +17560,10 @@ snapshots:
dependencies:
isexe: 4.0.0
+ which@7.0.0:
+ dependencies:
+ isexe: 4.0.0
+
why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
@@ -17359,7 +17606,7 @@ snapshots:
bufferutil: 4.1.0
utf-8-validate: 6.0.6
- ws@8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6):
+ ws@8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6):
optionalDependencies:
bufferutil: 4.1.0
utf-8-validate: 6.0.6
@@ -17391,9 +17638,7 @@ snapshots:
yallist@5.0.0: {}
- yaml@2.8.3: {}
-
- yaml@2.8.4: {}
+ yaml@2.9.0: {}
yargs-parser@20.2.9: {}
@@ -17447,4 +17692,4 @@ snapshots:
zod@4.4.2: {}
- zone.js@0.16.1: {}
+ zone.js@0.16.2: {}
diff --git a/tests/e2e/ng-snapshot/package.json b/tests/e2e/ng-snapshot/package.json
index 4940441713ff..d4e1fd4a3b19 100644
--- a/tests/e2e/ng-snapshot/package.json
+++ b/tests/e2e/ng-snapshot/package.json
@@ -2,21 +2,21 @@
"description": "snapshot versions of Angular for e2e testing",
"private": true,
"dependencies": {
- "@angular/animations": "github:angular/animations-builds#75b67fb20e34c1690a19a732b3106e8f7f454fc6",
- "@angular/cdk": "github:angular/cdk-builds#c72d7297744f01f13435202e10764c11fb0fbb98",
- "@angular/common": "github:angular/common-builds#504daec05383ce402fdae16ae19a46f8d155d256",
- "@angular/compiler": "github:angular/compiler-builds#4e3014c69a825409e6a2c827ceb0f89dd8f9405a",
- "@angular/compiler-cli": "github:angular/compiler-cli-builds#88464c173ccd1562c3bdfa22cfc725de2f75f255",
- "@angular/core": "github:angular/core-builds#d91229659aa8ac4e3964fdf7cbfaa27a50c95f54",
- "@angular/forms": "github:angular/forms-builds#6aba91146ca0274ab19a0fece82cbee84320dfb1",
- "@angular/language-service": "github:angular/language-service-builds#76ebde7592c9feaa7bc872d68a1739b21feeaba9",
- "@angular/localize": "github:angular/localize-builds#0de5d9668a484206dd63cf46e66808c98880e4eb",
- "@angular/material": "github:angular/material-builds#26d021024aa905c5d42a4cd9b67f757a71ed7e3c",
- "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#35cb51e92f3e8990842eae2e1bded148c0c6b0af",
- "@angular/platform-browser": "github:angular/platform-browser-builds#bde6d33678b0ebbecc1a913d10d78fde8b29e863",
- "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#60a4602660f1d5531ea88aaf725c2dac5b5e5ca5",
- "@angular/platform-server": "github:angular/platform-server-builds#40d7868dc10c1cf638a3e2ba900f56940e61fca3",
- "@angular/router": "github:angular/router-builds#300fe35fbdab61f9032627faddc9e2bbe645e1bf",
- "@angular/service-worker": "github:angular/service-worker-builds#87dd428569f12a519f7e89679173a25fca2e2779"
+ "@angular/animations": "github:angular/animations-builds#bd3a434a99ebf09a8098d666c42e5646fb4c5711",
+ "@angular/cdk": "github:angular/cdk-builds#06248e11a309a454b9ac30f6e18e4e12c96f25af",
+ "@angular/common": "github:angular/common-builds#b7c6a8e28891dfa7ebf9e90c4b9019d913fe2842",
+ "@angular/compiler": "github:angular/compiler-builds#6fe948250ed116feefde4e98726df86f0c12dc46",
+ "@angular/compiler-cli": "github:angular/compiler-cli-builds#de167999390564fa242f07272d9cca6e366a66ce",
+ "@angular/core": "github:angular/core-builds#e53fa344a5f670d06ec7f3eb1c35401a455e8841",
+ "@angular/forms": "github:angular/forms-builds#490e7e730b910d5e901bb55dd03e1c34fa7c90c9",
+ "@angular/language-service": "github:angular/language-service-builds#0b75c030531ab1dad9629f02ccbfabf24247cd2d",
+ "@angular/localize": "github:angular/localize-builds#5355950bc589ff115be5a11b9408fafea5147ea9",
+ "@angular/material": "github:angular/material-builds#942bd4bf832c27e0aa4435b55750a77555af7bc9",
+ "@angular/material-moment-adapter": "github:angular/material-moment-adapter-builds#6d5fa3504b4685cb443ff1ea12bf6294f876da05",
+ "@angular/platform-browser": "github:angular/platform-browser-builds#71a1247ccaddfe722f3450dde189834ab842e895",
+ "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds#2880d0153aa6bdd6a6398b0ec7bf0641a12aba1c",
+ "@angular/platform-server": "github:angular/platform-server-builds#48726fc18cc19ce910db6d176f4f92ddffff1ce4",
+ "@angular/router": "github:angular/router-builds#33d10905e36758a671d68bb1828cba4493f7bf51",
+ "@angular/service-worker": "github:angular/service-worker-builds#011f7afb9f86ba189a398650783dd93e716e85fe"
}
}
diff --git a/tests/e2e/tests/build/chunk-optimizer-env.ts b/tests/e2e/tests/build/chunk-optimizer-env.ts
index a7814ee7ac5c..5453b2e042d2 100644
--- a/tests/e2e/tests/build/chunk-optimizer-env.ts
+++ b/tests/e2e/tests/build/chunk-optimizer-env.ts
@@ -23,16 +23,12 @@ export default async function () {
...process.env,
NG_BUILD_OPTIMIZE_CHUNKS: 'true',
});
- const files1Opt = await readdir('dist/test-project/browser');
- const jsFiles1Opt = files1Opt.filter((f) => f.endsWith('.js'));
// Build with forced off
await execWithEnv('ng', ['build', '--output-hashing=none'], {
...process.env,
NG_BUILD_OPTIMIZE_CHUNKS: 'false',
});
- const files1Unopt = await readdir('dist/test-project/browser');
- const jsFiles1Unopt = files1Unopt.filter((f) => f.endsWith('.js'));
// We just verify it runs without error.
// With 1 chunk it might not be able to optimize further, so counts might be equal.
diff --git a/tests/e2e/tests/commands/serve/assets.ts b/tests/e2e/tests/commands/serve/assets.ts
index 83fcb42aa8f2..dba1abea37cb 100644
--- a/tests/e2e/tests/commands/serve/assets.ts
+++ b/tests/e2e/tests/commands/serve/assets.ts
@@ -1,59 +1,31 @@
import assert from 'node:assert';
-import { randomUUID } from 'node:crypto';
-import { mkdir, rm, writeFile } from 'node:fs/promises';
-import { ngServe, updateJsonFile } from '../../../utils/project';
+import { ngServe } from '../../../utils/project';
import { getGlobalVariable } from '../../../utils/env';
export default async function () {
- const outsideDirectoryName = `../outside-${randomUUID()}`;
+ const port = await ngServe();
- await updateJsonFile('angular.json', (json) => {
- // Ensure assets located outside the workspace root work with the dev server
- json.projects['test-project'].architect.build.options.assets.push({
- 'input': outsideDirectoryName,
- 'glob': '**/*',
- 'output': './outside',
- });
- });
-
- await mkdir(outsideDirectoryName);
- try {
- await writeFile(`${outsideDirectoryName}/some-asset.xyz`, 'XYZ');
-
- const port = await ngServe();
-
- let response = await fetch(`http://localhost:${port}/favicon.ico`);
- assert.strictEqual(response.status, 200, 'favicon.ico response should be ok');
-
- response = await fetch(`http://localhost:${port}/outside/some-asset.xyz`);
- assert.strictEqual(response.status, 200, 'outside/some-asset.xyz response should be ok');
- assert.strictEqual(await response.text(), 'XYZ', 'outside/some-asset.xyz content is wrong');
+ let response = await fetch(`http://localhost:${port}/favicon.ico`);
+ assert.strictEqual(response.status, 200, 'favicon.ico response should be ok');
- // A non-existent HTML file request with accept header should fallback to the index HTML
- response = await fetch(`http://localhost:${port}/does-not-exist.html`, {
- headers: { accept: 'text/html' },
- });
- assert.strictEqual(
- response.status,
- 200,
- 'non-existent file response should fallback and be ok',
- );
- assert.match(
- await response.text(),
- / {
+ const result = await exec(
+ MCP_INSPECTOR_COMMAND_NAME,
+ '--cli',
+ 'npx',
+ '--no',
+ '@angular/cli',
+ 'mcp',
+ ...args,
+ );
+
+ return result;
+}
+
+export default async function () {
+ await silentNpm(
+ 'install',
+ '--ignore-scripts',
+ '-g',
+ `${MCP_INSPECTOR_PACKAGE_NAME}@${MCP_INSPECTOR_PACKAGE_VERSION}`,
+ );
+
+ try {
+ // 1. Ensure `run_target` is NOT registered by default (stable-only tools registered)
+ const { stdout: stdoutDefault } = await runInspector('--method', 'tools/list');
+ assert.doesNotMatch(stdoutDefault, /"run_target"/);
+
+ // 2. Ensure `run_target` is registered when explicitly enabled via experimental-tool flag
+ const { stdout: stdoutEnabled } = await runInspector(
+ '-E',
+ 'run_target',
+ '--method',
+ 'tools/list',
+ );
+ assert.match(stdoutEnabled, /"run_target"/);
+
+ // 3. Call run_target with build target
+ const { stdout: stdoutCall } = await runInspector(
+ '-E',
+ 'run_target',
+ '--method',
+ 'tools/call',
+ '--tool-name',
+ 'run_target',
+ '--tool-arg',
+ 'target=build',
+ );
+ assert.match(stdoutCall, /"status":\s*"success"/);
+ // Webpack-based browser builder does not print output paths to stdout logs.
+ // Only esbuild-based application builders output 'Output location: ...' and support outputPath extraction.
+ const esbuild = getGlobalVariable('argv')['esbuild'];
+ if (esbuild) {
+ assert.match(stdoutCall, /"outputPath":\s*"dist\/.+"/);
+ } else {
+ assert.doesNotMatch(stdoutCall, /"outputPath"/);
+ }
+
+ // 4. Call run_target with test target (only for esbuild/Vite test runner, as webpack-based Karma fails on this bazel CI headless runner)
+ if (esbuild) {
+ const { stdout: stdoutTestCall } = await runInspector(
+ '-E',
+ 'run_target',
+ '--method',
+ 'tools/call',
+ '--tool-name',
+ 'run_target',
+ '--tool-arg',
+ 'target=test',
+ );
+ assert.match(stdoutTestCall, /"status":\s*"success"/);
+ }
+ } finally {
+ // 5. Clean up global installation
+ await silentNpm('uninstall', '-g', MCP_INSPECTOR_PACKAGE_NAME);
+ }
+}
diff --git a/tools/package_json_release_filter.jq b/tools/package_json_release_filter.jq
index 8fdae0df46c5..4e7c3c639c67 100644
--- a/tools/package_json_release_filter.jq
+++ b/tools/package_json_release_filter.jq
@@ -16,7 +16,7 @@
# Get the fields from root package.json that should override the project
# package.json, i.e., every field except the following
| ($root
- | del(.bin, .description, .dependencies, .name, .main, .peerDependencies, .optionalDependencies, .typings, .version, .private, .workspaces, .resolutions, .scripts, .["ng-update"], .pnpm, .dependenciesMeta)
+ | del(.bin, .description, .dependencies, .name, .main, .peerDependencies, .optionalDependencies, .typings, .version, .private, .workspaces, .resolutions, .scripts, .["ng-update"], .pnpm, .dependenciesMeta, .packageManager)
) as $root_overrides
# Use the project package.json as a base and override other fields from root