diff --git a/Directory.Packages.props b/Directory.Packages.props index 2c2b29a4..50fb953c 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -33,11 +33,11 @@ - + - + @@ -45,11 +45,11 @@ - + - + diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Customers/CustomersRequestBuilder.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Customers/CustomersRequestBuilder.cs index 90a377eb..1221d8cc 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Customers/CustomersRequestBuilder.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Customers/CustomersRequestBuilder.cs @@ -81,7 +81,7 @@ public CustomersRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) : public async Task PostAsync(global::ApiServiceSDK.Models.Command body, Action> requestConfiguration = default, CancellationToken cancellationToken = default) { #endif - _ = body ?? throw new ArgumentNullException(nameof(body)); + if(ReferenceEquals(body, null)) throw new ArgumentNullException(nameof(body)); var requestInfo = ToPostRequestInformation(body, requestConfiguration); return await RequestAdapter.SendAsync(requestInfo, UntypedNode.CreateFromDiscriminatorValue, default, cancellationToken).ConfigureAwait(false); } @@ -119,7 +119,7 @@ public RequestInformation ToPostRequestInformation(global::ApiServiceSDK.Models. public RequestInformation ToPostRequestInformation(global::ApiServiceSDK.Models.Command body, Action> requestConfiguration = default) { #endif - _ = body ?? throw new ArgumentNullException(nameof(body)); + if(ReferenceEquals(body, null)) throw new ArgumentNullException(nameof(body)); var requestInfo = new RequestInformation(Method.POST, UrlTemplate, PathParameters); requestInfo.Configure(requestConfiguration); requestInfo.Headers.TryAdd("Accept", "application/json"); diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/BillingAddress.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/BillingAddress.cs index 34183b78..094d6c70 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/BillingAddress.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/BillingAddress.cs @@ -51,7 +51,7 @@ public partial class BillingAddress : IParsable /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.BillingAddress CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); return new global::ApiServiceSDK.Models.BillingAddress(); } /// @@ -74,7 +74,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); writer.WriteStringValue("city", City); writer.WriteObjectValue("id", Id); writer.WriteStringValue("street", Street); diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command.cs index 16f9b403..050abf7b 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command.cs @@ -51,7 +51,7 @@ public partial class Command : IParsable /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.Command CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); return new global::ApiServiceSDK.Models.Command(); } /// @@ -74,7 +74,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); writer.WriteObjectValue("billingAddress", BillingAddress); writer.WriteStringValue("firstName", FirstName); writer.WriteStringValue("lastName", LastName); @@ -109,7 +109,7 @@ public partial class Command_billingAddress : IComposedTypeWrapper, IParsable /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.Command.Command_billingAddress CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); var mappingValue = parseNode.GetChildNode("")?.GetStringValue(); var result = new global::ApiServiceSDK.Models.Command.Command_billingAddress(); if("BillingAddress".Equals(mappingValue, StringComparison.OrdinalIgnoreCase)) @@ -144,7 +144,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); if(BillingAddress != null) { writer.WriteObjectValue(null, BillingAddress); @@ -184,7 +184,7 @@ public partial class Command_shippingAddress : IComposedTypeWrapper, IParsable /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.Command.Command_shippingAddress CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); var mappingValue = parseNode.GetChildNode("")?.GetStringValue(); var result = new global::ApiServiceSDK.Models.Command.Command_shippingAddress(); if("".Equals(mappingValue, StringComparison.OrdinalIgnoreCase)) @@ -219,7 +219,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); if(CommandShippingAddressMember1 != null) { writer.WriteObjectValue(null, CommandShippingAddressMember1); diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_billingAddressMember1.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_billingAddressMember1.cs index 6e5f0e63..0a88ab4f 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_billingAddressMember1.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_billingAddressMember1.cs @@ -28,7 +28,7 @@ public Command_billingAddressMember1() /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.Command_billingAddressMember1 CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); return new global::ApiServiceSDK.Models.Command_billingAddressMember1(); } /// @@ -47,7 +47,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); writer.WriteAdditionalData(AdditionalData); } } diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_shippingAddressMember1.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_shippingAddressMember1.cs index 4a8b9701..d8b1d51c 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_shippingAddressMember1.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Command_shippingAddressMember1.cs @@ -28,7 +28,7 @@ public Command_shippingAddressMember1() /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.Command_shippingAddressMember1 CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); return new global::ApiServiceSDK.Models.Command_shippingAddressMember1(); } /// @@ -47,7 +47,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); writer.WriteAdditionalData(AdditionalData); } } diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Response.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Response.cs index f1321f47..12c9b485 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Response.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/Response.cs @@ -59,7 +59,7 @@ public partial class Response : IParsable /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.Response CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); return new global::ApiServiceSDK.Models.Response(); } /// @@ -83,7 +83,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); writer.WriteCollectionOfObjectValues("billingAddresses", BillingAddresses); writer.WriteStringValue("firstName", FirstName); writer.WriteObjectValue("id", Id); diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/ShippingAddress.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/ShippingAddress.cs index c2be3e55..7fdcb804 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/ShippingAddress.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/Models/ShippingAddress.cs @@ -59,7 +59,7 @@ public partial class ShippingAddress : IParsable /// The parse node to use to read the discriminator value and create the object public static global::ApiServiceSDK.Models.ShippingAddress CreateFromDiscriminatorValue(IParseNode parseNode) { - _ = parseNode ?? throw new ArgumentNullException(nameof(parseNode)); + if(ReferenceEquals(parseNode, null)) throw new ArgumentNullException(nameof(parseNode)); return new global::ApiServiceSDK.Models.ShippingAddress(); } /// @@ -83,7 +83,7 @@ public virtual IDictionary> GetFieldDeserializers() /// Serialization writer to use to serialize this model public virtual void Serialize(ISerializationWriter writer) { - _ = writer ?? throw new ArgumentNullException(nameof(writer)); + if(ReferenceEquals(writer, null)) throw new ArgumentNullException(nameof(writer)); writer.WriteStringValue("city", City); writer.WriteObjectValue("id", Id); writer.WriteStringValue("note", Note); diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/kiota-lock.json b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/kiota-lock.json index ff6d2de3..067add58 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/kiota-lock.json +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/ApiServiceSDK/kiota-lock.json @@ -2,7 +2,7 @@ "descriptionHash": "1FE6A40106457C5BBD730F734F79572DD906FA293482FAA891CBBFEC3197561EF2491425E1B140FAC931B9C8B20A9FFA212E1C7DE40C95ABF576C2746164C878", "descriptionLocation": "../../Sandbox.ApiService/documentation/Sandbox.ApiService.json", "lockFileVersion": "1.0.0", - "kiotaVersion": "1.28.0", + "kiotaVersion": "1.29.0", "clientClassName": "ApiClient", "typeAccessModifier": "Public", "clientNamespaceName": "ApiServiceSDK", diff --git a/Sandbox.Modules.CustomerManagement.IntegrationTests/Setup/CustomerApiWebApplicationFactory.cs b/Sandbox.Modules.CustomerManagement.IntegrationTests/Setup/CustomerApiWebApplicationFactory.cs index 92eeb2f5..be6c39dd 100644 --- a/Sandbox.Modules.CustomerManagement.IntegrationTests/Setup/CustomerApiWebApplicationFactory.cs +++ b/Sandbox.Modules.CustomerManagement.IntegrationTests/Setup/CustomerApiWebApplicationFactory.cs @@ -15,8 +15,8 @@ namespace Sandbox.Modules.CustomerManagement.IntegrationTests.Setup; public class CustomerApiWebApplicationFactory : WebApplicationFactory, IAsyncInitializer, IAsyncDisposable { - private readonly PostgreSqlContainer _postgreSqlContainer = new PostgreSqlBuilder().Build(); - private readonly RedisContainer _redisContainer = new RedisBuilder().Build(); + private readonly PostgreSqlContainer _postgreSqlContainer = new PostgreSqlBuilder("postgres:17.6").Build(); + private readonly RedisContainer _redisContainer = new RedisBuilder("redis:7.0").Build(); public async Task InitializeAsync() { diff --git a/artifacts/docker-compose.yaml b/artifacts/docker-compose.yaml index bea93147..c05c65a8 100644 --- a/artifacts/docker-compose.yaml +++ b/artifacts/docker-compose.yaml @@ -1,6 +1,6 @@ services: keycloak: - image: 'quay.io/keycloak/keycloak:26.4' + image: 'quay.io/keycloak/keycloak:26.5@sha256:5fdd7cda82e58775ed124294c7e16fabc33166d38dfc4aabebda7d64e7a964bf' command: - 'start' - '--import-realm' @@ -24,7 +24,7 @@ services: networks: - 'aspire' minio: - image: 'docker.io/minio/minio:RELEASE.2025-09-07T16-13-09Z' + image: 'docker.io/minio/minio:RELEASE.2025-09-07T16-13-09Z@sha256:14cea493d9a34af32f524e538b8346cf79f3321eff8e708c1e2960462bd8936e' command: - 'server' - '/data' @@ -45,7 +45,7 @@ services: networks: - 'aspire' minio-bucket-creator: - image: 'minio/mc:latest' + image: 'minio/mc:latest@sha256:a7fe349ef4bd8521fb8497f55c6042871b2ae640607cf99d9bede5e9bdf11727' command: - '-c' - ' /usr/bin/mc alias set myminio http://minio:9000 $$MinioUser $$MinioPassword; /usr/bin/mc mb myminio/loki; /usr/bin/mc anonymous set public myminio/loki; /usr/bin/mc mb myminio/tempo; /usr/bin/mc anonymous set public myminio/tempo; exit 0;' @@ -60,7 +60,7 @@ services: networks: - 'aspire' loki: - image: 'grafana/loki:latest' + image: 'grafana/loki:latest@sha256:cd6e176883a90c21755f0315688668991634143423f75bdedfef41441b0fdc3c' command: - '--config.file=/etc/loki/loki.yml' - '--config.expand-env=true' @@ -86,7 +86,7 @@ services: networks: - 'aspire' tempo: - image: 'grafana/tempo:latest' + image: 'grafana/tempo:latest@sha256:6b91939230c7f65558599eedcb74a5160dbd218a8a5310b1ed461a9c77c4cab8' command: - '--config.file=/etc/tempo/tempo.yml' - '--config.expand-env=true' @@ -114,7 +114,7 @@ services: networks: - 'aspire' prometheus: - image: 'prom/prometheus:latest' + image: 'prom/prometheus:latest@sha256:3ea2ed3b8cdfe3ff78aa05473a7ad36b916bdf2464c83b06bcd37c1a67620233' command: - '--web.enable-otlp-receiver' - '--web.enable-remote-write-receiver' @@ -130,7 +130,7 @@ services: networks: - 'aspire' blackbox: - image: 'prom/blackbox-exporter:latest' + image: 'prom/blackbox-exporter:latest@sha256:e753ff9f3fc458d02cca5eddab5a77e1c175eee484a8925ac7d524f04366c2fc' command: - '--config.file=/etc/blackbox/blackbox.yml' expose: @@ -143,7 +143,7 @@ services: networks: - 'aspire' grafana: - image: 'grafana/grafana:latest' + image: 'grafana/grafana:latest@sha256:2175aaa91c96733d86d31cf270d5310b278654b03f5718c59de12a865380a31f' environment: PROMETHEUS_ENDPOINT: 'http://prometheus:9090' LOKI_ENDPOINT: 'http://loki:3100' @@ -169,7 +169,7 @@ services: networks: - 'aspire' otelcollector: - image: 'ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest' + image: 'ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib:latest@sha256:f051aff195ad50ed5ad9d95bcdd51d7258200c937def3797cf830366ed62e034' environment: ASPIRE_OTLP_ENDPOINT: '${}' ASPIRE_API_KEY: '' @@ -188,7 +188,7 @@ services: networks: - 'aspire' postgres: - image: 'docker.io/library/postgres:17.6' + image: 'docker.io/library/postgres:18.1@sha256:bfe50b2b0ddd9b55eadedd066fe24c7c6fe06626185b73358c480ea37868024d' environment: POSTGRES_HOST_AUTH_METHOD: 'scram-sha-256' POSTGRES_INITDB_ARGS: '--auth-host=scram-sha-256 --auth-local=scram-sha-256' @@ -204,7 +204,7 @@ services: networks: - 'aspire' cache: - image: 'docker.io/library/redis:8.2' + image: 'docker.io/library/redis:8.4@sha256:47200b04138293fae39737e50878a238b13ec0781083126b1b0c63cf5d992e8d' command: - '-c' - 'redis-server --requirepass $$REDIS_PASSWORD --save 60 1' @@ -331,7 +331,7 @@ services: networks: - 'aspire' data-api: - image: 'mcr.microsoft.com/azure-databases/data-api-builder:1.7.83-rc' + image: 'mcr.microsoft.com/azure-databases/data-api-builder:1.7.83-rc@sha256:970dc3499443d136e4f83d17f2b4eba946333c8cb74f8d310eb5e37a25f9cd82' environment: DAB_ENVIRONMENT: 'production' ConnectionString: 'Host=postgres;Port=5432;Username=postgres;Password=${POSTGRES_PASSWORD};Database=sandbox-db' diff --git a/package.json b/package.json index f12652eb..ec73c65a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "sandbox", - "packageManager": "pnpm@10.26.2", + "packageManager": "pnpm@10.27.0", "module": "true", "license": "MIT", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c76134a..9767b917 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ catalogs: specifier: 5.9.3 version: 5.9.3 zod: - specifier: 4.2.1 - version: 4.2.1 + specifier: 4.3.4 + version: 4.3.4 eslint: '@eslint/js': specifier: 9.39.2 @@ -85,8 +85,8 @@ catalogs: specifier: 2.4.0 version: 2.4.0 typescript-eslint: - specifier: 8.50.1 - version: 8.50.1 + specifier: 8.51.0 + version: 8.51.0 opentelemetry: '@opentelemetry/auto-instrumentations-web': specifier: 0.54.0 @@ -209,7 +209,7 @@ importers: version: 2.8.1 zod: specifier: 'catalog:' - version: 4.2.1 + version: 4.3.4 devDependencies: '@angular/build': specifier: catalog:angular @@ -246,7 +246,7 @@ importers: version: 4.0.16(vitest@4.0.16) angular-eslint: specifier: catalog:eslint - version: 21.1.0(@angular/cli@21.0.4(@types/node@24.10.4)(chokidar@4.0.3))(chokidar@4.0.3)(eslint@9.39.2)(typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3))(typescript@5.9.3) + version: 21.1.0(@angular/cli@21.0.4(@types/node@24.10.4)(chokidar@4.0.3))(chokidar@4.0.3)(eslint@9.39.2)(typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3))(typescript@5.9.3) eslint: specifier: catalog:eslint version: 9.39.2 @@ -273,7 +273,7 @@ importers: version: 5.9.3 typescript-eslint: specifier: catalog:eslint - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) vitest: specifier: catalog:vitest version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(@vitest/ui@4.0.16)(jsdom@27.4.0)(less@4.4.2)(sass@1.93.2) @@ -306,7 +306,7 @@ importers: version: 5.9.3 typescript-eslint: specifier: catalog:eslint - version: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + version: 8.51.0(eslint@9.39.2)(typescript@5.9.3) packages: @@ -2340,16 +2340,16 @@ packages: '@types/urijs@1.19.26': resolution: {integrity: sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==} - '@typescript-eslint/eslint-plugin@8.50.1': - resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + '@typescript-eslint/eslint-plugin@8.51.0': + resolution: {integrity: sha512-XtssGWJvypyM2ytBnSnKtHYOGT+4ZwTnBVl36TA4nRO2f4PRNGz5/1OszHzcZCvcBMh+qb7I06uoCmLTRdR9og==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.1 + '@typescript-eslint/parser': ^8.51.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.1': - resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} + '@typescript-eslint/parser@8.51.0': + resolution: {integrity: sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2361,8 +2361,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.50.1': - resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + '@typescript-eslint/project-service@8.51.0': + resolution: {integrity: sha512-Luv/GafO07Z7HpiI7qeEW5NW8HUtZI/fo/kE0YbtQEFpJRUuR0ajcWfCE5bnMvL7QQFrmT/odMe8QZww8X2nfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -2371,8 +2371,8 @@ packages: resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.50.1': - resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + '@typescript-eslint/scope-manager@8.51.0': + resolution: {integrity: sha512-JhhJDVwsSx4hiOEQPeajGhCWgBMBwVkxC/Pet53EpBVs7zHHtayKefw1jtPaNRXpI9RA2uocdmpdfE7T+NrizA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.48.1': @@ -2381,20 +2381,20 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.50.0': - resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.50.1': - resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + '@typescript-eslint/tsconfig-utils@8.51.0': + resolution: {integrity: sha512-Qi5bSy/vuHeWyir2C8u/uqGMIlIDu8fuiYWv48ZGlZ/k+PRPHtaAu7erpc7p5bzw2WNNSniuxoMSO4Ar6V9OXw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.1': - resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + '@typescript-eslint/type-utils@8.51.0': + resolution: {integrity: sha512-0XVtYzxnobc9K0VU7wRWg1yiUrw4oQzexCG2V2IDxxCxhqBMSMbjB+6o91A+Uc0GWtgjCa3Y8bi7hwI0Tu4n5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2404,22 +2404,22 @@ packages: resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.50.0': - resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.50.1': resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.51.0': + resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.48.1': resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.50.1': - resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + '@typescript-eslint/typescript-estree@8.51.0': + resolution: {integrity: sha512-1qNjGqFRmlq0VW5iVlcyHBbCjPB7y6SxpBkrbhNWMy/65ZoncXCEPJxkRZL8McrseNH6lFhaxCIaX+vBuFnRng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -2431,8 +2431,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.1': - resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + '@typescript-eslint/utils@8.51.0': + resolution: {integrity: sha512-11rZYxSe0zabiKaCP2QAwRf/dnmgFgvTmeDTtZvUvXG3UuAdg/GU02NExmmIXzz3vLGgMdtrIosI84jITQOxUA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2442,8 +2442,8 @@ packages: resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.50.1': - resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + '@typescript-eslint/visitor-keys@8.51.0': + resolution: {integrity: sha512-mM/JRQOzhVN1ykejrvwnBRV3+7yTKK8tVANVN3o1O0t0v7o+jqdVu9crPy5Y9dov15TJk/FTIgoUGHrTOVL3Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitejs/plugin-basic-ssl@2.1.0': @@ -4626,6 +4626,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -4660,8 +4666,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.50.1: - resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} + typescript-eslint@8.51.0: + resolution: {integrity: sha512-jh8ZuM5oEh2PSdyQG9YAEM1TCGuWenLSuSUhf/irbVUNW9O5FhbFVONviN2TgMTBnUmyHv7E56rYnfLZK6TkiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -4996,8 +5002,8 @@ packages: zod@4.1.13: resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} - zod@4.2.1: - resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} + zod@4.3.4: + resolution: {integrity: sha512-Zw/uYiiyF6pUT1qmKbZziChgNPRu+ZRneAsMUDU6IwmXdWt5JwcUfy2bvLOCUtz5UniaN/Zx5aFttZYbYc7O/A==} zone.js@0.15.1: resolution: {integrity: sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==} @@ -6976,28 +6982,28 @@ snapshots: '@types/urijs@1.19.26': {} - '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/type-utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 eslint: 9.39.2 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 eslint: 9.39.2 typescript: 5.9.3 @@ -7006,17 +7012,17 @@ snapshots: '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -7027,41 +7033,41 @@ snapshots: '@typescript-eslint/types': 8.48.1 '@typescript-eslint/visitor-keys': 8.48.1 - '@typescript-eslint/scope-manager@8.50.1': + '@typescript-eslint/scope-manager@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.51.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.48.1': {} - '@typescript-eslint/types@8.50.0': {} - '@typescript-eslint/types@8.50.1': {} + '@typescript-eslint/types@8.51.0': {} + '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3) @@ -7077,17 +7083,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.51.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/project-service': 8.51.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.51.0(typescript@5.9.3) + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/visitor-keys': 8.51.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -7103,12 +7109,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.1(eslint@9.39.2)(typescript@5.9.3)': + '@typescript-eslint/utils@8.51.0(eslint@9.39.2)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.51.0 + '@typescript-eslint/types': 8.51.0 + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -7119,9 +7125,9 @@ snapshots: '@typescript-eslint/types': 8.48.1 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.50.1': + '@typescript-eslint/visitor-keys@8.51.0': dependencies: - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/types': 8.51.0 eslint-visitor-keys: 4.2.1 '@vitejs/plugin-basic-ssl@2.1.0(vite@7.2.2(@types/node@24.10.4)(less@4.4.2)(sass@1.93.2))': @@ -7299,7 +7305,7 @@ snapshots: '@algolia/requester-fetch': 5.40.1 '@algolia/requester-node-http': 5.40.1 - angular-eslint@21.1.0(@angular/cli@21.0.4(@types/node@24.10.4)(chokidar@4.0.3))(chokidar@4.0.3)(eslint@9.39.2)(typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3))(typescript@5.9.3): + angular-eslint@21.1.0(@angular/cli@21.0.4(@types/node@24.10.4)(chokidar@4.0.3))(chokidar@4.0.3)(eslint@9.39.2)(typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3))(typescript@5.9.3): dependencies: '@angular-devkit/core': 21.0.2(chokidar@4.0.3) '@angular-devkit/schematics': 21.0.2(chokidar@4.0.3) @@ -7313,7 +7319,7 @@ snapshots: '@typescript-eslint/utils': 8.48.1(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 - typescript-eslint: 8.50.1(eslint@9.39.2)(typescript@5.9.3) + typescript-eslint: 8.51.0(eslint@9.39.2)(typescript@5.9.3) transitivePeerDependencies: - chokidar - supports-color @@ -9691,6 +9697,10 @@ snapshots: dependencies: typescript: 5.9.3 + ts-api-utils@2.4.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + tslib@1.14.1: {} tslib@2.8.1: {} @@ -9746,12 +9756,12 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.50.1(eslint@9.39.2)(typescript@5.9.3): + typescript-eslint@8.51.0(eslint@9.39.2)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.1(eslint@9.39.2)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.51.0(@typescript-eslint/parser@8.51.0(eslint@9.39.2)(typescript@5.9.3))(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/parser': 8.51.0(eslint@9.39.2)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.51.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.51.0(eslint@9.39.2)(typescript@5.9.3) eslint: 9.39.2 typescript: 5.9.3 transitivePeerDependencies: @@ -10035,6 +10045,6 @@ snapshots: zod@4.1.13: {} - zod@4.2.1: {} + zod@4.3.4: {} zone.js@0.15.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fa997a9f..0c4d5823 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -12,7 +12,7 @@ catalog: 'rxjs': '~7.8.2' 'tslib': '2.8.1' 'typescript': '5.9.3' - 'zod': '4.2.1' + 'zod': '4.3.4' catalogs: angular: @@ -48,7 +48,7 @@ catalogs: 'angular-eslint': '21.1.0' 'eslint-config-prettier': '10.1.8' 'eslint-plugin-playwright': '2.4.0' - 'typescript-eslint': '8.50.1' + 'typescript-eslint': '8.51.0' playwright: '@playwright/test': '1.57.0'