From 91cc6f12a2a1536861380d2a614a84c0d4cee43f Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 27 May 2024 22:39:25 +0200 Subject: [PATCH 001/109] Upgrade to latest Spring Modulith releases and optimize dependencies See gh-1483 --- .../SpringModulithBuildCustomizer.java | 30 ++++++++++++------- start-site/src/main/resources/application.yml | 7 ++--- .../SpringModulithBuildCustomizerTests.java | 13 +++++++- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java index 38cde136772..820988ef03e 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java @@ -39,6 +39,8 @@ class SpringModulithBuildCustomizer implements BuildCustomizer { private static final Collection OBSERVABILITY_DEPENDENCIES = List.of("actuator", "datadog", "graphite", "influx", "new-relic", "prometheus", "wavefront", "zipkin"); + private static final Collection PERSISTENCE = List.of("jdbc", "jpa", "mongodb"); + @Override public void customize(Build build) { DependencyContainer dependencies = build.dependencies(); @@ -49,22 +51,30 @@ public void customize(Build build) { dependencies.add("modulith-observability", modulithDependency("observability").scope(DependencyScope.RUNTIME)); } - addEventPublicationRegistryBackend(build); + + boolean persistenceBackendAdded = addEventPublicationRegistryBackend(build); + + if (persistenceBackendAdded) { + dependencies.remove("modulith"); + } + dependencies.add("modulith-starter-test", modulithDependency("starter-test").scope(DependencyScope.TEST_COMPILE)); } - private void addEventPublicationRegistryBackend(Build build) { + private boolean addEventPublicationRegistryBackend(Build build) { DependencyContainer dependencies = build.dependencies(); - if (dependencies.has("data-mongodb")) { - dependencies.add("modulith-starter-mongodb", modulithDependency("starter-mongodb")); - } - if (dependencies.has("data-jdbc")) { - dependencies.add("modulith-starter-jdbc", modulithDependency("starter-jdbc")); - } - if (dependencies.has("data-jpa")) { - dependencies.add("modulith-starter-jpa", modulithDependency("starter-jpa")); + return PERSISTENCE.stream() + .map((it) -> addPersistenceDependency(it, dependencies)) + .reduce(false, (l, r) -> l || r); + } + + private boolean addPersistenceDependency(String store, DependencyContainer dependencies) { + if (!dependencies.has("data-" + store)) { + return false; } + dependencies.add("modulith-starter-" + store, modulithDependency("starter-" + store)); + return true; } private Builder modulithDependency(String name) { diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 225169c8d5c..137a8621c92 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -128,10 +128,9 @@ initializr: versionProperty: spring-modulith.version mappings: - compatibility-range: "[3.2.0,3.3.0-M1)" - version: 1.1.4 - - compatibility-range: "3.3.0-M1" - version: 1.2.0-RC1 - repositories: spring-milestones + version: 1.1.5 + - compatibility-range: "3.3.0" + version: 1.2.0 spring-shell: groupId: org.springframework.shell artifactId: spring-shell-dependencies diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java index e1ea2dd8d09..6e039726bc9 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java @@ -40,9 +40,10 @@ class SpringModulithBuildCustomizerTests extends AbstractExtensionTests { private final SpringModulithBuildCustomizer customizer = new SpringModulithBuildCustomizer(); @Test - void registersTestStarterWhenModulithIsSelected() { + void registersTestAndCoreStarterWhenModulithIsSelected() { Build build = createBuild("modulith"); this.customizer.customize(build); + assertThat(build.dependencies().ids()).contains("modulith"); assertThat(build.dependencies().ids()).contains("modulith-starter-test"); } @@ -70,6 +71,16 @@ void presenceOfSpringDataModuleAddsModuleEventStarter(String store) { build.dependencies().add("data-" + store); this.customizer.customize(build); assertThat(build.dependencies().ids()).contains("modulith-starter-" + store); + assertThat(build.dependencies().ids()).doesNotContain("modulith"); + } + + @ParameterizedTest + @ValueSource(strings = { "jdbc", "jpa", "mongodb" }) + void presenceOfSpringDataModuleRemovesCoreStarter(String store) { + Build build = createBuild("modulith"); + build.dependencies().add("data-" + store); + this.customizer.customize(build); + assertThat(build.dependencies().ids()).doesNotContain("modulith"); } private Build createBuild(String... dependencies) { From 01f64eff75ad4431a47a742338326979340b4ac0 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 28 May 2024 08:28:16 +0200 Subject: [PATCH 002/109] Polish "Upgrade to latest Spring Modulith releases and optimize dependencies" See gh-1483 --- .../springmodulith/SpringModulithBuildCustomizer.java | 5 +---- start-site/src/main/resources/application.yml | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java index 820988ef03e..ac717639f2e 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java @@ -51,13 +51,10 @@ public void customize(Build build) { dependencies.add("modulith-observability", modulithDependency("observability").scope(DependencyScope.RUNTIME)); } - boolean persistenceBackendAdded = addEventPublicationRegistryBackend(build); - if (persistenceBackendAdded) { dependencies.remove("modulith"); } - dependencies.add("modulith-starter-test", modulithDependency("starter-test").scope(DependencyScope.TEST_COMPILE)); } @@ -65,7 +62,7 @@ public void customize(Build build) { private boolean addEventPublicationRegistryBackend(Build build) { DependencyContainer dependencies = build.dependencies(); return PERSISTENCE.stream() - .map((it) -> addPersistenceDependency(it, dependencies)) + .map((persistence) -> addPersistenceDependency(persistence, dependencies)) .reduce(false, (l, r) -> l || r); } diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 137a8621c92..550a6046812 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -129,7 +129,7 @@ initializr: mappings: - compatibility-range: "[3.2.0,3.3.0-M1)" version: 1.1.5 - - compatibility-range: "3.3.0" + - compatibility-range: "[3.3.0,3.4.0-M1)" version: 1.2.0 spring-shell: groupId: org.springframework.shell @@ -219,7 +219,7 @@ initializr: - name: Spring Modulith id: modulith bom: spring-modulith - compatibility-range: "3.2.0" + compatibility-range: "[3.2.0,3.4.0-M1)" group-id: org.springframework.modulith artifact-id: spring-modulith-starter-core description: Support for building modular monolithic applications. From bd3ce300c8f0b4002ca5b9d70149dd359a55138a Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 28 May 2024 09:47:10 +0200 Subject: [PATCH 003/109] Validate and clean up all compatibility ranges There are now no more unbounded ranges in the config, and Spring Cloud has been set to be compatible with 3.2.x only. The configuration is now consistently named 'compatibilityRange', and the range doesn't include any spaces. This removes some useless compatibilityRange declarations. It also moves the compatibilityRange for Spring AI to an upper level. --- start-site/src/main/resources/application.yml | 64 +++++++------------ .../SolaceBinderBuildCustomizerTests.java | 4 +- ...oudCircuitBreakerBuildCustomizerTests.java | 6 +- ...SpringCloudContractConfigurationTests.java | 6 ++ ...oudContractGradleBuildCustomizerTests.java | 33 ++++++---- ...loudContractMavenBuildCustomizerTests.java | 5 +- ...ringCloudFunctionBuildCustomizerTests.java | 5 ++ ...SpringCloudStreamBuildCustomizerTests.java | 11 +++- 8 files changed, 76 insertions(+), 58 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 550a6046812..814f2e99153 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -81,7 +81,7 @@ initializr: artifactId: solace-spring-cloud-bom versionProperty: solace-spring-cloud.version mappings: - - compatibilityRange: "[3.2.0, 3.3.0-M1)" + - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 4.0.0 spring-ai: groupId: org.springframework.ai @@ -97,7 +97,7 @@ initializr: versionProperty: spring-cloud.version order: 50 mappings: - - compatibilityRange: "3.2.0" + - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 2023.0.1 spring-cloud-azure: groupId: com.azure.spring @@ -127,9 +127,9 @@ initializr: artifactId: spring-modulith-bom versionProperty: spring-modulith.version mappings: - - compatibility-range: "[3.2.0,3.3.0-M1)" + - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 1.1.5 - - compatibility-range: "[3.3.0,3.4.0-M1)" + - compatibilityRange: "[3.3.0,3.4.0-M1)" version: 1.2.0 spring-shell: groupId: org.springframework.shell @@ -138,7 +138,7 @@ initializr: mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 3.2.4 - - compatibility-range: "3.3.0-M1" + - compatibilityRange: "[3.3.0,3.4.0-M1)" version: 3.3.0-M1 repositories: spring-milestones timefold-solver: @@ -158,7 +158,7 @@ initializr: gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: - compatibility-range: "3.2.0" + compatibilityRange: "3.2.0" dependencies: - name: Developer Tools content: @@ -170,12 +170,9 @@ initializr: starter: false - name: GraphQL DGS Code Generation id: dgs-codegen - compatibilityRange: "3.2.0" groupId: com.netflix.graphql.dgs.codegen artifactId: graphql-dgs-codegen-gradle - mappings: - - compatibilityRange: "3.2.0" - version: 6.2.1 + version: 6.2.1 description: Generate data types and type-safe APIs for querying GraphQL APIs by parsing schema files. starter: false - name: Spring Boot DevTools @@ -207,7 +204,6 @@ initializr: href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#appendix.configuration-metadata.annotation-processor - name: Docker Compose Support id: docker-compose - compatibilityRange: "3.2.0" groupId: org.springframework.boot artifactId: spring-boot-docker-compose scope: runtime @@ -219,7 +215,7 @@ initializr: - name: Spring Modulith id: modulith bom: spring-modulith - compatibility-range: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" group-id: org.springframework.modulith artifact-id: spring-modulith-starter-core description: Support for building modular monolithic applications. @@ -426,7 +422,6 @@ initializr: - name: OAuth2 Authorization Server id: oauth2-authorization-server description: Spring Boot integration for Spring Authorization Server. - compatibilityRange: "3.2.0-RC1" links: - rel: reference href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#web.security.oauth2.authorization-server @@ -518,17 +513,17 @@ initializr: id: mybatis compatibilityRange: "[3.2.0,3.3.0-M1)" description: Persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. + groupId: org.mybatis.spring.boot + artifactId: mybatis-spring-boot-starter + mappings: + - compatibilityRange: "[3.2.0,3.3.0-M1)" + version: 3.0.3 links: - rel: guide href: https://github.com/mybatis/spring-boot-starter/wiki/Quick-Start description: MyBatis Quick Start - rel: reference href: https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ - groupId: org.mybatis.spring.boot - artifactId: mybatis-spring-boot-starter - mappings: - - compatibilityRange: "3.2.0" - version: 3.0.3 - name: Liquibase Migration id: liquibase description: Liquibase database migration and source control library. @@ -1007,12 +1002,12 @@ initializr: id: wavefront description: Publish metrics and optionally distributed traces to Tanzu Observability by Wavefront, a SaaS-based metrics monitoring and analytics platform that lets you visualize, query, and alert over data from across your entire stack. mappings: - - compatibility-range: "[3.2.0, 3.3.0-M1)" + - compatibilityRange: "[3.2.0,3.3.0-M1)" groupId: com.wavefront artifactId: wavefront-spring-boot-starter version: 3.2.0 starter: true - - compatibility-range: "3.3.0-M1" + - compatibilityRange: "3.3.0-M1" groupId: io.micrometer artifactId: micrometer-registry-wavefront starter: false @@ -1046,6 +1041,7 @@ initializr: href: https://java.testcontainers.org/ - name: Contract Verifier bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" id: cloud-contract-verifier description: Moves TDD to the level of software architecture by enabling Consumer Driven Contract (CDC) development. groupId: org.springframework.cloud @@ -1056,6 +1052,7 @@ initializr: href: https://cloud.spring.io/spring-cloud-contract/reference/htmlsingle/ - name: Contract Stub Runner bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" id: cloud-contract-stub-runner description: Stub Runner for HTTP/Messaging based communication. Allows creating WireMock stubs from RestDocs tests. groupId: org.springframework.cloud @@ -1076,6 +1073,7 @@ initializr: href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#data.nosql.ldap.embedded - name: Spring Cloud bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Cloud Bootstrap id: cloud-starter @@ -1107,6 +1105,7 @@ initializr: href: https://docs.spring.io/spring-cloud-task/docs/current/reference/html/ - name: Spring Cloud Config bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Config Client id: cloud-config-client @@ -1157,6 +1156,7 @@ initializr: description: Spring Cloud Consul Quick Start - name: Spring Cloud Discovery bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Eureka Discovery Client id: cloud-eureka @@ -1198,12 +1198,12 @@ initializr: href: https://docs.spring.io/spring-cloud-consul/docs/current/reference/html/#spring-cloud-consul-discovery - name: Spring Cloud Routing bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Gateway id: cloud-gateway groupId: org.springframework.cloud artifactId: spring-cloud-starter-gateway-mvc - compatibilityRange: "3.2.0" description: Provides a simple, yet effective way to route to APIs in Servlet-based applications. Provides cross-cutting concerns to those APIs such as security, monitoring/metrics, and resiliency. links: - rel: reference @@ -1245,6 +1245,7 @@ initializr: href: https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#spring-cloud-loadbalancer - name: Spring Cloud Circuit Breaker bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Resilience4J id: cloud-resilience4j @@ -1256,6 +1257,7 @@ initializr: href: https://docs.spring.io/spring-cloud-circuitbreaker/docs/current/reference/html/#configuring-resilience4j-circuit-breakers - name: Spring Cloud Messaging bom: spring-cloud + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Cloud Bus id: cloud-bus @@ -1408,10 +1410,10 @@ initializr: - rel: guide href: https://github.com/GoogleCloudPlatform/spring-cloud-gcp/tree/main/spring-cloud-gcp-samples/spring-cloud-gcp-storage-resource-sample - name: AI + compatibilityRange: "[3.2.0,3.3.0-M1)" content: - name: Azure OpenAI id: spring-ai-azure-openai - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-azure-openai-spring-boot-starter description: Spring AI support for Azure’s OpenAI offering, powered by ChatGPT. It extends beyond traditional OpenAI capabilities, delivering AI-driven text generation with enhanced functionality. @@ -1422,7 +1424,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/azure-openai-chat.html - name: Azure AI Search id: spring-ai-vectordb-azure - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-azure-vector-store-spring-boot-starter description: Spring AI vector database support for Azure AI Search. It is an AI-powered information retrieval platform and part of Microsoft’s larger AI platform. Among other features, it allows users to query information using vector-based storage and retrieval. @@ -1433,7 +1434,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/azure.html - name: Amazon Bedrock id: spring-ai-bedrock - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-bedrock-ai-spring-boot-starter description: Spring AI support for Amazon Bedrock. It is a managed service that provides foundation models from various AI providers, available through a unified API. @@ -1444,7 +1444,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/bedrock-chat.html - name: Chroma Vector Database id: spring-ai-vectordb-chroma - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-chroma-store-spring-boot-starter description: Spring AI vector database support for Chroma. It is an open-source embedding database and gives you the tools to store document embeddings, content, and metadata. It also allows to search through those embeddings, including metadata filtering. @@ -1455,7 +1454,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/chroma.html - name: Milvus Vector Database id: spring-ai-vectordb-milvus - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-milvus-store-spring-boot-starter description: Spring AI vector database support for Milvus. It is an open-source vector database that has garnered significant attention in the fields of data science and machine learning. One of its standout features lies in its robust support for vector indexing and querying. @@ -1466,7 +1464,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/milvus.html - name: Mistral AI id: spring-ai-mistral - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-mistral-ai-spring-boot-starter description: Spring AI support for Mistral AI, the open and portable generative AI for devs and businesses. @@ -1477,7 +1474,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/mistralai-chat.html - name: Neo4J Vector Database id: spring-ai-vectordb-neo4j - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-neo4j-store-spring-boot-starter description: Spring AI vector database support for Neo4j's Vector Search. It allows users to query vector embeddings from large datasets. @@ -1488,7 +1484,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/neo4j.html - name: Ollama id: spring-ai-ollama - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-ollama-spring-boot-starter description: Spring AI support for Ollama. It allows you to run various Large Language Models (LLMs) locally and generate text from them. @@ -1499,7 +1494,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/ollama-chat.html - name: OpenAI id: spring-ai-openai - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-openai-spring-boot-starter description: Spring AI support for ChatGPT, the AI language model and DALL-E, the Image generation model from OpenAI. @@ -1510,7 +1504,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html - name: PGvector Vector Database id: spring-ai-vectordb-pgvector - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-pgvector-store-spring-boot-starter description: Spring AI vector database support for PGvector. It is an open-source extension for PostgreSQL that enables storing and searching over machine learning-generated embeddings. @@ -1521,7 +1514,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/pgvector.html - name: Pinecone Vector Database id: spring-ai-vectordb-pinecone - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-pinecone-store-spring-boot-starter description: Spring AI vector database support for Pinecone. It is a popular cloud-based vector database and allows you to store and search vectors efficiently. @@ -1532,7 +1524,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/pinecone.html - name: PostgresML id: spring-ai-postgresml - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-postgresml-spring-boot-starter description: Spring AI support for the PostgresML text embeddings models. @@ -1543,7 +1534,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/embeddings/postgresml-embeddings.html - name: Redis Search and Query Vector Database id: spring-ai-vectordb-redis - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-redis-spring-boot-starter description: Spring AI vector database support for Redis Search and Query.It extends the core features of Redis OSS and allows you to use Redis as a vector database. @@ -1554,7 +1544,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/redis.html - name: Stability AI id: spring-ai-stabilityai - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-stability-ai-spring-boot-starter description: Spring AI support for Stability AI's text to image generation model. @@ -1565,7 +1554,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/image/stabilityai-image.html - name: Transformers (ONNX) Embeddings id: spring-ai-transformers - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-transformers-spring-boot-starter description: Spring AI support for pre-trained transformer models, serialized into the Open Neural Network Exchange (ONNX) format. @@ -1576,7 +1564,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/embeddings/onnx.html - name: Vertex AI PaLM2 id: spring-ai-vertexai-palm2 - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-vertex-ai-palm2-spring-boot-starter description: Spring AI support for Google Vertex PaLM2 chat and embedding models. @@ -1587,7 +1574,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/vertexai-palm2-chat.html - name: Vertex AI Gemini id: spring-ai-vertexai-gemini - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-vertex-ai-gemini-spring-boot-starter description: Spring AI support for Google Vertex Gemini chat. @@ -1598,7 +1584,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/clients/vertexai-gemini-chat.html - name: Qdrant Vector Database id: spring-ai-vectordb-qdrant - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-qdrant-store-spring-boot-starter description: Spring AI vector database support for Qdrant. It is an open-source, high-performance vector search engine/database. @@ -1609,7 +1594,6 @@ initializr: href: https://docs.spring.io/spring-ai/reference/api/vectordbs/qdrant.html - name: Weaviate Vector Database id: spring-ai-vectordb-weaviate - compatibility-range: "[3.2.0,3.3.0-M1)" group-id: org.springframework.ai artifact-id: spring-ai-weaviate-store-spring-boot-starter description: Spring AI vector database support for Weaviate, an open-source vector database. It allows you to store data objects and vector embeddings from your favorite ML-models and scale seamlessly into billions of data objects. diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/solace/SolaceBinderBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/solace/SolaceBinderBuildCustomizerTests.java index decdbcb3c85..6179c263ddb 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/solace/SolaceBinderBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/solace/SolaceBinderBuildCustomizerTests.java @@ -35,7 +35,9 @@ class SolaceBinderBuildCustomizerTests extends AbstractExtensionTests { @Test void binderNotAddedWhenSolaceNotSelected() { - ProjectStructure project = generateProject(createProjectRequest("cloud-stream")); + ProjectRequest request = createProjectRequest("cloud-stream"); + request.setBootVersion(BOOT_VERSION); + ProjectStructure project = generateProject(request); assertNoBinder(project); } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java index 0aeb6e74fec..6cd93abfefe 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java @@ -30,12 +30,15 @@ */ class SpringCloudCircuitBreakerBuildCustomizerTests extends AbstractExtensionTests { - static final Dependency REACTIVE_CLOUD_CIRCUIT_BREAKER = Dependency.withId("cloud-resilience4j-reactive", + private static final String BOOT_VERSION = "3.2.6"; + + private static final Dependency REACTIVE_CLOUD_CIRCUIT_BREAKER = Dependency.withId("cloud-resilience4j-reactive", "org.springframework.cloud", "spring-cloud-starter-circuitbreaker-reactor-resilience4j"); @Test void replacesCircuitBreakerWithReactiveCircuitBreakerWhenReactiveFacetPresent() { ProjectRequest request = createProjectRequest("webflux", "cloud-resilience4j"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("webflux")) .hasDependency(REACTIVE_CLOUD_CIRCUIT_BREAKER) .doesNotHaveDependency("org.springframework.cloud", "spring-cloud-starter-circuitbreaker-resilience4j") @@ -46,6 +49,7 @@ void replacesCircuitBreakerWithReactiveCircuitBreakerWhenReactiveFacetPresent() @Test void doesNotReplaceCircuitBreakerWithReactiveCircuitBreakerWhenReactiveFacetNotPresent() { ProjectRequest request = createProjectRequest("cloud-resilience4j"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-resilience4j")) .doesNotHaveDependency("org.springframework.cloud", "spring-cloud-starter-circuitbreaker-reactor-resilience4j") diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java index dcd71a87ae2..2eabac67de8 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java @@ -31,9 +31,12 @@ */ class SpringCloudContractConfigurationTests extends AbstractExtensionTests { + private static final String BOOT_VERSION = "3.2.6"; + @Test void contractsDirectoryWithMavenIsCreatedWithSpringCloudContractVerifier() { ProjectRequest request = createProjectRequest("web", "cloud-contract-verifier"); + request.setBootVersion(BOOT_VERSION); request.setType("maven-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/test/resources/contracts")).exists().isDirectory(); @@ -42,6 +45,7 @@ void contractsDirectoryWithMavenIsCreatedWithSpringCloudContractVerifier() { @Test void contractsDirectoryWithMavenIsNotCreatedIfSpringCloudContractVerifierIsNotRequested() { ProjectRequest request = createProjectRequest("web"); + request.setBootVersion(BOOT_VERSION); request.setType("maven-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/test/resources/contracts")).doesNotExist(); @@ -50,6 +54,7 @@ void contractsDirectoryWithMavenIsNotCreatedIfSpringCloudContractVerifierIsNotRe @Test void contractsDirectoryWithGradleIsCreatedWithSpringCloudContractVerifier() { ProjectRequest request = createProjectRequest("web", "cloud-contract-verifier"); + request.setBootVersion(BOOT_VERSION); request.setType("gradle-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/contractTest/resources/contracts")).exists() @@ -59,6 +64,7 @@ void contractsDirectoryWithGradleIsCreatedWithSpringCloudContractVerifier() { @Test void contractsDirectoryWithGradleIsNotCreatedIfSpringCloudContractVerifierIsNotRequested() { ProjectRequest request = createProjectRequest("web"); + request.setBootVersion(BOOT_VERSION); request.setType("gradle-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/contractTest/resources/contracts")).doesNotExist(); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java index ad6ae59982f..9043012bacf 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java @@ -31,43 +31,50 @@ */ class SpringCloudContractGradleBuildCustomizerTests extends AbstractExtensionTests { + private static final String BOOT_VERSION = "3.2.6"; + @Test void springCloudContractVerifierPluginAddedWhenSCCDependencyPresent() { - ProjectRequest projectRequest = createProjectRequest("cloud-contract-verifier"); - assertThat(gradleBuild(projectRequest)).contains("id 'org.springframework.cloud.contract' version '"); + ProjectRequest request = createProjectRequest("cloud-contract-verifier"); + request.setBootVersion(BOOT_VERSION); + assertThat(gradleBuild(request)).contains("id 'org.springframework.cloud.contract' version '"); } @Test void springCloudContractVerifierPluginNotAddedWhenSCCDependencyAbsent() { - ProjectRequest projectRequest = createProjectRequest(); - assertThat(gradleBuild(projectRequest)).doesNotContain("org.springframework.cloud.contract"); + ProjectRequest request = createProjectRequest(); + request.setBootVersion(BOOT_VERSION); + assertThat(gradleBuild(request)).doesNotContain("org.springframework.cloud.contract"); } @Test void springCloudContractVerifierPluginContractTestWithJUnit5ByDefault() { - ProjectRequest projectRequest = createProjectRequest("cloud-contract-verifier"); - assertThat(gradleBuild(projectRequest)).containsSubsequence("tasks.named('contractTest') {", - "useJUnitPlatform()"); + ProjectRequest request = createProjectRequest("cloud-contract-verifier"); + request.setBootVersion(BOOT_VERSION); + assertThat(gradleBuild(request)).containsSubsequence("tasks.named('contractTest') {", "useJUnitPlatform()"); } @Test void springCloudContractVerifierPluginWithGroovyDslAndWithTestModeSetWhenWebFluxIsPresent() { - ProjectRequest projectRequest = createProjectRequest("cloud-contract-verifier", "webflux"); - assertThat(gradleBuild(projectRequest)).containsSubsequence("contracts {", "testMode = 'WebTestClient'"); + ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); + request.setBootVersion(BOOT_VERSION); + assertThat(gradleBuild(request)).containsSubsequence("contracts {", "testMode = 'WebTestClient'"); } @Test void springCloudContractVerifierPluginWithKotlinDslAndTestModeSetWhenWebFluxIsPresent() { - ProjectRequest projectRequest = createProjectRequest("cloud-contract-verifier", "webflux"); - assertThat(gradleKotlinDslBuild(projectRequest)) + ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); + request.setBootVersion(BOOT_VERSION); + assertThat(gradleKotlinDslBuild(request)) .contains("import org.springframework.cloud.contract.verifier.config.TestMode") .containsSubsequence("contracts {", "testMode.set(TestMode.WEBTESTCLIENT)"); } @Test void springWebTestClientDependencyAddedWhenWebFluxIsPresent() { - ProjectRequest projectRequest = createProjectRequest("cloud-contract-verifier", "webflux"); - assertThat(gradleBuild(projectRequest)).contains("testImplementation 'io.rest-assured:spring-web-test-client'"); + ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); + request.setBootVersion(BOOT_VERSION); + assertThat(gradleBuild(request)).contains("testImplementation 'io.rest-assured:spring-web-test-client'"); } } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java index c847cc03d16..f1dedd1c1c6 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java @@ -70,11 +70,12 @@ void springCloudContractVerifierPluginWithTestModeSetWhenWebFluxIsPresent() { @Test void springWebTestClientDependencyAddedWhenWebFluxIsPresent() { - ProjectRequest projectRequest = createProjectRequest("cloud-contract-verifier", "webflux"); + ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); + request.setBootVersion(SPRING_BOOT_VERSION); Dependency springWebTestClientDep = Dependency.withId("rest-assured-spring-web-test-client", "io.rest-assured", "spring-web-test-client"); springWebTestClientDep.setScope(Dependency.SCOPE_TEST); - assertThat(mavenPom(projectRequest)).hasDependency(springWebTestClientDep); + assertThat(mavenPom(request)).hasDependency(springWebTestClientDep); } } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java index 8ca22758b4c..9060b9e3dad 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java @@ -32,12 +32,15 @@ */ class SpringCloudFunctionBuildCustomizerTests extends AbstractExtensionTests { + private static final String BOOT_VERSION = "3.2.6"; + static final Dependency WEB_ADAPTER = Dependency.withId("cloud-function-web", "org.springframework.cloud", "spring-cloud-function-web"); @Test void functionOnly() { ProjectRequest request = createProjectRequest("cloud-function"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-function")) .hasDependency(Dependency.createSpringBootStarter("test", Dependency.SCOPE_TEST)) .hasDependency(Dependency.createSpringBootStarter("")) @@ -49,6 +52,7 @@ void functionOnly() { @Test void web() { ProjectRequest request = createProjectRequest("web", "cloud-function"); + request.setBootVersion(BOOT_VERSION); BillOfMaterials bom = getBom("spring-cloud", request.getBootVersion()); assertThat(mavenPom(request)).hasDependency(getDependency("web")) .hasDependency(WEB_ADAPTER) @@ -61,6 +65,7 @@ void web() { @Test void webflux() { ProjectRequest request = createProjectRequest("webflux", "cloud-function"); + request.setBootVersion(BOOT_VERSION); BillOfMaterials bom = getBom("spring-cloud", request.getBootVersion()); assertThat(mavenPom(request)).hasDependency(getDependency("webflux")) .hasDependency(WEB_ADAPTER) diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java index 65af47a8182..dc8bb4ff681 100755 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java @@ -32,6 +32,8 @@ */ class SpringCloudStreamBuildCustomizerTests extends AbstractExtensionTests { + private static final String BOOT_VERSION = "3.2.6"; + private static final Dependency KAFKA_BINDER = Dependency.withId("cloud-stream-binder-kafka", "org.springframework.cloud", "spring-cloud-stream-binder-kafka"); @@ -50,6 +52,7 @@ class SpringCloudStreamBuildCustomizerTests extends AbstractExtensionTests { @Test void springCloudStreamWithRabbit() { ProjectRequest request = createProjectRequest("cloud-stream", "amqp"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("amqp")) .hasDependency(RABBIT_BINDER) @@ -61,6 +64,7 @@ void springCloudStreamWithRabbit() { @Test void springCloudStreamWithKafka() { ProjectRequest request = createProjectRequest("cloud-stream", "kafka"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("kafka")) .hasDependency(KAFKA_BINDER) @@ -72,6 +76,7 @@ void springCloudStreamWithKafka() { @Test void springCloudStreamWithKafkaStreams() { ProjectRequest request = createProjectRequest("cloud-stream", "kafka-streams"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("kafka-streams")) .hasDependency(KAFKA_STREAMS_BINDER) @@ -83,7 +88,7 @@ void springCloudStreamWithKafkaStreams() { @Test void springCloudStreamWithPulsar() { ProjectRequest request = createProjectRequest("cloud-stream", "pulsar"); - request.setBootVersion("3.2.0"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("pulsar")) .hasDependency(PULSAR_BINDER) @@ -93,6 +98,7 @@ void springCloudStreamWithPulsar() { @Test void springCloudStreamWithAllBinders() { ProjectRequest request = createProjectRequest("cloud-stream", "amqp", "kafka", "kafka-streams"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("amqp")) .hasDependency(getDependency("kafka")) @@ -108,6 +114,7 @@ void springCloudStreamWithAllBinders() { @Test void springCloudBusWithRabbit() { ProjectRequest request = createProjectRequest("cloud-bus", "amqp"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-bus")) .hasDependency(getDependency("amqp")) .hasDependency(RABBIT_BINDER) @@ -118,6 +125,7 @@ void springCloudBusWithRabbit() { @Test void springCloudBusWithKafka() { ProjectRequest request = createProjectRequest("cloud-bus", "amqp"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-bus")) .hasDependency(getDependency("amqp")) .hasDependency(RABBIT_BINDER) @@ -128,6 +136,7 @@ void springCloudBusWithKafka() { @Test void springCloudBusWithAllBinders() { ProjectRequest request = createProjectRequest("cloud-bus", "amqp", "kafka", "kafka-streams"); + request.setBootVersion(BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-bus")) .hasDependency(getDependency("amqp")) .hasDependency(getDependency("kafka")) From d939a1ca9732a8184c6a614446b17a6311041590 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 28 May 2024 09:52:37 +0200 Subject: [PATCH 004/109] Polish --- ...ingBootProjectGenerationConfiguration.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springboot/SpringBootProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springboot/SpringBootProjectGenerationConfiguration.java index 6d24a1a40c7..eecae228c65 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springboot/SpringBootProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springboot/SpringBootProjectGenerationConfiguration.java @@ -36,24 +36,20 @@ @ProjectGenerationConfiguration class SpringBootProjectGenerationConfiguration { - private static final String DEVTOOLS_ID = "devtools"; - - private static final String DOCKER_COMPOSE_ID = "docker-compose"; - @Configuration(proxyBeanMethods = false) @ConditionalOnBuildSystem(MavenBuildSystem.ID) static class MavenConfiguration { @Bean - @ConditionalOnRequestedDependency(DEVTOOLS_ID) + @ConditionalOnRequestedDependency("devtools") OptionalDependencyMavenBuildCustomizer devToolsMavenBuildCustomizer() { - return new OptionalDependencyMavenBuildCustomizer(DEVTOOLS_ID); + return new OptionalDependencyMavenBuildCustomizer("devtools"); } @Bean - @ConditionalOnRequestedDependency(DOCKER_COMPOSE_ID) + @ConditionalOnRequestedDependency("docker-compose") OptionalDependencyMavenBuildCustomizer dockerComposeMavenBuildCustomizer() { - return new OptionalDependencyMavenBuildCustomizer(DOCKER_COMPOSE_ID); + return new OptionalDependencyMavenBuildCustomizer("docker-compose"); } } @@ -63,15 +59,15 @@ OptionalDependencyMavenBuildCustomizer dockerComposeMavenBuildCustomizer() { static class GradleConfiguration { @Bean - @ConditionalOnRequestedDependency(DEVTOOLS_ID) + @ConditionalOnRequestedDependency("devtools") DevelopmentOnlyDependencyGradleBuildCustomizer devToolsGradleBuildCustomizer() { - return new DevelopmentOnlyDependencyGradleBuildCustomizer(DEVTOOLS_ID); + return new DevelopmentOnlyDependencyGradleBuildCustomizer("devtools"); } @Bean - @ConditionalOnRequestedDependency(DOCKER_COMPOSE_ID) + @ConditionalOnRequestedDependency("docker-compose") DevelopmentOnlyDependencyGradleBuildCustomizer dockerComposeGradleBuildCustomizer() { - return new DevelopmentOnlyDependencyGradleBuildCustomizer(DOCKER_COMPOSE_ID); + return new DevelopmentOnlyDependencyGradleBuildCustomizer("docker-compose"); } } From 1c8492d9737f1885a0721d26c859332d992288cc Mon Sep 17 00:00:00 2001 From: Damien Vitrac Date: Wed, 15 May 2024 16:58:45 +0200 Subject: [PATCH 005/109] Add history feature See gh-1470 --- start-client/package.json | 1 + start-client/src/components/Application.js | 20 +- .../src/components/common/history/History.js | 23 ++ .../src/components/common/history/Modal.js | 213 ++++++++++++++++++ .../src/components/common/history/Utils.js | 46 ++++ .../src/components/common/history/index.js | 1 + .../src/components/common/icons/Icons.js | 31 +++ .../src/components/common/icons/index.js | 1 + .../src/components/common/layout/SideLeft.js | 20 +- start-client/src/components/reducer/App.js | 34 ++- .../reducer/__tests__/Initializr.js | 2 +- start-client/src/components/utils/ApiUtils.js | 3 + start-client/src/styles/_dark.scss | 7 +- start-client/src/styles/_main.scss | 35 ++- start-client/src/styles/history.scss | 120 ++++++++++ start-client/yarn.lock | 5 + 16 files changed, 554 insertions(+), 8 deletions(-) create mode 100644 start-client/src/components/common/history/History.js create mode 100644 start-client/src/components/common/history/Modal.js create mode 100644 start-client/src/components/common/history/Utils.js create mode 100644 start-client/src/components/common/history/index.js create mode 100644 start-client/src/styles/history.scss diff --git a/start-client/package.json b/start-client/package.json index 5fe0092f8b7..5dbcaa0783c 100644 --- a/start-client/package.json +++ b/start-client/package.json @@ -92,6 +92,7 @@ "js-search": "^2.0.0", "jszip": "^3.6.0", "lodash": "^4.17.21", + "luxon": "^3.4.4", "prism-react-renderer": "^1.2.0", "prismjs": "^1.24.0", "prop-types": "^15.7.2", diff --git a/start-client/src/components/Application.js b/start-client/src/components/Application.js index 96405205670..7862e98fda3 100644 --- a/start-client/src/components/Application.js +++ b/start-client/src/components/Application.js @@ -23,6 +23,7 @@ import { getConfig, getInfo, getProject } from './utils/ApiUtils' const Explore = lazy(() => import('./common/explore/Explore')) const Share = lazy(() => import('./common/share/Share')) +const History = lazy(() => import('./common/history/History')) const HotKeys = lazy(() => import('./common/builder/HotKeys')) export default function Application() { @@ -32,6 +33,7 @@ export default function Application() { theme, share: shareOpen, explore: exploreOpen, + history: historyOpen, list, dependencies, } = useContext(AppContext) @@ -78,6 +80,7 @@ export default function Application() { setGenerating(false) if (project) { FileSaver.saveAs(project, `${get(values, 'meta.artifact')}.zip`) + dispatch({ type: 'ADD_HISTORY', payload: share }) } } @@ -102,7 +105,13 @@ export default function Application() { setBlob(null) dispatch({ type: 'UPDATE', - payload: { list: false, share: false, explore: false, nav: false }, + payload: { + list: false, + share: false, + explore: false, + nav: false, + history: false, + }, }) } @@ -163,6 +172,15 @@ export default function Application() { onClose={onEscape} /> + + + + ) } diff --git a/start-client/src/components/common/history/History.js b/start-client/src/components/common/history/History.js new file mode 100644 index 00000000000..498c068937e --- /dev/null +++ b/start-client/src/components/common/history/History.js @@ -0,0 +1,23 @@ +import '../../../styles/history.scss' + +import PropTypes from 'prop-types' +import React from 'react' + +import Modal from './Modal' +import { Overlay } from '../form' + +function History({ open, onClose }) { + return ( + <> + + + + ) +} + +History.propTypes = { + open: PropTypes.bool.isRequired, + onClose: PropTypes.func.isRequired, +} + +export default History diff --git a/start-client/src/components/common/history/Modal.js b/start-client/src/components/common/history/Modal.js new file mode 100644 index 00000000000..941b11564c9 --- /dev/null +++ b/start-client/src/components/common/history/Modal.js @@ -0,0 +1,213 @@ +import PropTypes from 'prop-types' +import get from 'lodash/get' +import React, { useEffect, useRef, useContext, useMemo } from 'react' +import { CSSTransition, TransitionGroup } from 'react-transition-group' +import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock' +import { AppContext } from '../../reducer/App' +import { Transform } from './Utils' +import queryString from 'query-string' + +function HistoryDate({ label, items, onClose }) { + return ( + <> +
{label}
+
    + {items.map(item => ( + + ))} +
+ + ) +} + +HistoryDate.propTypes = { + label: PropTypes.string.isRequired, + items: PropTypes.arrayOf( + PropTypes.shape({ + time: PropTypes.string, + value: PropTypes.string, + }) + ), + onClose: PropTypes.func.isRequired, +} + +HistoryDate.defaultProps = { + items: [], +} + +function getLabelFromList(list, key) { + return list.find(item => item.key === key)?.text || key +} + +function getLabelFromDepsList(list, key) { + return list.find(item => item.id === key)?.name || key +} + +function HistoryItem({ time, value, onClose }) { + const { config } = useContext(AppContext) + const params = queryString.parse(value) + const deps = get(params, 'dependencies', '') + .split(',') + .filter(dep => !!dep) + return ( +
  • + { + onClose() + }} + > + {time} + + + Project{' '} + + {getLabelFromList( + get(config, 'lists.project'), + get(params, 'type') + )} + + {`, `} + Language{' '} + + {getLabelFromList( + get(config, 'lists.language'), + get(params, 'language') + )} + + {`, `} + Spring Boot{' '} + + {getLabelFromList( + get(config, 'lists.boot'), + get(params, 'platformVersion') + )} + + + + {deps.length === 0 && 'No dependencies'} + {deps.length > 0 && ( + <> + Dependencies:{' '} + + {deps + .map(dep => + getLabelFromDepsList( + get(config, 'lists.dependencies'), + dep + ) + ) + .join(', ')} + + + )} + + + +
  • + ) +} + +HistoryItem.propTypes = { + time: PropTypes.string.isRequired, + value: PropTypes.string.isRequired, + onClose: PropTypes.func.isRequired, +} + +function Modal({ open, onClose }) { + const wrapper = useRef(null) + const { histories, dispatch } = useContext(AppContext) + + const historiesTransform = useMemo(() => Transform(histories), [histories]) + + useEffect(() => { + const clickOutside = event => { + const children = get(wrapper, 'current') + if (children && !children.contains(event.target)) { + onClose() + } + } + document.addEventListener('mousedown', clickOutside) + return () => { + document.removeEventListener('mousedown', clickOutside) + } + }, [onClose]) + + useEffect(() => { + if (get(wrapper, 'current') && open) { + disableBodyScroll(get(wrapper, 'current')) + } + return () => { + clearAllBodyScrollLocks() + } + }, [wrapper, open]) + + return ( + + {open && ( + + + + )} + + ) +} + +Modal.propTypes = { + open: PropTypes.bool.isRequired, + onClose: PropTypes.func.isRequired, +} + +export default Modal diff --git a/start-client/src/components/common/history/Utils.js b/start-client/src/components/common/history/Utils.js new file mode 100644 index 00000000000..6df683cd522 --- /dev/null +++ b/start-client/src/components/common/history/Utils.js @@ -0,0 +1,46 @@ +import { DateTime } from 'luxon' + +function isToday(date) { + return date.hasSame(DateTime.now(), 'day') +} + +function isYesterday(date) { + return date.hasSame(DateTime.now().minus({ days: 1 }), 'day') +} + +export function Transform(histories) { + if (histories.length === 0) { + return [] + } + const parsed = histories.map(history => { + const dateLuxon = DateTime.fromISO(history.date) + let label = '' + if (isToday(dateLuxon)) { + label = 'Today, ' + } else if (isYesterday(dateLuxon)) { + label = 'Yesterday, ' + } + return { + date: dateLuxon, + time: `${dateLuxon.toFormat('HH:mm')}`, + label: `${label}${dateLuxon.toFormat('cccc, d LLLL yyyy')}`, + value: history.value, + } + }) + return parsed.reduce((acc, history) => { + if (acc.length === 0) { + acc.push({ + label: history.label, + histories: [history], + }) + } else if (acc[acc.length - 1].label === history.label) { + acc[acc.length - 1].histories.push(history) + } else { + acc.push({ + label: history.label, + histories: [history], + }) + } + return acc + }, []) +} diff --git a/start-client/src/components/common/history/index.js b/start-client/src/components/common/history/index.js new file mode 100644 index 00000000000..2efd9c0c11f --- /dev/null +++ b/start-client/src/components/common/history/index.js @@ -0,0 +1 @@ +export { default as History } from './History' diff --git a/start-client/src/components/common/icons/Icons.js b/start-client/src/components/common/icons/Icons.js index 1a2e0d153fa..9318ca56f1b 100644 --- a/start-client/src/components/common/icons/Icons.js +++ b/start-client/src/components/common/icons/Icons.js @@ -368,3 +368,34 @@ export function IconEnter() { ) } + +export function IconHistory() { + return ( + + ) +} diff --git a/start-client/src/components/common/icons/index.js b/start-client/src/components/common/icons/index.js index f8010ec116a..7fa600b4088 100644 --- a/start-client/src/components/common/icons/index.js +++ b/start-client/src/components/common/icons/index.js @@ -16,5 +16,6 @@ export { IconSun } from './Icons' export { IconMoon } from './Icons' export { IconRemove } from './Icons' export { IconEnter } from './Icons' +export { IconHistory } from './Icons' export { IconSpring } from './IconSpring' diff --git a/start-client/src/components/common/layout/SideLeft.js b/start-client/src/components/common/layout/SideLeft.js index c8ca6aa0caa..12596f1edaa 100644 --- a/start-client/src/components/common/layout/SideLeft.js +++ b/start-client/src/components/common/layout/SideLeft.js @@ -5,14 +5,14 @@ import { clearAllBodyScrollLocks, disableBodyScroll } from 'body-scroll-lock' import Header from './Header' import { AppContext } from '../../reducer/App' -import { IconGithub } from '../icons' +import { IconGithub, IconHistory } from '../icons' function SideLeft() { const [isOpen, setIsOpen] = useState(false) const [lock, setLock] = useState(false) const wrapper = useRef(null) - const { nav, dispatch } = useContext(AppContext) + const { nav, histories, dispatch } = useContext(AppContext) useEffect(() => { if (get(wrapper, 'current') && nav) { @@ -61,6 +61,22 @@ function SideLeft() { + {!isOpen && !lock && histories.length > 0 && ( + <> +
    + + + )}
    {}, + setItem: () => {}, + } + export function reduceDependencies(boot, items) { const groups = [] const list = [] @@ -96,7 +107,26 @@ export function reducer(state, action) { get(json, 'defaultValues.boot'), get(json, 'lists.dependencies') ) - return { ...state, complete: true, config: json, dependencies } + const histories = localStorage.getItem('histories') + ? JSON.parse(localStorage.getItem('histories')) + : [] + return { ...state, complete: true, config: json, dependencies, histories } + } + case 'ADD_HISTORY': { + const newHistory = get(action, 'payload') + const histories = [ + { + date: new Date().toISOString(), + value: newHistory, + }, + ...state.histories.slice(0, MAX_HISTORY - 1), + ] + localStorage.setItem('histories', JSON.stringify(histories)) + return { ...state, histories } + } + case 'CLEAR_HISTORY': { + localStorage.setItem('histories', JSON.stringify([])) + return { ...state, histories: [] } } default: return state diff --git a/start-client/src/components/reducer/__tests__/Initializr.js b/start-client/src/components/reducer/__tests__/Initializr.js index 20ef2bdd15d..23f43b046eb 100644 --- a/start-client/src/components/reducer/__tests__/Initializr.js +++ b/start-client/src/components/reducer/__tests__/Initializr.js @@ -47,7 +47,7 @@ describe('COMPLETE action', () => { }, }) expect(get(result, 'share')).toBe( - 'type=maven-project&language=java&platformVersion=2.2.0.RELEASE&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=demo&name=demo&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.demo' + 'type=maven-project&language=java&platformVersion=2.2.0.RELEASE&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=demo&name=demo&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.demo&dependencies=' ) expect(get(result, 'values.project')).toBe('maven-project') expect(get(result, 'values.language')).toBe('java') diff --git a/start-client/src/components/utils/ApiUtils.js b/start-client/src/components/utils/ApiUtils.js index 7de37d1ae85..15cdbb8f50d 100644 --- a/start-client/src/components/utils/ApiUtils.js +++ b/start-client/src/components/utils/ApiUtils.js @@ -54,6 +54,8 @@ export const getShareUrl = values => { let params = `${querystring.stringify(props)}` if (get(values, 'dependencies', []).length > 0) { params = `${params}&dependencies=${get(values, 'dependencies').join(',')}` + } else { + params = `${params}&dependencies=` } return params } @@ -151,6 +153,7 @@ export const parseParams = (values, queryParams, lists) => { const depsWarning = [] const newVal = value .split(',') + .filter(item => !!item) .map(item => { const dep = get(lists, 'dependencies').find( d => d.id === item.trim() diff --git a/start-client/src/styles/_dark.scss b/start-client/src/styles/_dark.scss index 984ceaf0561..58a0127dbab 100644 --- a/start-client/src/styles/_dark.scss +++ b/start-client/src/styles/_dark.scss @@ -16,6 +16,10 @@ body.dark { border-color: rgba(255, 255, 255, 0.2); } + #side-left .navigation-item { + color: white; + } + #side-right .side-container { border-color: $dark-border; background: $dark-background; @@ -321,7 +325,8 @@ body.dark { #side-left a, .explorer-ul .file, .explorer-ul .folder, - ul.dependencies-list li a { + ul.dependencies-list li a, + #side-left .navigation-item { &:focus { outline: 1px dotted $dark-border; } diff --git a/start-client/src/styles/_main.scss b/start-client/src/styles/_main.scss index 70ce292e0e2..af24fb69933 100644 --- a/start-client/src/styles/_main.scss +++ b/start-client/src/styles/_main.scss @@ -85,6 +85,39 @@ body { left: 0; width: 5rem; } + .navigation-divider { + margin: 20px; + border-top: 1px solid $light-border; + } + .navigation-item { + $size: 30px; + display: block; + margin: 0.2rem auto; + color: $light-color; + padding: 0; + cursor: pointer; + width: $size + 12px; + height: $size + 12px; + @include transition(color $spring-transition-duration); + border: 0 none; + background: none; + .icon-history { + width: 30px; + margin-top: 6px; + } + &:hover { + color: $light-primary; + } + &:focus { + outline: 1px dotted #aecaca; + } + } + &.is-open .navigation-item { + color: white; + &:hover { + opacity: 0.7; + } + } } #side-right { @@ -1316,4 +1349,4 @@ ul.dependencies-list { display: inline-block; height: 14px; background: $light-placeholder; -} \ No newline at end of file +} diff --git a/start-client/src/styles/history.scss b/start-client/src/styles/history.scss new file mode 100644 index 00000000000..9d1ace6786d --- /dev/null +++ b/start-client/src/styles/history.scss @@ -0,0 +1,120 @@ +@import 'variables'; +@import 'mixins'; + +$w_arrow: 12px; +$w: 1000px; + +.modal-share { + z-index: 10000; + position: fixed; + top: 50px; + left: 0; + right: 0; + + .modal-history-container { + max-width: $w; + margin: 0 auto; + background: white; + } + + @include transition(all $spring-transition-duration); + &:before { + $h: 60px; + content: ' '; + height: $h; + width: $w; + position: absolute; + bottom: -$h; + left: 0; + } + .modal-content { + padding: $spring-8points * 3; + padding-top: $spring-8points; + padding-bottom: $spring-8points * 2; + max-height: 70vh; + overflow: auto; + .list { + .date { + font-weight: bold; + padding: 10px 0 5px; + } + ul { + padding: 0; + margin: 0 0 10px; + } + li { + list-style: none; + padding: 1px 0; + margin: 0; + } + a.item { + position: relative; + background: $light-background-seconday; + border-radius: 3px; + display: flex; + text-decoration: none; + padding: 5px 10px; + color: $light-color; + padding-right: 60px; + &:hover { + background: lighten($light-background-seconday, 2); + a { + opacity: 1; + } + } + } + .time { + width: 80px; + } + .time, + .desc, + .main, + .deps { + display: block; + } + } + } + .modal-header { + position: relative; + padding: 6px $spring-8points * 2 2px; + border-bottom: 1px solid #ebebeb; + h1 { + font-size: $spring-8points * 2.5; + line-height: $spring-8points * 2.5; + font-weight: 600; + } + .button { + position: absolute; + top: 11px; + right: 11px; + font-size: $spring-font-size - 3; + line-height: 0.7rem; + margin-right: 0; + } + } + .modal-action { + text-align: center; + border-top: 1px solid $light-border; + padding: 16px 0 8px; + } +} + +.modal-enter { + opacity: 0; +} + +.modal-enter-active { + opacity: 1; + transition: all 300ms; +} + +.modal-exit { + opacity: 1; +} + +.modal-exit-active { + opacity: 0; + transition: all 300ms; +} + +@import 'responsive'; diff --git a/start-client/yarn.lock b/start-client/yarn.lock index d8dd9ba0889..da1fe441363 100644 --- a/start-client/yarn.lock +++ b/start-client/yarn.lock @@ -7295,6 +7295,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +luxon@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" From def50934883fbb15633ab664440377f950e35cdf Mon Sep 17 00:00:00 2001 From: Damien Vitrac Date: Tue, 28 May 2024 13:17:37 +0200 Subject: [PATCH 006/109] Fix wording --- start-client/src/components/common/history/Modal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-client/src/components/common/history/Modal.js b/start-client/src/components/common/history/Modal.js index 941b11564c9..c8847c222d1 100644 --- a/start-client/src/components/common/history/Modal.js +++ b/start-client/src/components/common/history/Modal.js @@ -91,7 +91,7 @@ function HistoryItem({ time, value, onClose }) { - {deps.length === 0 && 'No dependencies'} + {deps.length === 0 && 'No dependency'} {deps.length > 0 && ( <> Dependencies:{' '} From 16f3af30ab0aae4a049102f2f27e2131456a430e Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 28 May 2024 09:03:15 +0200 Subject: [PATCH 007/109] Upgrade to Spring AI 1.0.0-M1 Closes gh-1486 --- start-site/src/main/resources/application.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 814f2e99153..c2d290e2415 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -88,8 +88,8 @@ initializr: artifactId: spring-ai-bom versionProperty: spring-ai.version mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 0.8.1 + - compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 1.0.0-M1 repositories: spring-milestones spring-cloud: groupId: org.springframework.cloud @@ -1410,7 +1410,7 @@ initializr: - rel: guide href: https://github.com/GoogleCloudPlatform/spring-cloud-gcp/tree/main/spring-cloud-gcp-samples/spring-cloud-gcp-storage-resource-sample - name: AI - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Azure OpenAI id: spring-ai-azure-openai @@ -1425,7 +1425,7 @@ initializr: - name: Azure AI Search id: spring-ai-vectordb-azure group-id: org.springframework.ai - artifact-id: spring-ai-azure-vector-store-spring-boot-starter + artifact-id: spring-ai-azure-store-spring-boot-starter description: Spring AI vector database support for Azure AI Search. It is an AI-powered information retrieval platform and part of Microsoft’s larger AI platform. Among other features, it allows users to query information using vector-based storage and retrieval. bom: spring-ai starter: true @@ -1535,7 +1535,7 @@ initializr: - name: Redis Search and Query Vector Database id: spring-ai-vectordb-redis group-id: org.springframework.ai - artifact-id: spring-ai-redis-spring-boot-starter + artifact-id: spring-ai-redis-store-spring-boot-starter description: Spring AI vector database support for Redis Search and Query.It extends the core features of Redis OSS and allows you to use Redis as a vector database. bom: spring-ai starter: true From 869e4de38572cc4d92eaa8904e019ab5b77a0a9c Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Tue, 28 May 2024 13:39:06 +0100 Subject: [PATCH 008/109] Upgrade to Spring Shell 3.2.5 and 3.3.0-RC1 See gh-1489 --- start-site/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index c2d290e2415..1e19fef473f 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -137,9 +137,9 @@ initializr: versionProperty: spring-shell.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 3.2.4 + version: 3.2.5 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 3.3.0-M1 + version: 3.3.0-RC1 repositories: spring-milestones timefold-solver: groupId: ai.timefold.solver From 4145dbba7bf52f2d00e17e66cf416078ff9b9070 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Tue, 28 May 2024 22:22:48 +0200 Subject: [PATCH 009/109] Revert optimizations in Spring Modulith dependency setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The removal of the core dependency causes the BOM not being added as that's contained in the dependency declaration. Manually adding the BOM (build.boms().add(…)) adds the BOM segment but does not declare the version property that's needed to resolve it properly. See gh-1490 --- .../springmodulith/SpringModulithBuildCustomizer.java | 5 +---- .../SpringModulithBuildCustomizerTests.java | 11 +---------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java index ac717639f2e..a979040ff79 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java @@ -51,10 +51,7 @@ public void customize(Build build) { dependencies.add("modulith-observability", modulithDependency("observability").scope(DependencyScope.RUNTIME)); } - boolean persistenceBackendAdded = addEventPublicationRegistryBackend(build); - if (persistenceBackendAdded) { - dependencies.remove("modulith"); - } + addEventPublicationRegistryBackend(build); dependencies.add("modulith-starter-test", modulithDependency("starter-test").scope(DependencyScope.TEST_COMPILE)); } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java index 6e039726bc9..957b56547bc 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java @@ -71,16 +71,7 @@ void presenceOfSpringDataModuleAddsModuleEventStarter(String store) { build.dependencies().add("data-" + store); this.customizer.customize(build); assertThat(build.dependencies().ids()).contains("modulith-starter-" + store); - assertThat(build.dependencies().ids()).doesNotContain("modulith"); - } - - @ParameterizedTest - @ValueSource(strings = { "jdbc", "jpa", "mongodb" }) - void presenceOfSpringDataModuleRemovesCoreStarter(String store) { - Build build = createBuild("modulith"); - build.dependencies().add("data-" + store); - this.customizer.customize(build); - assertThat(build.dependencies().ids()).doesNotContain("modulith"); + assertThat(build.dependencies().ids()).doesNotContain("modulith-starter-core"); } private Build createBuild(String... dependencies) { From 198a828b06a01685c8443931fad6f4b326592ef2 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Sat, 1 Jun 2024 10:43:04 +0200 Subject: [PATCH 010/109] Upgrade to Netflix DGS 9.0.0 and 8.7.1 Netflix DGS 9.0 is compatible with Spring Boot 3.3! Closes gh-1493 --- start-site/src/main/resources/application.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 1e19fef473f..32bde08bc53 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -54,7 +54,9 @@ initializr: versionProperty: netflix-dgs.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 8.6.1 + version: 8.7.1 + - compatibilityRange: "[3.3.0,3.4.0-M1)" + version: 9.0.0 hilla: groupId: dev.hilla artifactId: hilla-bom @@ -360,7 +362,7 @@ initializr: groupId: com.netflix.graphql.dgs artifactId: graphql-dgs-spring-graphql-starter description: Build GraphQL applications with Netflix DGS and Spring for GraphQL. - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" bom: netflix-dgs links: - rel: reference From 93748c347b0efea2805d42ffc3a6ceed57cdddea Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 3 Jun 2024 08:57:52 +0200 Subject: [PATCH 011/109] Upgrade to Spring Cloud 2023.0.2 Closes gh-1495 --- start-site/src/main/resources/application.yml | 20 +++++++++---------- ...oudCircuitBreakerBuildCustomizerTests.java | 6 +++--- ...SpringCloudContractConfigurationTests.java | 10 +++++----- ...oudContractGradleBuildCustomizerTests.java | 14 ++++++------- ...loudContractMavenBuildCustomizerTests.java | 2 +- ...ringCloudFunctionBuildCustomizerTests.java | 8 ++++---- ...udFunctionHelpDocumentCustomizerTests.java | 6 +++--- ...SpringCloudStreamBuildCustomizerTests.java | 18 ++++++++--------- 8 files changed, 42 insertions(+), 42 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 32bde08bc53..ee15aed3653 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -99,8 +99,8 @@ initializr: versionProperty: spring-cloud.version order: 50 mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 2023.0.1 + - compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 2023.0.2 spring-cloud-azure: groupId: com.azure.spring artifactId: spring-cloud-azure-dependencies @@ -1043,7 +1043,7 @@ initializr: href: https://java.testcontainers.org/ - name: Contract Verifier bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" id: cloud-contract-verifier description: Moves TDD to the level of software architecture by enabling Consumer Driven Contract (CDC) development. groupId: org.springframework.cloud @@ -1054,7 +1054,7 @@ initializr: href: https://cloud.spring.io/spring-cloud-contract/reference/htmlsingle/ - name: Contract Stub Runner bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" id: cloud-contract-stub-runner description: Stub Runner for HTTP/Messaging based communication. Allows creating WireMock stubs from RestDocs tests. groupId: org.springframework.cloud @@ -1075,7 +1075,7 @@ initializr: href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#data.nosql.ldap.embedded - name: Spring Cloud bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Cloud Bootstrap id: cloud-starter @@ -1107,7 +1107,7 @@ initializr: href: https://docs.spring.io/spring-cloud-task/docs/current/reference/html/ - name: Spring Cloud Config bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Config Client id: cloud-config-client @@ -1158,7 +1158,7 @@ initializr: description: Spring Cloud Consul Quick Start - name: Spring Cloud Discovery bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Eureka Discovery Client id: cloud-eureka @@ -1200,7 +1200,7 @@ initializr: href: https://docs.spring.io/spring-cloud-consul/docs/current/reference/html/#spring-cloud-consul-discovery - name: Spring Cloud Routing bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Gateway id: cloud-gateway @@ -1247,7 +1247,7 @@ initializr: href: https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#spring-cloud-loadbalancer - name: Spring Cloud Circuit Breaker bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Resilience4J id: cloud-resilience4j @@ -1259,7 +1259,7 @@ initializr: href: https://docs.spring.io/spring-cloud-circuitbreaker/docs/current/reference/html/#configuring-resilience4j-circuit-breakers - name: Spring Cloud Messaging bom: spring-cloud - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Cloud Bus id: cloud-bus diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java index 6cd93abfefe..b9ffe3178cd 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizerTests.java @@ -30,7 +30,7 @@ */ class SpringCloudCircuitBreakerBuildCustomizerTests extends AbstractExtensionTests { - private static final String BOOT_VERSION = "3.2.6"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; private static final Dependency REACTIVE_CLOUD_CIRCUIT_BREAKER = Dependency.withId("cloud-resilience4j-reactive", "org.springframework.cloud", "spring-cloud-starter-circuitbreaker-reactor-resilience4j"); @@ -38,7 +38,7 @@ class SpringCloudCircuitBreakerBuildCustomizerTests extends AbstractExtensionTes @Test void replacesCircuitBreakerWithReactiveCircuitBreakerWhenReactiveFacetPresent() { ProjectRequest request = createProjectRequest("webflux", "cloud-resilience4j"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("webflux")) .hasDependency(REACTIVE_CLOUD_CIRCUIT_BREAKER) .doesNotHaveDependency("org.springframework.cloud", "spring-cloud-starter-circuitbreaker-resilience4j") @@ -49,7 +49,7 @@ void replacesCircuitBreakerWithReactiveCircuitBreakerWhenReactiveFacetPresent() @Test void doesNotReplaceCircuitBreakerWithReactiveCircuitBreakerWhenReactiveFacetNotPresent() { ProjectRequest request = createProjectRequest("cloud-resilience4j"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-resilience4j")) .doesNotHaveDependency("org.springframework.cloud", "spring-cloud-starter-circuitbreaker-reactor-resilience4j") diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java index 2eabac67de8..de74a948eb8 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractConfigurationTests.java @@ -31,12 +31,12 @@ */ class SpringCloudContractConfigurationTests extends AbstractExtensionTests { - private static final String BOOT_VERSION = "3.2.6"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void contractsDirectoryWithMavenIsCreatedWithSpringCloudContractVerifier() { ProjectRequest request = createProjectRequest("web", "cloud-contract-verifier"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); request.setType("maven-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/test/resources/contracts")).exists().isDirectory(); @@ -45,7 +45,7 @@ void contractsDirectoryWithMavenIsCreatedWithSpringCloudContractVerifier() { @Test void contractsDirectoryWithMavenIsNotCreatedIfSpringCloudContractVerifierIsNotRequested() { ProjectRequest request = createProjectRequest("web"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); request.setType("maven-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/test/resources/contracts")).doesNotExist(); @@ -54,7 +54,7 @@ void contractsDirectoryWithMavenIsNotCreatedIfSpringCloudContractVerifierIsNotRe @Test void contractsDirectoryWithGradleIsCreatedWithSpringCloudContractVerifier() { ProjectRequest request = createProjectRequest("web", "cloud-contract-verifier"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); request.setType("gradle-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/contractTest/resources/contracts")).exists() @@ -64,7 +64,7 @@ void contractsDirectoryWithGradleIsCreatedWithSpringCloudContractVerifier() { @Test void contractsDirectoryWithGradleIsNotCreatedIfSpringCloudContractVerifierIsNotRequested() { ProjectRequest request = createProjectRequest("web"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); request.setType("gradle-project"); ProjectStructure structure = generateProject(request); assertThat(structure.getProjectDirectory().resolve("src/contractTest/resources/contracts")).doesNotExist(); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java index 9043012bacf..d3da6f831ac 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java @@ -31,40 +31,40 @@ */ class SpringCloudContractGradleBuildCustomizerTests extends AbstractExtensionTests { - private static final String BOOT_VERSION = "3.2.6"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void springCloudContractVerifierPluginAddedWhenSCCDependencyPresent() { ProjectRequest request = createProjectRequest("cloud-contract-verifier"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleBuild(request)).contains("id 'org.springframework.cloud.contract' version '"); } @Test void springCloudContractVerifierPluginNotAddedWhenSCCDependencyAbsent() { ProjectRequest request = createProjectRequest(); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleBuild(request)).doesNotContain("org.springframework.cloud.contract"); } @Test void springCloudContractVerifierPluginContractTestWithJUnit5ByDefault() { ProjectRequest request = createProjectRequest("cloud-contract-verifier"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleBuild(request)).containsSubsequence("tasks.named('contractTest') {", "useJUnitPlatform()"); } @Test void springCloudContractVerifierPluginWithGroovyDslAndWithTestModeSetWhenWebFluxIsPresent() { ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleBuild(request)).containsSubsequence("contracts {", "testMode = 'WebTestClient'"); } @Test void springCloudContractVerifierPluginWithKotlinDslAndTestModeSetWhenWebFluxIsPresent() { ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleKotlinDslBuild(request)) .contains("import org.springframework.cloud.contract.verifier.config.TestMode") .containsSubsequence("contracts {", "testMode.set(TestMode.WEBTESTCLIENT)"); @@ -73,7 +73,7 @@ void springCloudContractVerifierPluginWithKotlinDslAndTestModeSetWhenWebFluxIsPr @Test void springWebTestClientDependencyAddedWhenWebFluxIsPresent() { ProjectRequest request = createProjectRequest("cloud-contract-verifier", "webflux"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleBuild(request)).contains("testImplementation 'io.rest-assured:spring-web-test-client'"); } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java index f1dedd1c1c6..3b54637905e 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractMavenBuildCustomizerTests.java @@ -32,7 +32,7 @@ */ class SpringCloudContractMavenBuildCustomizerTests extends AbstractExtensionTests { - private static final String SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void springCloudContractVerifierPluginAddedWhenSCCDependencyPresent() { diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java index 9060b9e3dad..cdb9c9a60a9 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionBuildCustomizerTests.java @@ -32,7 +32,7 @@ */ class SpringCloudFunctionBuildCustomizerTests extends AbstractExtensionTests { - private static final String BOOT_VERSION = "3.2.6"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; static final Dependency WEB_ADAPTER = Dependency.withId("cloud-function-web", "org.springframework.cloud", "spring-cloud-function-web"); @@ -40,7 +40,7 @@ class SpringCloudFunctionBuildCustomizerTests extends AbstractExtensionTests { @Test void functionOnly() { ProjectRequest request = createProjectRequest("cloud-function"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-function")) .hasDependency(Dependency.createSpringBootStarter("test", Dependency.SCOPE_TEST)) .hasDependency(Dependency.createSpringBootStarter("")) @@ -52,7 +52,7 @@ void functionOnly() { @Test void web() { ProjectRequest request = createProjectRequest("web", "cloud-function"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); BillOfMaterials bom = getBom("spring-cloud", request.getBootVersion()); assertThat(mavenPom(request)).hasDependency(getDependency("web")) .hasDependency(WEB_ADAPTER) @@ -65,7 +65,7 @@ void web() { @Test void webflux() { ProjectRequest request = createProjectRequest("webflux", "cloud-function"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); BillOfMaterials bom = getBom("spring-cloud", request.getBootVersion()); assertThat(mavenPom(request)).hasDependency(getDependency("webflux")) .hasDependency(WEB_ADAPTER) diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionHelpDocumentCustomizerTests.java index 305a26645e2..54c63382e14 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudFunctionHelpDocumentCustomizerTests.java @@ -33,12 +33,12 @@ class SpringCloudFunctionHelpDocumentCustomizerTests extends AbstractExtensionTe private static final String AZURE_SECTION_TITLE = "## Running Spring Cloud Function applications on Microsoft Azure"; - private static final String BOOT_VERSION = "3.2.6"; + private static final String SPRING_BOOT_VERSION = "3.2.0"; @Test void functionBuildSetupInfoSectionAddedForMaven() { ProjectRequest request = createProjectRequest(); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); request.setType("maven-build"); request.setDependencies(Arrays.asList("cloud-function", "azure-support")); assertThat(generateProject(request)).textFile("HELP.md").contains(AZURE_SECTION_TITLE); @@ -47,7 +47,7 @@ void functionBuildSetupInfoSectionAddedForMaven() { @Test void functionBuildSetupInfoSectionAddedForGradle() { ProjectRequest request = createProjectRequest(); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); request.setType("gradle-build"); request.setDependencies(Arrays.asList("cloud-function", "azure-support")); assertThat(generateProject(request)).textFile("HELP.md").contains(AZURE_SECTION_TITLE); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java index dc8bb4ff681..715243845ff 100755 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudStreamBuildCustomizerTests.java @@ -32,7 +32,7 @@ */ class SpringCloudStreamBuildCustomizerTests extends AbstractExtensionTests { - private static final String BOOT_VERSION = "3.2.6"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; private static final Dependency KAFKA_BINDER = Dependency.withId("cloud-stream-binder-kafka", "org.springframework.cloud", "spring-cloud-stream-binder-kafka"); @@ -52,7 +52,7 @@ class SpringCloudStreamBuildCustomizerTests extends AbstractExtensionTests { @Test void springCloudStreamWithRabbit() { ProjectRequest request = createProjectRequest("cloud-stream", "amqp"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("amqp")) .hasDependency(RABBIT_BINDER) @@ -64,7 +64,7 @@ void springCloudStreamWithRabbit() { @Test void springCloudStreamWithKafka() { ProjectRequest request = createProjectRequest("cloud-stream", "kafka"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("kafka")) .hasDependency(KAFKA_BINDER) @@ -76,7 +76,7 @@ void springCloudStreamWithKafka() { @Test void springCloudStreamWithKafkaStreams() { ProjectRequest request = createProjectRequest("cloud-stream", "kafka-streams"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("kafka-streams")) .hasDependency(KAFKA_STREAMS_BINDER) @@ -88,7 +88,7 @@ void springCloudStreamWithKafkaStreams() { @Test void springCloudStreamWithPulsar() { ProjectRequest request = createProjectRequest("cloud-stream", "pulsar"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("pulsar")) .hasDependency(PULSAR_BINDER) @@ -98,7 +98,7 @@ void springCloudStreamWithPulsar() { @Test void springCloudStreamWithAllBinders() { ProjectRequest request = createProjectRequest("cloud-stream", "amqp", "kafka", "kafka-streams"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-stream")) .hasDependency(getDependency("amqp")) .hasDependency(getDependency("kafka")) @@ -114,7 +114,7 @@ void springCloudStreamWithAllBinders() { @Test void springCloudBusWithRabbit() { ProjectRequest request = createProjectRequest("cloud-bus", "amqp"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-bus")) .hasDependency(getDependency("amqp")) .hasDependency(RABBIT_BINDER) @@ -125,7 +125,7 @@ void springCloudBusWithRabbit() { @Test void springCloudBusWithKafka() { ProjectRequest request = createProjectRequest("cloud-bus", "amqp"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-bus")) .hasDependency(getDependency("amqp")) .hasDependency(RABBIT_BINDER) @@ -136,7 +136,7 @@ void springCloudBusWithKafka() { @Test void springCloudBusWithAllBinders() { ProjectRequest request = createProjectRequest("cloud-bus", "amqp", "kafka", "kafka-streams"); - request.setBootVersion(BOOT_VERSION); + request.setBootVersion(SPRING_BOOT_VERSION); assertThat(mavenPom(request)).hasDependency(getDependency("cloud-bus")) .hasDependency(getDependency("amqp")) .hasDependency(getDependency("kafka")) From 69c876938168a534de9de9757b51e44eafd04c0b Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Thu, 30 May 2024 14:52:26 -0400 Subject: [PATCH 012/109] Upgrade to Spring Cloud GCP 5.4.1 See gh-1491 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index ee15aed3653..bdfd24b45d0 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -115,7 +115,7 @@ initializr: additionalBoms: [ spring-cloud ] mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 5.3.0 + version: 5.4.1 spring-cloud-services: groupId: io.pivotal.spring.cloud artifactId: spring-cloud-services-dependencies From e6e69bb6961e016ab70bce5c229af9fb4f2b4143 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 3 Jun 2024 10:05:19 +0200 Subject: [PATCH 013/109] Add vaadin-dev exclusion to Maven profile Closes gh-1492 --- .../vaadin/VaadinMavenBuildCustomizer.java | 13 +++- .../VaadinMavenBuildCustomizerTests.java | 76 +++++++++++++++++++ ...inProjectGenerationConfigurationTests.java | 55 ++++++++++---- 3 files changed, 125 insertions(+), 19 deletions(-) create mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java index a1889d1822c..740cde0ae46 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizer.java @@ -16,7 +16,9 @@ package io.spring.start.site.extension.dependency.vaadin; +import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; +import io.spring.initializr.generator.buildsystem.maven.MavenProfile; import io.spring.initializr.generator.spring.build.BuildCustomizer; /** @@ -24,14 +26,19 @@ * mode. * * @author Stephane Nicoll + * @author Moritz Halbritter */ class VaadinMavenBuildCustomizer implements BuildCustomizer { @Override public void customize(MavenBuild build) { - build.profiles() - .id("production") - .plugins() + MavenProfile profile = build.profiles().id("production"); + profile.dependencies() + .add("vaadin-core", + Dependency.withCoordinates("com.vaadin", "vaadin-core") + .exclusions(new Dependency.Exclusion("com.vaadin", "vaadin-dev")) + .build()); + profile.plugins() .add("com.vaadin", "vaadin-maven-plugin", (plugin) -> plugin.version("${vaadin.version}") .execution("frontend", (execution) -> execution.goal("prepare-frontend").goal("build-frontend").phase("compile"))); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java new file mode 100644 index 00000000000..f9ffe3ea943 --- /dev/null +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinMavenBuildCustomizerTests.java @@ -0,0 +1,76 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.vaadin; + +import io.spring.initializr.web.project.ProjectRequest; +import io.spring.start.site.extension.AbstractExtensionTests; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link VaadinMavenBuildCustomizer}. + * + * @author Moritz Halbritter + */ +class VaadinMavenBuildCustomizerTests extends AbstractExtensionTests { + + @Test + void shouldAddProductionProfile() { + ProjectRequest projectRequest = createProjectRequest("vaadin", "web"); + assertThat(mavenPom(projectRequest)).hasProfile("production").lines().containsSequence( + // @formatter:off + " ", + " production", + " ", + " ", + " com.vaadin", + " vaadin-core", + " ", + " ", + " com.vaadin", + " vaadin-dev", + " ", + " ", + " ", + "", + " ", + " ", + " ", + " ", + " com.vaadin", + " vaadin-maven-plugin", + " ${vaadin.version}", + " ", + " ", + " frontend", + " compile", + " ", + " prepare-frontend", + " build-frontend", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ); + // @formatter:on + } + +} diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java index 4c6b9d31340..1cc693cab1e 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java @@ -30,27 +30,50 @@ */ class VaadinProjectGenerationConfigurationTests extends AbstractExtensionTests { - private static final String SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void mavenBuildWithVaadinAddProductionProfileWithoutProductionModeFlag() { ProjectRequest request = createProjectRequest("vaadin", "data-jpa"); request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(mavenPom(request)).hasProfile("production") - .lines() - .containsSequence(" ", " production", " ", - " ", " ", - " com.vaadin", - " vaadin-maven-plugin", - " ${vaadin.version}", - " ", " ", - " frontend", - " compile", " ", - " prepare-frontend", - " build-frontend", - " ", " ", - " ", " ", " ", - " ", " "); + assertThat(mavenPom(request)).hasProfile("production").lines().containsSequence( + // @formatter:off + " ", + " production", + " ", + " ", + " com.vaadin", + " vaadin-core", + " ", + " ", + " com.vaadin", + " vaadin-dev", + " ", + " ", + " ", + "", + " ", + " ", + " ", + " ", + " com.vaadin", + " vaadin-maven-plugin", + " ${vaadin.version}", + " ", + " ", + " frontend", + " compile", + " ", + " prepare-frontend", + " build-frontend", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ); } @Test From a1cdb68013977b51c21fd8b9394e8321dc642df8 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 4 Jun 2024 10:20:32 +0200 Subject: [PATCH 014/109] Migrate DGS customizations to new extension API See gh-1497 --- .../DgsCodegenGroovyDslGradleBuildCustomizer.java | 12 ++++-------- .../DgsCodegenKotlinDslGradleBuildCustomizer.java | 12 ++++-------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenGroovyDslGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenGroovyDslGradleBuildCustomizer.java index 06f0252df42..48b7ffe7ce4 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenGroovyDslGradleBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenGroovyDslGradleBuildCustomizer.java @@ -38,14 +38,10 @@ class DgsCodegenGroovyDslGradleBuildCustomizer implements BuildCustomizer plugin.setVersion(this.pluginVersion)); - build.snippets().add((writer) -> { - writer.println("generateJava {"); - writer.indented(() -> { - writer.println("schemaPaths = [\"${projectDir}/src/main/resources/graphql-client\"]"); - writer.println("packageName = '" + this.packageName + ".codegen'"); - writer.println("generateClient = true"); - }); - writer.println("}"); + build.extensions().customize("generateJava", (generateJava) -> { + generateJava.attribute("schemaPaths", "[\"${projectDir}/src/main/resources/graphql-client\"]"); + generateJava.attribute("packageName", "'" + this.packageName + ".codegen'"); + generateJava.attribute("generateClient", "true"); }); } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenKotlinDslGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenKotlinDslGradleBuildCustomizer.java index b64eb82b93f..85dd43bf708 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenKotlinDslGradleBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenKotlinDslGradleBuildCustomizer.java @@ -38,14 +38,10 @@ class DgsCodegenKotlinDslGradleBuildCustomizer implements BuildCustomizer plugin.setVersion(this.pluginVersion)); - build.snippets().add((writer) -> { - writer.println("tasks.generateJava {"); - writer.indented(() -> { - writer.println("schemaPaths.add(\"${projectDir}/src/main/resources/graphql-client\")"); - writer.println("packageName = \"" + this.packageName + ".codegen\""); - writer.println("generateClient = true"); - }); - writer.println("}"); + build.extensions().customize("tasks.generateJava", (generateJava) -> { + generateJava.invoke("schemaPaths.add", "\"${projectDir}/src/main/resources/graphql-client\""); + generateJava.attribute("packageName", "\"" + this.packageName + ".codegen\""); + generateJava.attribute("generateClient", "true"); }); } From 217921c4cf71addc78893df8c99d95686c40ec93 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 4 Jun 2024 10:27:29 +0200 Subject: [PATCH 015/109] Migrate Hibernate customizations to new extension API See gh-1497 --- ...GraalVmProjectGenerationConfiguration.java | 15 ++---- ...HibernatePluginGradleBuildCustomizer.java} | 18 +++---- ...ePluginKotlinDslGradleBuildCustomizer.java | 50 ------------------- ...VmProjectGenerationConfigurationTests.java | 2 +- ...natePluginGradleBuildCustomizerTests.java} | 8 +-- ...inKotlinDslGradleBuildCustomizerTests.java | 50 ------------------- 6 files changed, 15 insertions(+), 128 deletions(-) rename start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/{HibernatePluginGroovyDslGradleBuildCustomizer.java => HibernatePluginGradleBuildCustomizer.java} (70%) delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizer.java rename start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/{HibernatePluginGroovyDslGradleBuildCustomizerTests.java => HibernatePluginGradleBuildCustomizerTests.java} (84%) delete mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfiguration.java index ce41dda8725..ff53be87021 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -97,17 +97,10 @@ HibernatePluginMavenBuildCustomizer hibernatePluginMavenBuildCustomizer() { } @Bean - @ConditionalOnBuildSystem(value = GradleBuildSystem.ID, dialect = GradleBuildSystem.DIALECT_GROOVY) - HibernatePluginGroovyDslGradleBuildCustomizer hibernatePluginGroovyDslGradleBuildCustomizer( + @ConditionalOnBuildSystem(GradleBuildSystem.ID) + HibernatePluginGradleBuildCustomizer hibernatePluginGroovyDslGradleBuildCustomizer( MavenVersionResolver versionResolver) { - return new HibernatePluginGroovyDslGradleBuildCustomizer(determineHibernateVersion(versionResolver)); - } - - @Bean - @ConditionalOnBuildSystem(value = GradleBuildSystem.ID, dialect = GradleBuildSystem.DIALECT_KOTLIN) - HibernatePluginKotlinDslGradleBuildCustomizer hibernatePluginKotlinDslGradleBuildCustomizer( - MavenVersionResolver versionResolver) { - return new HibernatePluginKotlinDslGradleBuildCustomizer(determineHibernateVersion(versionResolver)); + return new HibernatePluginGradleBuildCustomizer(determineHibernateVersion(versionResolver)); } private Version determineHibernateVersion(MavenVersionResolver versionResolver) { diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGroovyDslGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGradleBuildCustomizer.java similarity index 70% rename from start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGroovyDslGradleBuildCustomizer.java rename to start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGradleBuildCustomizer.java index 46427aa5d6b..52b6bae816f 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGroovyDslGradleBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGradleBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,26 +25,20 @@ * * @author Stephane Nicoll */ -class HibernatePluginGroovyDslGradleBuildCustomizer implements BuildCustomizer { +class HibernatePluginGradleBuildCustomizer implements BuildCustomizer { private final Version hibernateVersion; - HibernatePluginGroovyDslGradleBuildCustomizer(Version hibernateVersion) { + HibernatePluginGradleBuildCustomizer(Version hibernateVersion) { this.hibernateVersion = hibernateVersion; } @Override public void customize(GradleBuild build) { build.plugins().add("org.hibernate.orm", (plugin) -> plugin.setVersion(this.hibernateVersion.toString())); - build.snippets().add((writer) -> { - writer.println("hibernate {"); - writer.indented(() -> { - writer.println("enhancement {"); - writer.indented(() -> writer.println("enableAssociationManagement = true")); - writer.println("}"); - }); - writer.println("}"); - }); + build.extensions() + .customize("hibernate", (hibernate) -> hibernate.nested("enhancement", + (enhancement) -> enhancement.attribute("enableAssociationManagement", "true"))); } } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizer.java deleted file mode 100644 index 683ec763a59..00000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizer.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.graalvm; - -import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; -import io.spring.initializr.generator.spring.build.BuildCustomizer; -import io.spring.initializr.generator.version.Version; - -/** - * A {@link BuildCustomizer} for projects using the Kotlin DSL with GraalVm and Hibernate. - * - * @author Stephane Nicoll - */ -class HibernatePluginKotlinDslGradleBuildCustomizer implements BuildCustomizer { - - private final Version hibernateVersion; - - HibernatePluginKotlinDslGradleBuildCustomizer(Version hibernateVersion) { - this.hibernateVersion = hibernateVersion; - } - - @Override - public void customize(GradleBuild build) { - build.plugins().add("org.hibernate.orm", (plugin) -> plugin.setVersion(this.hibernateVersion.toString())); - build.snippets().add((writer) -> { - writer.println("hibernate {"); - writer.indented(() -> { - writer.println("enhancement {"); - writer.indented(() -> writer.println("enableAssociationManagement.set(true)")); - writer.println("}"); - }); - writer.println("}"); - }); - } - -} diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfigurationTests.java index f4044405954..535210101c6 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmProjectGenerationConfigurationTests.java @@ -94,7 +94,7 @@ void gradleBuildAndKotlinDslWithJpaConfiguresHibernateEnhancePlugin() { // @formatter:off "hibernate {", " enhancement {", - " enableAssociationManagement.set(true)", + " enableAssociationManagement = true", " }", "}"); // @formatter:on diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGroovyDslGradleBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGradleBuildCustomizerTests.java similarity index 84% rename from start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGroovyDslGradleBuildCustomizerTests.java rename to start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGradleBuildCustomizerTests.java index 61d7007e4e4..431efea4455 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGroovyDslGradleBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginGradleBuildCustomizerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,15 +25,15 @@ import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@link HibernatePluginGroovyDslGradleBuildCustomizer}. + * Tests for {@link HibernatePluginGradleBuildCustomizer}. * * @author Stephane Nicoll */ -class HibernatePluginGroovyDslGradleBuildCustomizerTests { +class HibernatePluginGradleBuildCustomizerTests { @Test void customizerAppliesHibernateEnhancePlugin() { - HibernatePluginGroovyDslGradleBuildCustomizer customizer = new HibernatePluginGroovyDslGradleBuildCustomizer( + HibernatePluginGradleBuildCustomizer customizer = new HibernatePluginGradleBuildCustomizer( Version.parse("6.1.0.Final")); GradleBuild build = new GradleBuild(); customizer.customize(build); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizerTests.java deleted file mode 100644 index b52ac3b86d3..00000000000 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/HibernatePluginKotlinDslGradleBuildCustomizerTests.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.graalvm; - -import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; -import io.spring.initializr.generator.buildsystem.gradle.GradlePlugin; -import io.spring.initializr.generator.buildsystem.gradle.StandardGradlePlugin; -import io.spring.initializr.generator.version.Version; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link HibernatePluginKotlinDslGradleBuildCustomizer}. - * - * @author Stephane Nicoll - */ -class HibernatePluginKotlinDslGradleBuildCustomizerTests { - - @Test - void customizerAppliesHibernateEnhancePlugin() { - HibernatePluginKotlinDslGradleBuildCustomizer customizer = new HibernatePluginKotlinDslGradleBuildCustomizer( - Version.parse("6.1.0.Final")); - GradleBuild build = new GradleBuild(); - customizer.customize(build); - GradlePlugin hibernatePlugin = build.plugins() - .values() - .filter((plugin) -> plugin.getId().equals("org.hibernate.orm")) - .findAny() - .orElse(null); - assertThat(hibernatePlugin).isNotNull(); - assertThat(hibernatePlugin).isInstanceOf(StandardGradlePlugin.class) - .satisfies((plugin) -> assertThat(((StandardGradlePlugin) plugin).getVersion()).isEqualTo("6.1.0.Final")); - } - -} From b1e4b535970b2c1edc82bba68e4e25c2c9b1ebc4 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 4 Jun 2024 10:54:59 +0200 Subject: [PATCH 016/109] Migrate Spring Cloud Contract customizations to new extension API See gh-1497 --- ...ontractGroovyDslGradleBuildCustomizer.java | 14 ++++------- ...ontractKotlinDslGradleBuildCustomizer.java | 23 +++++-------------- ...oudContractGradleBuildCustomizerTests.java | 4 ++-- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGroovyDslGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGroovyDslGradleBuildCustomizer.java index cdb092ff199..08c3f655093 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGroovyDslGradleBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGroovyDslGradleBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,14 +33,10 @@ class SpringCloudContractGroovyDslGradleBuildCustomizer extends SpringCloudContr @Override protected void configureContractsDsl(GradleBuild build) { - build.snippets().add((indentingWriter) -> { - indentingWriter.println("contracts {"); - indentingWriter.indented(() -> { - if (build.dependencies().has("webflux")) { - indentingWriter.println("testMode = 'WebTestClient'"); - } - }); - indentingWriter.println("}"); + build.extensions().customize("contracts", (contracts) -> { + if (build.dependencies().has("webflux")) { + contracts.attribute("testMode", "'WebTestClient'"); + } }); } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractKotlinDslGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractKotlinDslGradleBuildCustomizer.java index 91b8b098877..1e7d064934b 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractKotlinDslGradleBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractKotlinDslGradleBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,6 @@ package io.spring.start.site.extension.dependency.springcloud; -import java.util.LinkedHashSet; -import java.util.Set; - import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; import io.spring.initializr.generator.project.ProjectDescription; @@ -36,19 +33,11 @@ class SpringCloudContractKotlinDslGradleBuildCustomizer extends SpringCloudContr @Override protected void configureContractsDsl(GradleBuild build) { - boolean hasWebflux = build.dependencies().has("webflux"); - Set imports = new LinkedHashSet<>(); - if (hasWebflux) { - imports.add("org.springframework.cloud.contract.verifier.config.TestMode"); - } - build.snippets().add(imports, (indentingWriter) -> { - indentingWriter.println("contracts {"); - indentingWriter.indented(() -> { - if (hasWebflux) { - indentingWriter.println("testMode.set(TestMode.WEBTESTCLIENT)"); - } - }); - indentingWriter.println("}"); + build.extensions().customize("contracts", (contracts) -> { + if (build.dependencies().has("webflux")) { + contracts.attributeWithType("testMode", "TestMode.WEBTESTCLIENT", + "org.springframework.cloud.contract.verifier.config.TestMode"); + } }); } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java index d3da6f831ac..3e87a7d55aa 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudContractGradleBuildCustomizerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,7 +67,7 @@ void springCloudContractVerifierPluginWithKotlinDslAndTestModeSetWhenWebFluxIsPr request.setBootVersion(SPRING_BOOT_VERSION); assertThat(gradleKotlinDslBuild(request)) .contains("import org.springframework.cloud.contract.verifier.config.TestMode") - .containsSubsequence("contracts {", "testMode.set(TestMode.WEBTESTCLIENT)"); + .containsSubsequence("contracts {", "testMode = TestMode.WEBTESTCLIENT"); } @Test From 9f94bf82673dd783210da21ecbc4e45427c79c47 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 4 Jun 2024 11:12:07 +0200 Subject: [PATCH 017/109] Suppress deprecations --- .../SpringRestDocsGradleGroovyBuildCustomizerTests.java | 1 + .../SpringRestDocsGradleKotlinBuildCustomizerTests.java | 1 + 2 files changed, 2 insertions(+) diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleGroovyBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleGroovyBuildCustomizerTests.java index 56263f84d2a..a0fbf82ced0 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleGroovyBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleGroovyBuildCustomizerTests.java @@ -35,6 +35,7 @@ class SpringRestDocsGradleGroovyBuildCustomizerTests { private final SpringRestDocsGradleGroovyBuildCustomizer customizer = new SpringRestDocsGradleGroovyBuildCustomizer(); @Test + @SuppressWarnings("removal") void customizesGradleBuild() { GradleBuild build = new GradleBuild(); this.customizer.customize(build); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleKotlinBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleKotlinBuildCustomizerTests.java index 743c07652b0..42a7917e630 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleKotlinBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springrestdocs/SpringRestDocsGradleKotlinBuildCustomizerTests.java @@ -30,6 +30,7 @@ * * @author Moritz Halbritter */ +@SuppressWarnings("removal") class SpringRestDocsGradleKotlinBuildCustomizerTests { private final SpringRestDocsGradleKotlinBuildCustomizer customizer = new SpringRestDocsGradleKotlinBuildCustomizer(); From 71f8164a01f20a5dc78ab8822f6361ebf7887bae Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Tue, 4 Jun 2024 11:40:55 +0300 Subject: [PATCH 018/109] Upgrade to Vaadin 24.3.13 See gh-1496 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index bdfd24b45d0..a38f6e52e5c 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -156,7 +156,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.3.12 + version: 24.3.13 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From f86919f08d95ec28a1165e83ffb4b50cbe0f7754 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Tue, 4 Jun 2024 15:38:50 +0100 Subject: [PATCH 019/109] Upgrade to Spring Shell 3.3.0 See gh-1498 --- start-site/src/main/resources/application.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index a38f6e52e5c..7338050b5e4 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -141,8 +141,7 @@ initializr: - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 3.2.5 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 3.3.0-RC1 - repositories: spring-milestones + version: 3.3.0 timefold-solver: groupId: ai.timefold.solver artifactId: timefold-solver-bom From 927f4e728ae2da82fdb75de36c161d5e88c95139 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 5 Jun 2024 09:09:07 +0200 Subject: [PATCH 020/109] Adapt to initializr changes --- .../project/JavaVersionProjectDescriptionCustomizerTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/test/java/io/spring/start/site/project/JavaVersionProjectDescriptionCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/project/JavaVersionProjectDescriptionCustomizerTests.java index d94d38668b9..6d83d76ab4e 100755 --- a/start-site/src/test/java/io/spring/start/site/project/JavaVersionProjectDescriptionCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/project/JavaVersionProjectDescriptionCustomizerTests.java @@ -58,7 +58,7 @@ void mavenBuildWithSupportedOptionsDoesNotDowngradeJavaVersion(String language, @MethodSource("supportedGradleGroovyParameters") void gradleGroovyBuildWithSupportedOptionsDoesNotDowngradeJavaVersion(String language, String javaVersion, String springBootVersion) { - assertThat(gradleBuild(project(language, javaVersion, springBootVersion))).hasSourceCompatibility(javaVersion); + assertThat(gradleBuild(project(language, javaVersion, springBootVersion))).hasToolchainForJava(javaVersion); } @Test From e5c95207a1332414edce39f20719c65834e643cb Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 5 Jun 2024 10:47:37 +0200 Subject: [PATCH 021/109] Adapt to initializr changes --- .../extension/code/kotlin/KotlinCoroutinesCustomizer.java | 4 ++-- .../code/kotlin/KotlinProjectGenerationConfiguration.java | 7 ++++--- .../code/kotlin/ReactorKotlinExtensionsCustomizer.java | 7 ++++--- .../DependencyProjectGenerationConfiguration.java | 7 ++++--- .../dependency/graphql/SpringGraphQlBuildCustomizer.java | 7 ++++--- .../SpringGraphQlProjectGenerationConfiguration.java | 8 +++++--- .../dependency/reactor/ReactorTestBuildCustomizer.java | 7 ++++--- .../SpringCloudCircuitBreakerBuildCustomizer.java | 4 ++-- 8 files changed, 29 insertions(+), 22 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinCoroutinesCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinCoroutinesCustomizer.java index 88fcf4bb19d..3634d8ce933 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinCoroutinesCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinCoroutinesCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ public class KotlinCoroutinesCustomizer { public KotlinCoroutinesCustomizer(InitializrMetadata metadata, ProjectDescription description, MavenVersionResolver versionResolver) { - this.buildResolver = new BuildMetadataResolver(metadata); + this.buildResolver = new BuildMetadataResolver(metadata, description.getPlatformVersion()); this.description = description; this.versionResolver = versionResolver; } diff --git a/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinProjectGenerationConfiguration.java index 67a42b90244..54d7310c285 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/KotlinProjectGenerationConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,8 +50,9 @@ KotlinVersionResolver kotlinVersionResolver(MavenVersionResolver versionResolver } @Bean - ReactorKotlinExtensionsCustomizer reactorKotlinExtensionsCustomizer(InitializrMetadata metadata) { - return new ReactorKotlinExtensionsCustomizer(metadata); + ReactorKotlinExtensionsCustomizer reactorKotlinExtensionsCustomizer(InitializrMetadata metadata, + ProjectDescription description) { + return new ReactorKotlinExtensionsCustomizer(metadata, description); } @Configuration diff --git a/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/ReactorKotlinExtensionsCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/ReactorKotlinExtensionsCustomizer.java index d813c431967..12673ac2257 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/ReactorKotlinExtensionsCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/code/kotlin/ReactorKotlinExtensionsCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ import io.spring.initializr.generator.buildsystem.Build; import io.spring.initializr.generator.buildsystem.Dependency; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.build.BuildMetadataResolver; import io.spring.initializr.metadata.InitializrMetadata; @@ -32,8 +33,8 @@ class ReactorKotlinExtensionsCustomizer implements BuildCustomizer { private final BuildMetadataResolver buildResolver; - ReactorKotlinExtensionsCustomizer(InitializrMetadata metadata) { - this.buildResolver = new BuildMetadataResolver(metadata); + ReactorKotlinExtensionsCustomizer(InitializrMetadata metadata, ProjectDescription description) { + this.buildResolver = new BuildMetadataResolver(metadata, description.getPlatformVersion()); } @Override diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java index 4a42b1a1b7c..a5240dc1ad6 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import io.spring.initializr.generator.condition.ConditionalOnBuildSystem; import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; import io.spring.initializr.generator.io.template.MustacheTemplateRenderer; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; import io.spring.initializr.generator.spring.build.gradle.ConditionalOnGradleVersion; import io.spring.initializr.metadata.InitializrMetadata; @@ -56,8 +57,8 @@ public DependencyProjectGenerationConfiguration(InitializrMetadata metadata) { } @Bean - public ReactorTestBuildCustomizer reactorTestBuildCustomizer() { - return new ReactorTestBuildCustomizer(this.metadata); + public ReactorTestBuildCustomizer reactorTestBuildCustomizer(ProjectDescription description) { + return new ReactorTestBuildCustomizer(this.metadata, description); } @Bean diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlBuildCustomizer.java index 57a22722eea..e07bf524716 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import io.spring.initializr.generator.buildsystem.Build; import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.DependencyScope; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.build.BuildMetadataResolver; import io.spring.initializr.metadata.InitializrMetadata; @@ -34,8 +35,8 @@ class SpringGraphQlBuildCustomizer implements BuildCustomizer { private final BuildMetadataResolver buildResolver; - SpringGraphQlBuildCustomizer(InitializrMetadata metadata) { - this.buildResolver = new BuildMetadataResolver(metadata); + SpringGraphQlBuildCustomizer(InitializrMetadata metadata, ProjectDescription description) { + this.buildResolver = new BuildMetadataResolver(metadata, description.getPlatformVersion()); } @Override diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlProjectGenerationConfiguration.java index 6fd3c04195a..f676f89fad3 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graphql/SpringGraphQlProjectGenerationConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package io.spring.start.site.extension.dependency.graphql; import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.metadata.InitializrMetadata; import org.springframework.context.annotation.Bean; @@ -37,8 +38,9 @@ SpringGraphQlProjectContributor SpringGraphQlProjectContributor() { } @Bean - SpringGraphQlBuildCustomizer SpringGraphQlBuildCustomizer(InitializrMetadata initializrMetadata) { - return new SpringGraphQlBuildCustomizer(initializrMetadata); + SpringGraphQlBuildCustomizer SpringGraphQlBuildCustomizer(InitializrMetadata initializrMetadata, + ProjectDescription description) { + return new SpringGraphQlBuildCustomizer(initializrMetadata, description); } } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/reactor/ReactorTestBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/reactor/ReactorTestBuildCustomizer.java index 277c8227c0e..6b0eed8b204 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/reactor/ReactorTestBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/reactor/ReactorTestBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ import io.spring.initializr.generator.buildsystem.Build; import io.spring.initializr.generator.buildsystem.Dependency; import io.spring.initializr.generator.buildsystem.DependencyScope; +import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.build.BuildCustomizer; import io.spring.initializr.generator.spring.build.BuildMetadataResolver; import io.spring.initializr.metadata.InitializrMetadata; @@ -34,8 +35,8 @@ public class ReactorTestBuildCustomizer implements BuildCustomizer { private final BuildMetadataResolver buildResolver; - public ReactorTestBuildCustomizer(InitializrMetadata metadata) { - this.buildResolver = new BuildMetadataResolver(metadata); + public ReactorTestBuildCustomizer(InitializrMetadata metadata, ProjectDescription description) { + this.buildResolver = new BuildMetadataResolver(metadata, description.getPlatformVersion()); } @Override diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizer.java index 420374e0201..569cd725e6b 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springcloud/SpringCloudCircuitBreakerBuildCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ public class SpringCloudCircuitBreakerBuildCustomizer implements BuildCustomizer private final ProjectDescription description; public SpringCloudCircuitBreakerBuildCustomizer(InitializrMetadata metadata, ProjectDescription description) { - this.buildResolver = new BuildMetadataResolver(metadata); + this.buildResolver = new BuildMetadataResolver(metadata, description.getPlatformVersion()); this.metadata = metadata; this.description = description; } From ee437fd85264203304cab7feb27920e994def9ba Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 5 Jun 2024 13:59:06 +0200 Subject: [PATCH 022/109] Add SBOM support Closes gh-1480 --- .../sbom/SbomCycloneDxBuildCustomizer.java | 42 +++++++++++ .../SbomCycloneDxGradleBuildCustomizer.java | 36 ++++++++++ .../SbomCycloneDxMavenBuildCustomizer.java | 34 +++++++++ .../SbomProjectGenerationConfiguration.java | 53 ++++++++++++++ .../dependency/sbom/package-info.java | 20 ++++++ .../main/resources/META-INF/spring.factories | 1 + start-site/src/main/resources/application.yml | 10 +++ ...omProjectGenerationConfigurationTests.java | 70 +++++++++++++++++++ 8 files changed, 266 insertions(+) create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxBuildCustomizer.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxMavenBuildCustomizer.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfiguration.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/package-info.java create mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxBuildCustomizer.java new file mode 100644 index 00000000000..0b08f1d88ca --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxBuildCustomizer.java @@ -0,0 +1,42 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.sbom; + +import io.spring.initializr.generator.buildsystem.Build; +import io.spring.initializr.generator.spring.build.BuildCustomizer; + +import org.springframework.core.Ordered; + +/** + * {@link BuildCustomizer} that removes the CycloneDX SBOM dependency as SBOM support does + * not require any dependency. + * + * @author Moritz Halbritter + */ +class SbomCycloneDxBuildCustomizer implements BuildCustomizer { + + @Override + public void customize(Build build) { + build.dependencies().remove("sbom-cyclone-dx"); + } + + @Override + public int getOrder() { + return Ordered.LOWEST_PRECEDENCE - 10; + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java new file mode 100644 index 00000000000..a68ed6fcf31 --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java @@ -0,0 +1,36 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.sbom; + +import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; +import io.spring.initializr.generator.spring.build.BuildCustomizer; + +/** + * {@link BuildCustomizer} that adds the CycloneDX Gradle plugin. + * + * @author Moritz Halbritter + */ +class SbomCycloneDxGradleBuildCustomizer implements BuildCustomizer { + + private static final String PLUGIN_VERSION = "1.8.2"; + + @Override + public void customize(GradleBuild build) { + build.plugins().add("org.cyclonedx.bom", (plugin) -> plugin.setVersion(PLUGIN_VERSION)); + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxMavenBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxMavenBuildCustomizer.java new file mode 100644 index 00000000000..3282385f4f7 --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxMavenBuildCustomizer.java @@ -0,0 +1,34 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.sbom; + +import io.spring.initializr.generator.buildsystem.maven.MavenBuild; +import io.spring.initializr.generator.spring.build.BuildCustomizer; + +/** + * {@link BuildCustomizer} that adds the CycloneDX Maven plugin. + * + * @author Moritz Halbritter + */ +class SbomCycloneDxMavenBuildCustomizer implements BuildCustomizer { + + @Override + public void customize(MavenBuild build) { + build.plugins().add("org.cyclonedx", "cyclonedx-maven-plugin"); + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfiguration.java new file mode 100644 index 00000000000..d6d5528155a --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfiguration.java @@ -0,0 +1,53 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.sbom; + +import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; +import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; +import io.spring.initializr.generator.condition.ConditionalOnBuildSystem; +import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; +import io.spring.initializr.generator.project.ProjectGenerationConfiguration; + +import org.springframework.context.annotation.Bean; + +/** + * {@link ProjectGenerationConfiguration} for generation of projects that use SBOMs. + * + * @author Moritz Halbritter + */ +@ProjectGenerationConfiguration +@ConditionalOnRequestedDependency("sbom-cyclone-dx") +class SbomProjectGenerationConfiguration { + + @Bean + SbomCycloneDxBuildCustomizer sbomBuildCustomizer() { + return new SbomCycloneDxBuildCustomizer(); + } + + @Bean + @ConditionalOnBuildSystem(MavenBuildSystem.ID) + SbomCycloneDxMavenBuildCustomizer sbomCycloneDxMavenBuildCustomizer() { + return new SbomCycloneDxMavenBuildCustomizer(); + } + + @Bean + @ConditionalOnBuildSystem(GradleBuildSystem.ID) + SbomCycloneDxGradleBuildCustomizer sbomCycloneDxGradleBuildCustomizer() { + return new SbomCycloneDxGradleBuildCustomizer(); + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/package-info.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/package-info.java new file mode 100644 index 00000000000..81b08a0254b --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Extensions for generation of projects that use SBOMs. + */ +package io.spring.start.site.extension.dependency.sbom; diff --git a/start-site/src/main/resources/META-INF/spring.factories b/start-site/src/main/resources/META-INF/spring.factories index 181db41f023..7a2980f95d5 100644 --- a/start-site/src/main/resources/META-INF/spring.factories +++ b/start-site/src/main/resources/META-INF/spring.factories @@ -23,6 +23,7 @@ io.spring.start.site.extension.dependency.oracle.OracleProjectGenerationConfigur io.spring.start.site.extension.dependency.postgresql.PgVectorProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.postgresql.PostgresqlProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.redis.RedisProjectGenerationConfiguration,\ +io.spring.start.site.extension.dependency.sbom.SbomProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.solace.SolaceProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.springamqp.SpringAmqpProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.springazure.SpringAzureProjectGenerationConfiguration,\ diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 7338050b5e4..61339f66df2 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -898,6 +898,16 @@ initializr: description: Building a RESTful Web Service with Spring Boot Actuator - rel: reference href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#actuator + - name: CycloneDX SBOM support + id: sbom-cyclone-dx + description: Creates a Software Bill of Materials in CycloneDX format. + groupId: org.springframework.boot + artifactId: spring-boot + starter: false + compatibilityRange: "3.3.0" + links: + - rel: reference + href: https://docs.spring.io/spring-boot/reference/actuator/endpoints.html#actuator.endpoints.sbom - name: codecentric's Spring Boot Admin (Client) id: codecentric-spring-boot-admin-client groupId: de.codecentric diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java new file mode 100644 index 00000000000..56c3dfd0527 --- /dev/null +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java @@ -0,0 +1,70 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.sbom; + +import io.spring.initializr.web.project.ProjectRequest; +import io.spring.start.site.extension.AbstractExtensionTests; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link SbomProjectGenerationConfiguration}. + * + * @author Moritz Halbritter + */ +class SbomProjectGenerationConfigurationTests extends AbstractExtensionTests { + + @Test + void shouldNotAddGradlePluginIfSbomIsNotSelected() { + ProjectRequest request = createProjectRequest("web"); + assertThat(gradleBuild(request)).doesNotContain("org.cyclonedx.bom"); + } + + @Test + void shouldNotAddMavenPluginIfSbomIsNotSelected() { + ProjectRequest request = createProjectRequest("web"); + assertThat(mavenPom(request)).doesNotContain("cyclonedx-maven-plugin"); + } + + @Test + void shouldRemoveArtificalDependency() { + ProjectRequest request = createProjectRequest("sbom-cyclone-dx"); + assertThat(mavenPom(request)).doesNotHaveDependency("org.springframework.boot", "spring-boot"); + assertThat(gradleBuild(request)).doesNotContain("'org.springframework.boot:spring-boot'"); + } + + @Test + void shouldAddMavenPlugin() { + ProjectRequest request = createProjectRequest("sbom-cyclone-dx"); + assertThat(mavenPom(request)).lines().containsSequence( + // @formatter:off + " ", + " org.cyclonedx", + " cyclonedx-maven-plugin", + " " + // @formatter:on + ); + } + + @Test + void shouldAddGradlePlugin() { + ProjectRequest request = createProjectRequest("sbom-cyclone-dx"); + assertThat(gradleBuild(request)).hasPlugin("org.cyclonedx.bom", "1.8.2"); + } + +} From 55f991d0f818990260ada1d1360050dc1b430b34 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 6 Jun 2024 11:56:35 +0200 Subject: [PATCH 023/109] Document Gradle toolchain limitations when using native image Closes gh-1499 --- .../GraalVmHelpDocumentCustomizer.java | 5 ++++- .../main/resources/templates/graalvm.mustache | 9 +++++++++ .../GraalVmHelpDocumentCustomizerTests.java | 19 ++++++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java index e1af26e55eb..685edb169b7 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,6 +22,7 @@ import java.util.stream.Stream; import io.spring.initializr.generator.buildsystem.Build; +import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; import io.spring.initializr.generator.buildsystem.maven.MavenBuild; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.documentation.HelpDocument; @@ -59,11 +60,13 @@ public void customize(HelpDocument document) { "https://docs.spring.io/spring-boot/docs/%s/reference/html/native-image.html#native-image", this.platformVersion), "GraalVM Native Image Support"); boolean mavenBuild = this.build instanceof MavenBuild; + boolean gradleBuild = this.build instanceof GradleBuild; String url = String.format("https://docs.spring.io/spring-boot/docs/%s/%s/reference/htmlsingle/#aot", this.platformVersion, (mavenBuild) ? "maven-plugin" : "gradle-plugin"); document.gettingStarted().addAdditionalLink(url, "Configure AOT settings in Build Plugin"); Map model = new HashMap<>(); + model.put("gradleBuild", gradleBuild); // Cloud native buildpacks model.put("cnbBuildImageCommand", mavenBuild ? "./mvnw spring-boot:build-image -Pnative" : "./gradlew bootBuildImage"); diff --git a/start-site/src/main/resources/templates/graalvm.mustache b/start-site/src/main/resources/templates/graalvm.mustache index 9bda7dfc548..765a136edb3 100644 --- a/start-site/src/main/resources/templates/graalvm.mustache +++ b/start-site/src/main/resources/templates/graalvm.mustache @@ -44,3 +44,12 @@ To run your existing tests in a native image, run the following goal: ``` $ {{testsExecutionCommand}} ``` + +{{#gradleBuild}} +### Gradle Toolchain support + +There are some limitations regarding Native Build Tools and Gradle toolchains. +Native Build Tools disable toolchain support by default. +Effectively, native image compilation is done with the JDK used to execute Gradle. +You can read more about [toolchain support in the Native Build tools here](https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html#configuration-toolchains). +{{/gradleBuild}} diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java index ceaad5ab429..78961c3b532 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +38,7 @@ * Tests for {@link GraalVmHelpDocumentCustomizer}. * * @author Stephane Nicoll + * @author Moritz Halbritter */ class GraalVmHelpDocumentCustomizerTests extends AbstractExtensionTests { @@ -102,6 +103,22 @@ void nativeSectionWithWebExposesPort() { assertHelpDocument(request).contains("$ docker run --rm -p 8080:8080 another-project:2.0.0-SNAPSHOT"); } + @Test + void shouldDocumentGradleToolchainLimitations() { + ProjectRequest request = createProjectRequest("native"); + request.setType("gradle-project"); + assertHelpDocument(request) + .contains("There are some limitations regarding Native Build Tools and Gradle toolchains."); + } + + @Test + void shouldNotDocumentGradleToolchainLimitationsWhenUsingMaven() { + ProjectRequest request = createProjectRequest("native"); + request.setType("maven-project"); + assertHelpDocument(request) + .doesNotContain("There are some limitations regarding Native Build Tools and Gradle toolchains."); + } + private TextAssert assertHelpDocument(ProjectRequest request) { ProjectStructure project = generateProject(request); return new TextAssert(project.getProjectDirectory().resolve("HELP.md")); From 29980bcf1cc484701105bfd113b75440a5c8b252 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 6 Jun 2024 13:20:01 +0200 Subject: [PATCH 024/109] Fix typo --- start-site/src/main/resources/templates/graalvm.mustache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/templates/graalvm.mustache b/start-site/src/main/resources/templates/graalvm.mustache index 765a136edb3..ff92955d5bb 100644 --- a/start-site/src/main/resources/templates/graalvm.mustache +++ b/start-site/src/main/resources/templates/graalvm.mustache @@ -51,5 +51,5 @@ $ {{testsExecutionCommand}} There are some limitations regarding Native Build Tools and Gradle toolchains. Native Build Tools disable toolchain support by default. Effectively, native image compilation is done with the JDK used to execute Gradle. -You can read more about [toolchain support in the Native Build tools here](https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html#configuration-toolchains). +You can read more about [toolchain support in the Native Build Tools here](https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html#configuration-toolchains). {{/gradleBuild}} From 4cadd871de8a4689977714eb178e645a17728561 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 5 Jun 2024 15:41:33 +0200 Subject: [PATCH 025/109] Import testcontainers configuration in integration tests This changes the code generation of the Testcontainers support: the testcontainer beans are now defined in their own configuration. This configuration is used in the test main method, and is @Import-ed in the integration test. The result is that the test main method starts testcontainers, and the tests pass too as they now also start the testcontainers. Closes gh-1247 --- ...nersApplicationCodeProjectContributor.java | 7 +- ...gurationTestApplicationTypeCustomizer.java | 39 +++++ ...nersApplicationCodeProjectContributor.java | 7 +- ...nersApplicationCodeProjectContributor.java | 23 +-- ...nersApplicationCodeProjectContributor.java | 26 +++- ...tainersProjectGenerationConfiguration.java | 7 +- ...leProjectGenerationConfigurationTests.java | 4 +- ...rsProjectGenerationConfigurationTests.java | 142 +++++++++++++----- 8 files changed, 184 insertions(+), 71 deletions(-) create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/ImportTestcontainersConfigurationTestApplicationTypeCustomizer.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/GroovyTestContainersApplicationCodeProjectContributor.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/GroovyTestContainersApplicationCodeProjectContributor.java index cee6236a488..460aabba432 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/GroovyTestContainersApplicationCodeProjectContributor.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/GroovyTestContainersApplicationCodeProjectContributor.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,14 +52,15 @@ class GroovyTestContainersApplicationCodeProjectContributor extends @Override protected void contributeCode(GroovySourceCode sourceCode) { + super.contributeCode(sourceCode); customizeApplicationTypeDeclaration(sourceCode, (type) -> { type.modifiers(Modifier.PUBLIC); type.addMethodDeclaration(GroovyMethodDeclaration.method("main") .modifiers(Modifier.PUBLIC | Modifier.STATIC) .returning("void") .parameters(Parameter.of("args", String[].class)) - .body(CodeBlock.ofStatement("$T.from($L::main).with($L).run(args)", SpringApplication.class, - getDescription().getApplicationName(), getTestApplicationName()))); + .body(CodeBlock.ofStatement("$T.from($L::main).with($T).run(args)", SpringApplication.class, + getDescription().getApplicationName(), TESTCONTAINERS_CONFIGURATION_CLASS_NAME))); }); } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/ImportTestcontainersConfigurationTestApplicationTypeCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/ImportTestcontainersConfigurationTestApplicationTypeCustomizer.java new file mode 100644 index 00000000000..98fedf75945 --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/ImportTestcontainersConfigurationTestApplicationTypeCustomizer.java @@ -0,0 +1,39 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.testcontainers; + +import io.spring.initializr.generator.language.ClassName; +import io.spring.initializr.generator.language.TypeDeclaration; +import io.spring.initializr.generator.spring.code.TestApplicationTypeCustomizer; + +/** + * {@link TestApplicationTypeCustomizer} that imports the generated Testcontainers test + * configuration. + * + * @author Moritz Halbritter + */ +class ImportTestcontainersConfigurationTestApplicationTypeCustomizer + implements TestApplicationTypeCustomizer { + + @Override + public void customize(TypeDeclaration typeDeclaration) { + typeDeclaration.annotations() + .add(ClassName.of("org.springframework.context.annotation.Import"), (annotation) -> annotation.set("value", + TestContainersApplicationCodeProjectContributor.TESTCONTAINERS_CONFIGURATION_CLASS_NAME)); + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/JavaTestContainersApplicationCodeProjectContributor.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/JavaTestContainersApplicationCodeProjectContributor.java index 774cf4ac3ca..6bd9717be1e 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/JavaTestContainersApplicationCodeProjectContributor.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/JavaTestContainersApplicationCodeProjectContributor.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,14 +52,15 @@ class JavaTestContainersApplicationCodeProjectContributor extends @Override protected void contributeCode(JavaSourceCode sourceCode) { + super.contributeCode(sourceCode); customizeApplicationTypeDeclaration(sourceCode, (type) -> { type.modifiers(Modifier.PUBLIC); type.addMethodDeclaration(JavaMethodDeclaration.method("main") .modifiers(Modifier.PUBLIC | Modifier.STATIC) .returning("void") .parameters(Parameter.of("args", String[].class)) - .body(CodeBlock.ofStatement("$T.from($L::main).with($L.class).run(args)", SpringApplication.class, - getDescription().getApplicationName(), getTestApplicationName()))); + .body(CodeBlock.ofStatement("$T.from($L::main).with($T.class).run(args)", SpringApplication.class, + getDescription().getApplicationName(), TESTCONTAINERS_CONFIGURATION_CLASS_NAME))); }); } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java index 715d462022c..4105fd4409b 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ package io.spring.start.site.extension.dependency.testcontainers; import java.util.Arrays; -import java.util.function.Consumer; import java.util.stream.Collectors; import io.spring.initializr.generator.io.IndentingWriterFactory; @@ -25,7 +24,6 @@ import io.spring.initializr.generator.language.Parameter; import io.spring.initializr.generator.language.kotlin.KotlinCompilationUnit; import io.spring.initializr.generator.language.kotlin.KotlinFunctionDeclaration; -import io.spring.initializr.generator.language.kotlin.KotlinModifier; import io.spring.initializr.generator.language.kotlin.KotlinSourceCode; import io.spring.initializr.generator.language.kotlin.KotlinSourceCodeWriter; import io.spring.initializr.generator.language.kotlin.KotlinTypeDeclaration; @@ -53,18 +51,13 @@ class KotlinTestContainersApplicationCodeProjectContributor extends @Override protected void contributeCode(KotlinSourceCode sourceCode) { - customizeApplicationTypeDeclaration(sourceCode, (type) -> type.modifiers(KotlinModifier.PUBLIC)); - } - - @Override - protected void customizeApplicationCompilationUnit(KotlinSourceCode sourceCode, - Consumer customizer) { - super.customizeApplicationCompilationUnit(sourceCode, customizer - .andThen((compilationUnit) -> compilationUnit.addTopLevelFunction(KotlinFunctionDeclaration.function("main") - .parameters(Parameter.of("args", "Array")) - .body(CodeBlock.ofStatement("$T<$L>().$T($L::class).run(*args)", - "org.springframework.boot.fromApplication", getDescription().getApplicationName(), - "org.springframework.boot.with", getTestApplicationName()))))); + super.contributeCode(sourceCode); + customizeApplicationCompilationUnit(sourceCode, + (compilationUnit) -> compilationUnit.addTopLevelFunction(KotlinFunctionDeclaration.function("main") + .parameters(Parameter.of("args", "Array")) + .body(CodeBlock.ofStatement("$T<$L>().$T($T::class).run(*args)", + "org.springframework.boot.fromApplication", getDescription().getApplicationName(), + "org.springframework.boot.with", TESTCONTAINERS_CONFIGURATION_CLASS_NAME)))); } @Override diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersApplicationCodeProjectContributor.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersApplicationCodeProjectContributor.java index 6e5667c39ed..1d878580374 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersApplicationCodeProjectContributor.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersApplicationCodeProjectContributor.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,6 +40,7 @@ * @param language-specific compilation unit * @param language-specific source code * @author Stephane Nicoll + * @author Moritz Halbritter */ abstract class TestContainersApplicationCodeProjectContributor, S extends SourceCode> implements ProjectContributor { @@ -55,6 +56,8 @@ abstract class TestContainersApplicationCodeProjectContributor annotation.set("proxyBeanMethods", false)); + this.serviceConnections.values() + .forEach((serviceConnection) -> configureServiceConnection(testcontainersConfiguration, serviceConnection)); + } protected abstract void configureServiceConnection(T typeDeclaration, ServiceConnection serviceConnection); @@ -101,10 +117,6 @@ protected void customizeApplicationCompilationUnit(S sourceCode, Consumer cus protected void customizeApplicationTypeDeclaration(S sourceCode, Consumer customizer) { customizeApplicationCompilationUnit(sourceCode, (compilationUnit) -> { T applicationType = compilationUnit.createTypeDeclaration(getTestApplicationName()); - applicationType.annotations() - .add(TEST_CONFIGURATION_CLASS_NAME, (annotation) -> annotation.set("proxyBeanMethods", false)); - this.serviceConnections.values() - .forEach((serviceConnection) -> configureServiceConnection(applicationType, serviceConnection)); customizer.accept(applicationType); }); } @@ -118,7 +130,7 @@ protected void annotateContainerMethod(Annotatable annotable, String name) { }); } - protected String getTestApplicationName() { + private String getTestApplicationName() { return "Test" + this.description.getApplicationName(); } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfiguration.java index 4cedcf17a67..3de0c8dfab8 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -127,6 +127,11 @@ JavaTestContainersApplicationCodeProjectContributor javaTestContainersApplicatio this.description, serviceConnections); } + @Bean + ImportTestcontainersConfigurationTestApplicationTypeCustomizer importTestcontainersConfigurationTestApplicationTypeCustomizer() { + return new ImportTestcontainersConfigurationTestApplicationTypeCustomizer(); + } + } } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/oracle/OracleProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/oracle/OracleProjectGenerationConfigurationTests.java index 4531d3e4c8e..a1793037343 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/oracle/OracleProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/oracle/OracleProjectGenerationConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,7 +53,7 @@ void declaresOracleFreeContainerBeanWithBoot32() { ProjectRequest request = createProjectRequest("testcontainers", "oracle"); request.setBootVersion(SPRING_BOOT_VERSION); request.setLanguage("java"); - assertThat(generateProject(request)).textFile("src/test/java/com/example/demo/TestDemoApplication.java") + assertThat(generateProject(request)).textFile("src/test/java/com/example/demo/TestcontainersConfiguration.java") .contains("import org.testcontainers.oracle.OracleContainer;") .contains(" return new OracleContainer(DockerImageName.parse(\"gvenzl/oracle-free:latest\"));"); } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java index 118839c380f..5773293b593 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java @@ -168,11 +168,11 @@ void testApplicationWithGroovyAndGenericContainerIsContributed() { ProjectRequest request = createProjectRequest("testcontainers", "data-redis"); request.setBootVersion(SPRING_BOOT_VERSION_3_3); request.setLanguage("groovy"); - assertThat(generateProject(request)).textFile("src/test/groovy/com/example/demo/TestDemoApplication.groovy") + assertThat(generateProject(request)) + .textFile("src/test/groovy/com/example/demo/TestcontainersConfiguration.groovy") .isEqualTo(""" package com.example.demo - import org.springframework.boot.SpringApplication import org.springframework.boot.test.context.TestConfiguration import org.springframework.boot.testcontainers.service.connection.ServiceConnection import org.springframework.context.annotation.Bean @@ -180,7 +180,7 @@ void testApplicationWithGroovyAndGenericContainerIsContributed() { import org.testcontainers.utility.DockerImageName @TestConfiguration(proxyBeanMethods = false) - class TestDemoApplication { + class TestcontainersConfiguration { @Bean @ServiceConnection(name = "redis") @@ -188,10 +188,6 @@ GenericContainer redisContainer() { new GenericContainer<>(DockerImageName.parse("redis:latest")).withExposedPorts(6379) } - static void main(String[] args) { - SpringApplication.from(DemoApplication::main).with(TestDemoApplication).run(args) - } - } """); } @@ -201,11 +197,10 @@ void testApplicationWithJavaAndGenericContainerIsContributed() { ProjectRequest request = createProjectRequest("testcontainers", "data-redis"); request.setBootVersion(SPRING_BOOT_VERSION_3_3); request.setLanguage("java"); - assertThat(generateProject(request)).textFile("src/test/java/com/example/demo/TestDemoApplication.java") + assertThat(generateProject(request)).textFile("src/test/java/com/example/demo/TestcontainersConfiguration.java") .isEqualTo(""" package com.example.demo; - import org.springframework.boot.SpringApplication; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.context.annotation.Bean; @@ -213,7 +208,7 @@ void testApplicationWithJavaAndGenericContainerIsContributed() { import org.testcontainers.utility.DockerImageName; @TestConfiguration(proxyBeanMethods = false) - public class TestDemoApplication { + class TestcontainersConfiguration { @Bean @ServiceConnection(name = "redis") @@ -221,10 +216,6 @@ GenericContainer redisContainer() { return new GenericContainer<>(DockerImageName.parse("redis:latest")).withExposedPorts(6379); } - public static void main(String[] args) { - SpringApplication.from(DemoApplication::main).with(TestDemoApplication.class).run(args); - } - } """); } @@ -234,20 +225,18 @@ void testApplicationWithKotlinAndGenericContainerIsContributed() { ProjectRequest request = createProjectRequest("testcontainers", "data-redis"); request.setBootVersion(SPRING_BOOT_VERSION_3_3); request.setLanguage("kotlin"); - assertThat(generateProject(request)).textFile("src/test/kotlin/com/example/demo/TestDemoApplication.kt") + assertThat(generateProject(request)).textFile("src/test/kotlin/com/example/demo/TestcontainersConfiguration.kt") .isEqualTo(""" package com.example.demo - import org.springframework.boot.fromApplication import org.springframework.boot.test.context.TestConfiguration import org.springframework.boot.testcontainers.service.connection.ServiceConnection - import org.springframework.boot.with import org.springframework.context.annotation.Bean import org.testcontainers.containers.GenericContainer import org.testcontainers.utility.DockerImageName @TestConfiguration(proxyBeanMethods = false) - class TestDemoApplication { + class TestcontainersConfiguration { @Bean @ServiceConnection(name = "redis") @@ -256,10 +245,6 @@ fun redisContainer(): GenericContainer<*> { } } - - fun main(args: Array) { - fromApplication().with(TestDemoApplication::class).run(*args) - } """); } @@ -268,11 +253,25 @@ void testApplicationWithGroovyAndSpecificContainerIsContributed() { ProjectRequest request = createProjectRequest("testcontainers", "data-cassandra"); request.setBootVersion(SPRING_BOOT_VERSION_3_3); request.setLanguage("groovy"); - assertThat(generateProject(request)).textFile("src/test/groovy/com/example/demo/TestDemoApplication.groovy") + ProjectStructure projectStructure = generateProject(request); + assertThat(projectStructure).textFile("src/test/groovy/com/example/demo/TestDemoApplication.groovy") .isEqualTo(""" package com.example.demo import org.springframework.boot.SpringApplication + + class TestDemoApplication { + + static void main(String[] args) { + SpringApplication.from(DemoApplication::main).with(TestcontainersConfiguration).run(args) + } + + } + """); + assertThat(projectStructure).textFile("src/test/groovy/com/example/demo/TestcontainersConfiguration.groovy") + .isEqualTo(""" + package com.example.demo + import org.springframework.boot.test.context.TestConfiguration import org.springframework.boot.testcontainers.service.connection.ServiceConnection import org.springframework.context.annotation.Bean @@ -280,7 +279,7 @@ void testApplicationWithGroovyAndSpecificContainerIsContributed() { import org.testcontainers.utility.DockerImageName @TestConfiguration(proxyBeanMethods = false) - class TestDemoApplication { + class TestcontainersConfiguration { @Bean @ServiceConnection @@ -288,8 +287,22 @@ CassandraContainer cassandraContainer() { new CassandraContainer<>(DockerImageName.parse("cassandra:latest")) } - static void main(String[] args) { - SpringApplication.from(DemoApplication::main).with(TestDemoApplication).run(args) + } + """); + assertThat(projectStructure).textFile("src/test/groovy/com/example/demo/DemoApplicationTests.groovy") + .isEqualTo(""" + package com.example.demo + + import org.junit.jupiter.api.Test + import org.springframework.boot.test.context.SpringBootTest + import org.springframework.context.annotation.Import + + @Import(TestcontainersConfiguration) + @SpringBootTest + class DemoApplicationTests { + + @Test + void contextLoads() { } } @@ -301,11 +314,24 @@ void testApplicationWithJavaAndSpecificContainerIsContributed() { ProjectRequest request = createProjectRequest("testcontainers", "data-cassandra"); request.setBootVersion(SPRING_BOOT_VERSION_3_3); request.setLanguage("java"); - assertThat(generateProject(request)).textFile("src/test/java/com/example/demo/TestDemoApplication.java") + ProjectStructure projectStructure = generateProject(request); + assertThat(projectStructure).textFile("src/test/java/com/example/demo/TestDemoApplication.java").isEqualTo(""" + package com.example.demo; + + import org.springframework.boot.SpringApplication; + + public class TestDemoApplication { + + public static void main(String[] args) { + SpringApplication.from(DemoApplication::main).with(TestcontainersConfiguration.class).run(args); + } + + } + """); + assertThat(projectStructure).textFile("src/test/java/com/example/demo/TestcontainersConfiguration.java") .isEqualTo(""" package com.example.demo; - import org.springframework.boot.SpringApplication; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.context.annotation.Bean; @@ -313,7 +339,7 @@ void testApplicationWithJavaAndSpecificContainerIsContributed() { import org.testcontainers.utility.DockerImageName; @TestConfiguration(proxyBeanMethods = false) - public class TestDemoApplication { + class TestcontainersConfiguration { @Bean @ServiceConnection @@ -321,12 +347,25 @@ CassandraContainer cassandraContainer() { return new CassandraContainer<>(DockerImageName.parse("cassandra:latest")); } - public static void main(String[] args) { - SpringApplication.from(DemoApplication::main).with(TestDemoApplication.class).run(args); - } - } """); + assertThat(projectStructure).textFile("src/test/java/com/example/demo/DemoApplicationTests.java").isEqualTo(""" + package com.example.demo; + + import org.junit.jupiter.api.Test; + import org.springframework.boot.test.context.SpringBootTest; + import org.springframework.context.annotation.Import; + + @Import(TestcontainersConfiguration.class) + @SpringBootTest + class DemoApplicationTests { + + @Test + void contextLoads() { + } + + } + """); } @Test @@ -334,20 +373,30 @@ void testApplicationWithKotlinAndSpecificContainerIsContributed() { ProjectRequest request = createProjectRequest("testcontainers", "data-cassandra"); request.setBootVersion(SPRING_BOOT_VERSION_3_3); request.setLanguage("kotlin"); - assertThat(generateProject(request)).textFile("src/test/kotlin/com/example/demo/TestDemoApplication.kt") + ProjectStructure projectStructure = generateProject(request); + assertThat(projectStructure).textFile("src/test/kotlin/com/example/demo/TestDemoApplication.kt").isEqualTo(""" + package com.example.demo + + import org.springframework.boot.fromApplication + import org.springframework.boot.with + + + fun main(args: Array) { + fromApplication().with(TestcontainersConfiguration::class).run(*args) + } + """); + assertThat(projectStructure).textFile("src/test/kotlin/com/example/demo/TestcontainersConfiguration.kt") .isEqualTo(""" package com.example.demo - import org.springframework.boot.fromApplication import org.springframework.boot.test.context.TestConfiguration import org.springframework.boot.testcontainers.service.connection.ServiceConnection - import org.springframework.boot.with import org.springframework.context.annotation.Bean import org.testcontainers.containers.CassandraContainer import org.testcontainers.utility.DockerImageName @TestConfiguration(proxyBeanMethods = false) - class TestDemoApplication { + class TestcontainersConfiguration { @Bean @ServiceConnection @@ -356,11 +405,24 @@ fun cassandraContainer(): CassandraContainer<*> { } } + """); + assertThat(projectStructure).textFile("src/test/kotlin/com/example/demo/DemoApplicationTests.kt").isEqualTo(""" + package com.example.demo + + import org.junit.jupiter.api.Test + import org.springframework.boot.test.context.SpringBootTest + import org.springframework.context.annotation.Import - fun main(args: Array) { - fromApplication().with(TestDemoApplication::class).run(*args) + @Import(TestcontainersConfiguration::class) + @SpringBootTest + class DemoApplicationTests { + + @Test + fun contextLoads() { } - """); + + } + """); } @Test From 4593fafdbf5eb23ab90e63ffbe6d80e21185b93b Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 7 Jun 2024 09:05:36 +0200 Subject: [PATCH 026/109] Upgrade to Spring Cloud Azure 5.13.0 Closes gh-1502 --- start-site/src/main/resources/application.yml | 6 +++--- .../SpringAzureProjectGenerationConfigurationTests.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 61339f66df2..43ef8590da5 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -106,8 +106,8 @@ initializr: artifactId: spring-cloud-azure-dependencies versionProperty: spring-cloud-azure.version mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 5.12.0 + - compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 5.13.0 spring-cloud-gcp: groupId: com.google.cloud artifactId: spring-cloud-gcp-dependencies @@ -1308,7 +1308,7 @@ initializr: href: https://docs.vmware.com/en/Spring-Cloud-Services-for-VMware-Tanzu/index.html - name: Microsoft Azure bom: spring-cloud-azure - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Azure Support id: azure-support diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springazure/SpringAzureProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springazure/SpringAzureProjectGenerationConfigurationTests.java index 17edd1cbe2d..4590531a982 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springazure/SpringAzureProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springazure/SpringAzureProjectGenerationConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,7 +37,7 @@ */ class SpringAzureProjectGenerationConfigurationTests extends AbstractExtensionTests { - private static final String SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @ParameterizedTest @MethodSource("azureDependencies") From a3b407229dc3ef6f7653d7531aad4d538437c360 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 7 Jun 2024 09:13:38 +0200 Subject: [PATCH 027/109] Upgrade to Spring Boot 3.3.0 Closes gh-1475 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0cfce4cc27d..04aeb6b6fcf 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.6 + 3.3.0 io.spring.start start-parent @@ -82,7 +82,7 @@ com.azure.spring spring-cloud-azure-dependencies - 5.8.0 + 5.13.0 pom import From e74e9a2f581e21b75c1386542c4c7d00a0c8f9a9 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 11 Jun 2024 08:22:20 +0200 Subject: [PATCH 028/109] Use initializr 0.22.0-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 04aeb6b6fcf..f46361b7a7e 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ 0.0.1-SNAPSHOT false - 0.21.0-SNAPSHOT + 0.22.0-SNAPSHOT 0.0.41 From 0802a8b304328bd53b5a61f2c396c16262c38756 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 11 Jun 2024 08:42:11 +0200 Subject: [PATCH 029/109] Upgrade to Spring Javaformat 0.0.42 Closes gh-1503 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f46361b7a7e..5cdacfcdc84 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 0.0.1-SNAPSHOT false 0.22.0-SNAPSHOT - 0.0.41 + 0.0.42 From ce48933f03153197e8fc3ff9a98225d98ec09a48 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 11 Jun 2024 08:43:29 +0200 Subject: [PATCH 030/109] Upgrade checkstyle dependencies Closes gh-1504 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 5cdacfcdc84..393d60a43b6 100644 --- a/pom.xml +++ b/pom.xml @@ -116,7 +116,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.3.1 + 3.4.0 checkstyle-validation @@ -135,7 +135,7 @@ com.puppycrawl.tools checkstyle - 10.12.7 + 10.17.0 io.spring.javaformat From e44ae080a3696cde9f679b2968d3d848b80ddb70 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 11 Jun 2024 08:48:28 +0200 Subject: [PATCH 031/109] Update yarn dependencies --- start-client/yarn.lock | 1715 ++++++++++++++++++++-------------------- 1 file changed, 860 insertions(+), 855 deletions(-) diff --git a/start-client/yarn.lock b/start-client/yarn.lock index da1fe441363..8df5e413b78 100644 --- a/start-client/yarn.lock +++ b/start-client/yarn.lock @@ -20,12 +20,12 @@ leven "^3.1.0" "@babel/cli@^7.13.16": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.24.5.tgz#9eba21699f289c32e63a28aedf82f888dc134b30" - integrity sha512-2qg1mYtJRsOOWF6IUwLP5jI42P8Cc0hQ5TmnjLrik/4DKouO8dFJN80HEz81VmVeUs97yuuf3vQ/9j7Elrcjlg== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.24.7.tgz#eb2868c1fa384b17ea88d60107577d3e6fd05c4e" + integrity sha512-8dfPprJgV4O14WTx+AQyEA+opgUKPrsIXX/MdL50J1n06EQJ6m1T+CdsJe0qEC0B/Xl85i+Un5KVAxd/PACX9A== dependencies: "@jridgewell/trace-mapping" "^0.3.25" - commander "^4.0.1" + commander "^6.2.0" convert-source-map "^2.0.0" fs-readdir-recursive "^1.1.0" glob "^7.2.0" @@ -35,34 +35,34 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.24.2" + "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" + integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.2.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" + integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helpers" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -70,70 +70,71 @@ semver "^6.3.1" "@babel/eslint-parser@^7.18.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" - integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.7.tgz#27ebab1a1ec21f48ae191a8aaac5b82baf80d9c7" + integrity sha512-SO5E3bVxDuxyNxM5agFv480YA2HO6ohZbGxbazZdIk3KQOPOGVNw6q78I9/lbviIf95eq6tPozeYnJLbjnC8IA== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== +"@babel/generator@^7.24.7", "@babel/generator@^7.7.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" + integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== dependencies: - "@babel/types" "^7.24.5" + "@babel/types" "^7.24.7" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/types" "^7.22.15" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" + integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" + "@babel/compat-data" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" - integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.24.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz#2eaed36b3a1c11c53bdf80d53838b293c52f5b3b" + integrity sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz#be4f435a80dc2b053c76eeb4b7d16dd22cfc89da" + integrity sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.7" regexpu-core "^5.3.1" semver "^6.3.1" @@ -148,181 +149,187 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== +"@babel/helper-environment-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.7" -"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" - integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== +"@babel/helper-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" + integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-hoist-variables@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" + integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== + dependencies: + "@babel/types" "^7.24.7" -"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-wrap-function@^7.22.20": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" - integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== - dependencies: - "@babel/helper-function-name" "^7.23.0" - "@babel/template" "^7.24.0" - "@babel/types" "^7.24.5" - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" +"@babel/helper-member-expression-to-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz#67613d068615a70e4ed5101099affc7a41c5225f" + integrity sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" + integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" + integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== + +"@babel/helper-remap-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz#b3f0f203628522713849d49403f1a414468be4c7" + integrity sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" + +"@babel/helper-replace-supers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz#f933b7eed81a1c0265740edc91491ce51250f765" + integrity sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg== + dependencies: + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.7" + "@babel/helper-optimise-call-expression" "^7.24.7" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-split-export-declaration@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" + integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" + integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" + integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== + +"@babel/helper-wrap-function@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz#52d893af7e42edca7c6d2c6764549826336aae1f" + integrity sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw== + dependencies: + "@babel/helper-function-name" "^7.24.7" + "@babel/template" "^7.24.7" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helpers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" + integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== + dependencies: + "@babel/template" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.0.0-beta.54", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5", "@babel/parser@^7.7.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== +"@babel/parser@^7.0.0-beta.54", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.7", "@babel/parser@^7.7.0": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" + integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" - integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz#fd059fd27b184ea2b4c7e646868a9a381bbc3055" + integrity sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz#468096ca44bbcbe8fcc570574e12eb1950e18107" + integrity sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz#71b21bb0286d5810e63a1538aa901c58e87375ec" + integrity sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-proposal-class-properties@^7.13.0": version "7.18.6" @@ -333,29 +340,29 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.13.15": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz#7e2dcfeda4a42596b57c4c9de1f5176bbfc532e3" + integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-decorators" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-decorators" "^7.24.7" "@babel/plugin-proposal-do-expressions@^7.12.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.24.1.tgz#580e97ffb93d537933df3b8d2e6bef67d0beaa0e" - integrity sha512-tVYbJAE3Duz/T0lV5P27aAgpg2vTfUuV0dXN4NNbnoRk7G989IcgjYIA+1pMHUMMLij7Gun42CC15UN5jWm4LA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.24.7.tgz#09ab8037ef28d71578b1734dc8a88fd00887c98a" + integrity sha512-M9pJwhoROof4rc4WzDdMoftv8JrtYfBVurvReacQ8lit+qUd0d71+1zUltb6/zCI7HBW4+KZbtBGmcudXw0GDQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-do-expressions" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-do-expressions" "^7.24.7" "@babel/plugin-proposal-export-default-from@^7.12.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.1.tgz#d242019488277c9a5a8035e5b70de54402644b89" - integrity sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz#0b539c46b8ac804f694e338f803c8354c0f788b6" + integrity sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-default-from" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-export-default-from" "^7.24.7" "@babel/plugin-proposal-export-namespace-from@^7.12.13": version "7.18.9" @@ -366,21 +373,21 @@ "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-function-bind@^7.12.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.24.1.tgz#e3e265ec2f1324dbe29b249c35fab58b5c15a684" - integrity sha512-GDz3lXY623E+SMhloR0HDKYfFjLnqYEHjxIHo3SvpJTV3SV89974Y3mADXSYnO1N+UP7bioAFKqpOmsD9aOnuw== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-bind/-/plugin-proposal-function-bind-7.24.7.tgz#8b4fcef3fd90bd5671a940693683c76ab0984df8" + integrity sha512-cq2mwxcvNAWWL+IiqiSiVhCeqTQs532Ktl3N2FMuW0bQVF/N0W6QNyywO+KkM3Yr/jwYmjeSS+yKQQUh79VOxQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-function-bind" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-function-bind" "^7.24.7" "@babel/plugin-proposal-function-sent@^7.12.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.24.1.tgz#228c85798b62fc1c1a84c8ab512d46c41885f4bd" - integrity sha512-GxHpB7jATDZWYEuYkR5jv5aiHbwkmbvk3fJP5G2Dvl7va+kewfbYxpnU1BadIHd3kXlLPQj4CKbLKoWxX4nTtA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.24.7.tgz#522a49543a278e1f28eba36e753201f72ae18a11" + integrity sha512-42Pq9d8fV5CrjygcVAA7aAEFpkAJluWWvlO7bvOMDEutxIS44COcFU61V92VBzUZvOkjIoQrPJNUtmY/d9XMgA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-wrap-function" "^7.22.20" - "@babel/plugin-syntax-function-sent" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-wrap-function" "^7.24.7" + "@babel/plugin-syntax-function-sent" "^7.24.7" "@babel/plugin-proposal-json-strings@^7.13.8": version "7.18.6" @@ -424,12 +431,12 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-pipeline-operator@^7.12.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.24.1.tgz#a8ea2b281b68cdb676270298f32d46da61c22a6b" - integrity sha512-JFqo+VsSosYxzo1PPfrbeoIi0IcAJnjGpDXeVABNl5bH6/Zvn84Kd8utGEA1eT3gLsynyt1+TfQ/opGXtb0Y/A== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-pipeline-operator/-/plugin-proposal-pipeline-operator-7.24.7.tgz#a96009e358eb357f88301ab74e4788812a5957fa" + integrity sha512-cJOSXlieT6/Yul8yEkbBRzhyf/J4jeeqUREw8HCf8nxT4DTP5FCdC0EXf+b8+vBt34IMYYvTDiC8uC91KSSLpA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-pipeline-operator" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-pipeline-operator" "^7.24.7" "@babel/plugin-proposal-private-methods@^7.13.0": version "7.18.6" @@ -445,12 +452,12 @@ integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== "@babel/plugin-proposal-throw-expressions@^7.12.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.24.1.tgz#7f08e07de51463fd302860e7928cccdcb4fa1d48" - integrity sha512-wiae/VkKNX1WuM+wXIeAZY1cvbVKJJIf92eA23s2ufpp4w+vOlp+/4T3yfxN6nzN+hIwT15AsdwujAelIqNW+w== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.24.7.tgz#8a386bcb77965d82f5b926508b27919d9ac9450f" + integrity sha512-Rh4WoHyWKgsxvdkEMqDEZtKuGnZw+JwicMCvcZaIjYaQ3fK+a8JZYLhgcac9dKcL47Xqf+SG3MopTx+8BACdrQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-throw-expressions" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-throw-expressions" "^7.24.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -480,19 +487,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== +"@babel/plugin-syntax-decorators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz#e4f8a0a8778ccec669611cd5aed1ed8e6e3a6fcf" + integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-do-expressions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.24.1.tgz#8e423c79355797e2dbdac26e03c248be27391795" - integrity sha512-l5ZJA2DB2s/pM3SQzwf1ykWOiBaqN6Eb07EoZ/mH8dUR5RnaWlmPLoav6y4OT8A9Pkl615osBMZOedFbErdOOA== +"@babel/plugin-syntax-do-expressions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.24.7.tgz#c8aa7471fa25286fede4c12a464a49d286de8362" + integrity sha512-lQee+garSbTjCvXdzfjXeSzPd03pyBXALfB2C4bW7SwORrZAs5CDt67toH8MRPuvQFYvWpkXYe07AhHDY3tWfQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -501,12 +508,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.1.tgz#a92852e694910ae4295e6e51e87b83507ed5e6e8" - integrity sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA== +"@babel/plugin-syntax-export-default-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz#85dae9098933573aae137fb52141dd3ca52ae7ac" + integrity sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" @@ -515,33 +522,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-function-bind@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.24.1.tgz#5a3ba1b9ab91286822373fb1dc34b468d8510ea2" - integrity sha512-7K+uzNJ5ZuL6g4Ud/UhbIxghwN2FAj8NBrzEO+eM0g9YddjOv+BD81ar/N7Es5sH+G8z9tnTYcfCu6EaPrkSDw== +"@babel/plugin-syntax-function-bind@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.24.7.tgz#60103187663fb121976d972b23bfb097d9d0234a" + integrity sha512-dqm7VhgJ2sXCEc0WDJV+q8OI1Qzwn4OFbqsHTVtYoc4L7jJYtF6pEQYcbmlMMWBZjw0tJYuXeyiTQVboWIwAKg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-function-sent@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.24.1.tgz#cd3fd5fa9fce0f53d6dcb78999dd7201561c2304" - integrity sha512-aVwkxqagsGCI8vtuyMI+LnZ2SWtGP4+v9T/T88j2MwKRsGYzc9FAaEzsNMu1Htu6SsHPcfwQ7uZ7pYPGrVmG+g== +"@babel/plugin-syntax-function-sent@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.24.7.tgz#4d5e647ca67bee243f58a9a596352dc2920434a6" + integrity sha512-me5EHEx4GXxAE8mnlZaWA+ARIyMSPOXcw6WlqWGIfTg36oeWm4FxR/Djs1DGPbmSIwJqMboiN7gK8eCyzyNK2A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -557,12 +564,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -606,12 +613,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-pipeline-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.24.1.tgz#149bacade7594288dd9ad373bcbfe2927ea750cc" - integrity sha512-UU7uLj95zh6oMQiREvkTmXAvWy9pJI9p76SFkNsXTesDwQ67YM1UU1Bkx576djA6ZDcPSbzM/MqTJNcYeQ0G2g== +"@babel/plugin-syntax-pipeline-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-pipeline-operator/-/plugin-syntax-pipeline-operator-7.24.7.tgz#1558f683508708d0528eaab7e4bf13b6ae793b1f" + integrity sha512-PnW47ro0vPh4Raqabn3FM7opwdKbNQoFJKSNfCj7lmqcQlVMYFcJ6b+rhMyfB/g1SlWRwnodffVzLcee1FDHYQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" @@ -620,12 +627,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-throw-expressions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.24.1.tgz#f8b18a0126cb2991e4f093c6fdab662ef46d7eee" - integrity sha512-o4dN/9/hUAC6RuX1QZDlauBG2nmSmUMk0K7/IOIFxjM8V16FS1JTHHiBWqGkkIjK4myeHucJbBHurqjtWFAdsw== +"@babel/plugin-syntax-throw-expressions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.24.7.tgz#30887b54c478120831bc95881e73ec1984584930" + integrity sha512-b1bdlAmUTy9VQ/g2cnBuJFwd7jeARNW2F65c9Gcn8qyNYGuVy/cYyqpiSL6SVmUAJTDbIYL2FzlZ8nH1qUCBXA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" @@ -635,11 +642,11 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -649,459 +656,459 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-async-generator-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz#7330a5c50e05181ca52351b8fd01642000c96cfd" + integrity sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" - integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== +"@babel/plugin-transform-block-scoping@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz#42063e4deb850c7bd7c55e626bf4e7ab48e6ce02" + integrity sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" - integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.24.5" +"@babel/plugin-transform-classes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz#4ae6ef43a12492134138c1e45913f7c46c41b4bf" + integrity sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" -"@babel/plugin-transform-destructuring@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" - integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== +"@babel/plugin-transform-destructuring@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz#a097f25292defb6e6cc16d6333a4cfc1e3c72d9e" + integrity sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz#6d8601fbffe665c894440ab4470bc721dd9131d6" + integrity sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c" + integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== +"@babel/plugin-transform-modules-commonjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz#9fd5f7fdadee9085886b183f1ad13d1ab260f4ab" + integrity sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-systemjs@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz#f8012316c5098f6e8dee6ecd58e2bc6f003d0ce7" + integrity sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" - integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" - integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== +"@babel/plugin-transform-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" + integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" - integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" - integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== +"@babel/plugin-transform-react-display-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" + integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-react-jsx-development@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" + integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz#17cd06b75a9f0e2bd076503400e7c4b99beedac4" + integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== +"@babel/plugin-transform-react-pure-annotations@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" + integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-runtime@^7.18.5": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" + integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.1" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typeof-symbol@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" - integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== +"@babel/plugin-transform-typeof-symbol@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz#f074be466580d47d6e6b27473a840c9f9ca08fb0" + integrity sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.13.15": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" - integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.7.tgz#ff067b4e30ba4a72f225f12f123173e77b987f37" + integrity sha512-1YZNsc+y6cTvWlDHidMBsQZrZfEFjRIo/BZCT906PMdzOyXtSLTgqGdrpcuTDCXyd11Am5uQULtDIcCfnTc8fQ== + dependencies: + "@babel/compat-data" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.7" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1113,54 +1120,54 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.5" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.5" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.5" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.5" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.5" - "@babel/plugin-transform-parameters" "^7.24.5" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.5" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.5" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.24.7" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.24.7" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.24.7" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.7" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.24.7" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.24.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-modules-systemjs" "^7.24.7" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.7" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.4" @@ -1178,16 +1185,16 @@ esutils "^2.0.2" "@babel/preset-react@^7.13.13": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" + integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx-development" "^7.24.7" + "@babel/plugin-transform-react-pure-annotations" "^7.24.7" "@babel/regjsgen@^0.8.0": version "0.8.0" @@ -1195,44 +1202,44 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.11.2", "@babel/runtime@^7.13.17", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.0.0-beta.54", "@babel/traverse@^7.24.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" +"@babel/template@^7.24.7", "@babel/template@^7.3.3": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" + integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/traverse@^7.0.0-beta.54", "@babel/traverse@^7.24.7", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" + integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.24.7" + "@babel/helper-environment-visitor" "^7.24.7" + "@babel/helper-function-name" "^7.24.7" + "@babel/helper-hoist-variables" "^7.24.7" + "@babel/helper-split-export-declaration" "^7.24.7" + "@babel/parser" "^7.24.7" + "@babel/types" "^7.24.7" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.0.0-beta.54", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.0.0-beta.54", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" + integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" + "@babel/helper-string-parser" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1253,9 +1260,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + version "4.10.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" + integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -2038,9 +2045,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: "@babel/types" "^7.20.7" @@ -2108,9 +2115,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" - integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== + version "4.19.3" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz#e469a13e4186c9e1c0418fb17be8bc8ff1b19a7a" + integrity sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2230,9 +2237,9 @@ "@types/node" "*" "@types/node@*": - version "20.12.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.10.tgz#8f0c3f12b0f075eee1fe20c1afb417e9765bef76" - integrity sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw== + version "20.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== dependencies: undici-types "~5.26.4" @@ -2646,9 +2653,9 @@ ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" - integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== + version "8.16.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== dependencies: fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" @@ -2792,7 +2799,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.6, array-includes@^3.1.7: +array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -2826,7 +2833,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.findlast@^1.2.4: +array.prototype.findlast@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== @@ -2881,14 +2888,14 @@ array.prototype.toreversed@^1.1.2: es-shim-unscopables "^1.0.0" array.prototype.tosorted@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== dependencies: - call-bind "^1.0.5" + call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" + es-abstract "^1.23.3" + es-errors "^1.3.0" es-shim-unscopables "^1.0.2" arraybuffer.prototype.slice@^1.0.3: @@ -2975,9 +2982,9 @@ aws-sign2@~0.7.0: integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + version "1.13.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.0.tgz#d9b802e9bb9c248d7be5f7f5ef178dc3684e9dcc" + integrity sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g== axe-core@=4.7.0: version "4.7.0" @@ -3230,22 +3237,22 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + version "4.23.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" + integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" + caniuse-lite "^1.0.30001629" + electron-to-chromium "^1.4.796" node-releases "^2.0.14" - update-browserslist-db "^1.0.13" + update-browserslist-db "^1.0.16" bser@2.1.1: version "2.1.1" @@ -3393,10 +3400,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001587: - version "1.0.30001616" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz#4342712750d35f71ebba9fcac65e2cf8870013c3" - integrity sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw== +caniuse-lite@^1.0.30001629: + version "1.0.30001632" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz#964207b7cba5851701afb4c8afaf1448db3884b6" + integrity sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg== caseless@~0.12.0: version "0.12.0" @@ -3456,9 +3463,9 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== ci-info@^2.0.0: version "2.0.0" @@ -3615,10 +3622,10 @@ commander@^2.19.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== commander@^7.0.0, commander@^7.2.0: version "7.2.0" @@ -3742,9 +3749,9 @@ copy-webpack-plugin@^11.0.0: serialize-javascript "^6.0.0" core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" - integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== dependencies: browserslist "^4.23.0" @@ -3897,9 +3904,9 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: ms "2.0.0" debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" @@ -4180,10 +4187,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.668: - version "1.4.757" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz#45f7c9341b538f8c4b9ca8af9692e0ed1a776a44" - integrity sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw== +electron-to-chromium@^1.4.796: + version "1.4.798" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.798.tgz#6a3fcab2edc1e66e3883466f6b4b8944323c0164" + integrity sha512-by9J2CiM9KPGj9qfp5U4FcPSbXJG7FNzqnYaY4WLzX+v2PHieVGmnsA4dxfpGE3QEC7JofpPZmn7Vn1B9NR2+Q== emittery@^0.10.2: version "0.10.2" @@ -4230,9 +4237,9 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" - integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4323,12 +4330,12 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" -es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: +es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== @@ -4349,9 +4356,9 @@ es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" - integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== + version "1.5.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" + integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== es-object-atoms@^1.0.0: version "1.0.0" @@ -4515,28 +4522,28 @@ eslint-plugin-react-hooks@^4.6.0: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.23.2: - version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" - integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== + version "7.34.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66" + integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw== dependencies: - array-includes "^3.1.7" - array.prototype.findlast "^1.2.4" + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.toreversed "^1.1.2" array.prototype.tosorted "^1.1.3" doctrine "^2.1.0" - es-iterator-helpers "^1.0.17" + es-iterator-helpers "^1.0.19" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - object.hasown "^1.1.3" - object.values "^1.1.7" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.hasown "^1.1.4" + object.values "^1.2.0" prop-types "^15.8.1" resolve "^2.0.0-next.5" semver "^6.3.1" - string.prototype.matchall "^4.0.10" + string.prototype.matchall "^4.0.11" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" @@ -5033,10 +5040,10 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -5852,9 +5859,9 @@ immediate@~3.0.5: integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immutable@^4.0.0, immutable@^4.0.0-rc.12: - version "4.3.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + version "4.3.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" + integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== import-fresh@^2.0.0: version "2.0.0" @@ -7131,9 +7138,9 @@ kleur@^4.0.3: integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== language-tags@^1.0.9: version "1.0.9" @@ -7708,11 +7715,11 @@ micromatch@^3.1.10: to-regex "^3.0.2" micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": @@ -8154,7 +8161,7 @@ object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5, object.entries@^1.1.7: +object.entries@^1.1.5, object.entries@^1.1.7, object.entries@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -8163,7 +8170,7 @@ object.entries@^1.1.5, object.entries@^1.1.7: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.7: +object.fromentries@^2.0.7, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -8182,7 +8189,7 @@ object.groupby@^1.0.1: define-properties "^1.2.1" es-abstract "^1.23.2" -object.hasown@^1.1.3: +object.hasown@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== @@ -8198,7 +8205,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.6, object.values@^1.1.7: +object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -8531,10 +8538,10 @@ phin@^2.9.1: resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" @@ -8614,9 +8621,9 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" + integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -9397,18 +9404,18 @@ sass-loader@^13.0.0: neo-async "^2.6.2" sass@^1.52.3: - version "1.77.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.0.tgz#e736c69aff9fae4a4e6dae60a979eee9c942f321" - integrity sha512-eGj4HNfXqBWtSnvItNkn7B6icqH14i3CiCGbzMKs3BAPTq62pp9NBYsBgyN4cA+qssqo9r26lW4JSvlaUUWbgw== + version "1.77.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.4.tgz#92059c7bfc56b827c56eb116778d157ec017a5cd" + integrity sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" sax@>=0.6.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== scheduler@^0.23.2: version "0.23.2" @@ -9477,11 +9484,9 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== send@0.18.0: version "0.18.0" @@ -9837,9 +9842,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.17" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c" - integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg== + version "3.0.18" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== spdy-transport@^3.0.0: version "3.0.0" @@ -9988,7 +9993,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: +string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.6: version "4.0.11" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== @@ -10243,9 +10248,9 @@ terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: - version "5.31.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" - integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== + version "5.31.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.1.tgz#735de3c987dd671e95190e6b98cfe2f07f3cf0d4" + integrity sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -10416,9 +10421,9 @@ tslib@^1.8.1, tslib@^1.9.0: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.3: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tsutils@^3.21.0: version "3.21.0" @@ -10693,13 +10698,13 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.13: - version "1.0.15" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" - integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== +update-browserslist-db@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== dependencies: escalade "^3.1.2" - picocolors "^1.0.0" + picocolors "^1.0.1" uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" From 2d90fb3b9ba18ec698074ce5bc0036bfe688fd38 Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Tue, 11 Jun 2024 19:40:20 +0300 Subject: [PATCH 032/109] Upgrade to Vaadin 24.4.1 See gh-1506 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 43ef8590da5..31a9d1f4837 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -155,7 +155,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.3.13 + version: 24.4.1 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From 650cd43cefc7c11d947d165fc21bfdcb5ad9e8ac Mon Sep 17 00:00:00 2001 From: Zhe Sun Date: Tue, 11 Jun 2024 19:55:25 +0300 Subject: [PATCH 033/109] Remove hilla entry See gh-1507 --- .../hilla/HillaGradleBuildCustomizer.java | 48 ------------ .../hilla/HillaMavenBuildCustomizer.java | 47 ----------- .../HillaProjectGenerationConfiguration.java | 57 -------------- .../dependency/hilla/package-info.java | 20 ----- start-site/src/main/resources/application.yml | 22 ------ ...laProjectGenerationConfigurationTests.java | 78 ------------------- .../dependency/hilla/hilla-maven-profile.xml | 26 ------- 7 files changed, 298 deletions(-) delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaGradleBuildCustomizer.java delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaMavenBuildCustomizer.java delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfiguration.java delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/package-info.java delete mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfigurationTests.java delete mode 100644 start-site/src/test/resources/dependency/hilla/hilla-maven-profile.xml diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaGradleBuildCustomizer.java deleted file mode 100644 index 7280f736519..00000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaGradleBuildCustomizer.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.hilla; - -import io.spring.initializr.generator.buildsystem.gradle.GradleBuild; -import io.spring.initializr.generator.spring.build.BuildCustomizer; -import io.spring.initializr.generator.version.Version; -import io.spring.initializr.metadata.InitializrMetadata; - -/** - * A {@link BuildCustomizer} that registers Hilla's Gradle plugin. - * - * @author Luciano Vernaschi - * @author Stephane Nicoll - */ -class HillaGradleBuildCustomizer implements BuildCustomizer { - - private final String hillaVersion; - - HillaGradleBuildCustomizer(InitializrMetadata metadata, Version platformVersion) { - this.hillaVersion = metadata.getConfiguration() - .getEnv() - .getBoms() - .get("hilla") - .resolve(platformVersion) - .getVersion(); - } - - @Override - public void customize(GradleBuild build) { - build.plugins().add("dev.hilla", (plugin) -> plugin.setVersion(this.hillaVersion)); - } - -} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaMavenBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaMavenBuildCustomizer.java deleted file mode 100644 index f9ff726fe89..00000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaMavenBuildCustomizer.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.hilla; - -import io.spring.initializr.generator.buildsystem.maven.MavenBuild; -import io.spring.initializr.generator.spring.build.BuildCustomizer; - -/** - * A {@link BuildCustomizer} that adds a production profile to enable Hilla's production - * mode. - * - * @author Luciano Vernaschi - * @author Stephane Nicoll - */ -class HillaMavenBuildCustomizer implements BuildCustomizer { - - @Override - public void customize(MavenBuild build) { - build.plugins() - .add("dev.hilla", "hilla-maven-plugin", (plugin) -> plugin.version("${hilla.version}") - .execution("frontend", (execution) -> execution.goal("prepare-frontend"))); - build.profiles() - .id("production") - .plugins() - .add("dev.hilla", "hilla-maven-plugin", - (plugin) -> plugin.version("${hilla.version}") - .execution("frontend", - (execution) -> execution.goal("build-frontend") - .phase("compile") - .configuration((configuration) -> configuration.add("productionMode", "true")))); - } - -} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfiguration.java deleted file mode 100644 index f910ff521f5..00000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfiguration.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.hilla; - -import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem; -import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem; -import io.spring.initializr.generator.condition.ConditionalOnBuildSystem; -import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; -import io.spring.initializr.generator.project.ProjectDescription; -import io.spring.initializr.generator.project.ProjectGenerationConfiguration; -import io.spring.initializr.generator.spring.scm.git.GitIgnoreCustomizer; -import io.spring.initializr.metadata.InitializrMetadata; - -import org.springframework.context.annotation.Bean; - -/** - * Configuration for generation of projects that depend on Hilla. - * - * @author Luciano Vernaschi - * @author Stephane Nicoll - */ -@ProjectGenerationConfiguration -@ConditionalOnRequestedDependency("hilla") -class HillaProjectGenerationConfiguration { - - @Bean - @ConditionalOnBuildSystem(MavenBuildSystem.ID) - HillaMavenBuildCustomizer hillaMavenBuildCustomizer() { - return new HillaMavenBuildCustomizer(); - } - - @Bean - @ConditionalOnBuildSystem(GradleBuildSystem.ID) - HillaGradleBuildCustomizer hillaGradleBuildCustomizer(InitializrMetadata metadata, ProjectDescription description) { - return new HillaGradleBuildCustomizer(metadata, description.getPlatformVersion()); - } - - @Bean - GitIgnoreCustomizer hillaGitIgnoreCustomizer() { - return (gitignore) -> gitignore.getGeneral().add("node_modules/", "frontend/generated/"); - } - -} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/package-info.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/package-info.java deleted file mode 100644 index 342c0856b6f..00000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/hilla/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2012-2022 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Extensions for generation of projects that depend on Hilla. - */ -package io.spring.start.site.extension.dependency.hilla; diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 31a9d1f4837..4eac3407812 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -57,13 +57,6 @@ initializr: version: 8.7.1 - compatibilityRange: "[3.3.0,3.4.0-M1)" version: 9.0.0 - hilla: - groupId: dev.hilla - artifactId: hilla-bom - versionProperty: hilla.version - mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 2.5.5 sentry: groupId: io.sentry artifactId: sentry-bom @@ -341,21 +334,6 @@ initializr: description: Creating CRUD UI with Vaadin - rel: reference href: https://vaadin.com/docs - - name: Hilla - id: hilla - bom: hilla - compatibilityRange: "[3.2.0,3.3.0-M1)" - facets: - - web - groupId: dev.hilla - artifactId: hilla-react-spring-boot-starter - description: An open source framework that integrates a Spring Boot Java backend with a reactive TypeScript frontend. - links: - - rel: guide - href: https://hilla.dev/docs/react/start/quick/#coming-from-spring-initializr - description: Next Steps with Hilla - - rel: reference - href: https://hilla.dev/ - name: Netflix DGS id: netflix-dgs groupId: com.netflix.graphql.dgs diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfigurationTests.java deleted file mode 100644 index e28c24445b1..00000000000 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/hilla/HillaProjectGenerationConfigurationTests.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.hilla; - -import io.spring.initializr.web.project.ProjectRequest; -import io.spring.start.site.extension.AbstractExtensionTests; -import org.junit.jupiter.api.Test; - -import org.springframework.core.io.ClassPathResource; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Tests for {@link HillaProjectGenerationConfiguration}. - * - * @author Stephane Nicoll - */ -class HillaProjectGenerationConfigurationTests extends AbstractExtensionTests { - - private static final String SPRING_BOOT_VERSION = "3.2.0"; - - @Test - void mavenBuildWithHillaAddProductionProfile() { - ProjectRequest request = createProjectRequest("hilla", "data-jpa"); - request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(mavenPom(request)).hasProfile("production") - .contains(new ClassPathResource("dependency/hilla/hilla-maven-profile.xml")); - } - - @Test - void mavenBuildWithoutHillaDoesNotAddProductionProfile() { - ProjectRequest request = createProjectRequest("data-jpa"); - request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(mavenPom(request)).doesNotContain("hilla"); - } - - @Test - void gradleBuildWithHillaConfigurePlugin() { - ProjectRequest request = createProjectRequest("hilla", "data-jpa"); - request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(gradleBuild(request)).hasPlugin("dev.hilla"); - } - - @Test - void gradleBuildWithHillaConfigureTask() { - ProjectRequest request = createProjectRequest("data-jpa"); - request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(gradleBuild(request)).doesNotContain("hilla"); - } - - @Test - void projectWithHillaCustomizesGitIgnore() { - ProjectRequest request = createProjectRequest("hilla", "data-jpa"); - request.setBootVersion(SPRING_BOOT_VERSION); - assertThat(generateProject(request)).textFile(".gitignore").contains("node_modules/", "frontend/generated/"); - } - - @Test - void projectWithoutHillaDoesNotCustomizeGitIgnore() { - assertThat(generateProject(createProjectRequest("data-jpa"))).textFile(".gitignore") - .doesNotContain("frontend/generated/"); - } - -} diff --git a/start-site/src/test/resources/dependency/hilla/hilla-maven-profile.xml b/start-site/src/test/resources/dependency/hilla/hilla-maven-profile.xml deleted file mode 100644 index 6cc09429e49..00000000000 --- a/start-site/src/test/resources/dependency/hilla/hilla-maven-profile.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - production - - - - dev.hilla - hilla-maven-plugin - ${hilla.version} - - - frontend - compile - - build-frontend - - - true - - - - - - - - \ No newline at end of file From 5acad93b3df0345e35bd86e018dfa4435dc5d016 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 12 Jun 2024 09:19:34 +0200 Subject: [PATCH 034/109] Polish "Remove hilla entry" See gh-1507 --- start-site/src/main/resources/META-INF/spring.factories | 1 - 1 file changed, 1 deletion(-) diff --git a/start-site/src/main/resources/META-INF/spring.factories b/start-site/src/main/resources/META-INF/spring.factories index 7a2980f95d5..28826f662c5 100644 --- a/start-site/src/main/resources/META-INF/spring.factories +++ b/start-site/src/main/resources/META-INF/spring.factories @@ -13,7 +13,6 @@ io.spring.start.site.extension.dependency.elasticsearch.ElasticsearchProjectGene io.spring.start.site.extension.dependency.flyway.FlywayProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.graalvm.GraalVmProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.graphql.SpringGraphQlProjectGenerationConfiguration,\ -io.spring.start.site.extension.dependency.hilla.HillaProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.mariadb.MariaDbProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.mongodb.MongoDbProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.mysql.MysqlProjectGenerationConfiguration,\ From 35ea5ffd615ba8fbd209ede163e252d87e2e3a2c Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 12 Jun 2024 09:38:40 +0200 Subject: [PATCH 035/109] Upgrade to Spring Boot Admin 3.3.2 Closes gh-1508 --- start-site/src/main/resources/application.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 4eac3407812..70b9f4ee88f 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -48,6 +48,8 @@ initializr: mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 3.2.3 + - compatibilityRange: "[3.3.0,3.4.0-M1)" + version: 3.3.2 netflix-dgs: groupId: com.netflix.graphql.dgs artifactId: graphql-dgs-platform-dependencies @@ -891,7 +893,7 @@ initializr: groupId: de.codecentric artifactId: spring-boot-admin-starter-client description: Required for your application to register with a Codecentric's Spring Boot Admin Server instance. - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" bom: codecentric-spring-boot-admin links: - rel: reference @@ -901,7 +903,7 @@ initializr: groupId: de.codecentric artifactId: spring-boot-admin-starter-server description: A community project to manage and monitor your Spring Boot applications. Provides a UI on top of the Spring Boot Actuator endpoints. - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" bom: codecentric-spring-boot-admin links: - rel: reference From 713052e86b335f4080c0b00067884b20ba1ecc63 Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Wed, 12 Jun 2024 10:55:06 +0300 Subject: [PATCH 036/109] Update description for Vaadin entry Since Vaadin 24.4, we provide original vaadin and hilla in this unified platform. See gh-1509 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 4eac3407812..5d73f194c1b 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -325,7 +325,7 @@ initializr: - web groupId: com.vaadin artifactId: vaadin-spring-boot-starter - description: A web framework that allows you to write UI in pure Java without getting bogged down in JS, HTML, and CSS. + description: The full-stack web app platform for Spring. Build views in fully in Java with Flow, or in React using Hilla. bom: vaadin compatibilityRange: "[3.2.0,3.4.0-M1)" links: From 4dcb0a201846b779e9f247ff18d16ca2ee79fa43 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 12 Jun 2024 10:00:04 +0200 Subject: [PATCH 037/109] Polish "Update description for Vaadin entry" See gh-1509 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 5d73f194c1b..cff9ef51996 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -325,7 +325,7 @@ initializr: - web groupId: com.vaadin artifactId: vaadin-spring-boot-starter - description: The full-stack web app platform for Spring. Build views in fully in Java with Flow, or in React using Hilla. + description: The full-stack web app platform for Spring. Build views fully in Java with Flow, or in React using Hilla. bom: vaadin compatibilityRange: "[3.2.0,3.4.0-M1)" links: From 6cc4e762916e6524dcceb425bb76849618265a57 Mon Sep 17 00:00:00 2001 From: Sanajit Jana Date: Wed, 12 Jun 2024 14:45:18 +0530 Subject: [PATCH 038/109] Ensure that a pointer curser is shown for theme switcher The pointer is already set in the non-mobile version, this also sets the pointer on the mobile version. See gh-1512 --- start-client/src/styles/_main.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/start-client/src/styles/_main.scss b/start-client/src/styles/_main.scss index af24fb69933..85065d29d7d 100644 --- a/start-client/src/styles/_main.scss +++ b/start-client/src/styles/_main.scss @@ -196,6 +196,7 @@ body { border: 0; padding: 4px; outline: none; + cursor: pointer; } svg { display: block; From 69ae46dfec89cb834bd152543998e73264f033c4 Mon Sep 17 00:00:00 2001 From: Iwao AVE! Date: Wed, 12 Jun 2024 23:51:33 +0900 Subject: [PATCH 039/109] Update mybatis compatibility range See gh-1511 --- start-site/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index f0abdce0c3f..822d27332c7 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -492,12 +492,12 @@ initializr: description: R2DBC Homepage - name: MyBatis Framework id: mybatis - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.3.0)" description: Persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. groupId: org.mybatis.spring.boot artifactId: mybatis-spring-boot-starter mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" + - compatibilityRange: "[3.2.0,3.3.0)" version: 3.0.3 links: - rel: guide From 4ac5ae50647ef6563bcf8f55b3abb2877bc1b795 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 13 Jun 2024 12:52:56 +0200 Subject: [PATCH 040/109] Polish "Update mybatis compatibility range" See gh-1511 --- start-site/src/main/resources/application.yml | 4 ++-- .../dependency/mybatis/MyBatisTestBuildCustomizerTests.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 822d27332c7..a93b002991e 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -492,12 +492,12 @@ initializr: description: R2DBC Homepage - name: MyBatis Framework id: mybatis - compatibilityRange: "[3.2.0,3.3.0)" + compatibilityRange: "[3.2.0,3.4.0-M1)" description: Persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis couples objects with stored procedures or SQL statements using a XML descriptor or annotations. groupId: org.mybatis.spring.boot artifactId: mybatis-spring-boot-starter mappings: - - compatibilityRange: "[3.2.0,3.3.0)" + - compatibilityRange: "[3.2.0,3.4.0-M1)" version: 3.0.3 links: - rel: guide diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/mybatis/MyBatisTestBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/mybatis/MyBatisTestBuildCustomizerTests.java index 31e04066a56..c25c843f853 100755 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/mybatis/MyBatisTestBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/mybatis/MyBatisTestBuildCustomizerTests.java @@ -30,7 +30,7 @@ */ class MyBatisTestBuildCustomizerTests extends AbstractExtensionTests { - private static final String SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void mybatisIsAddedWithSecurity() { From b7a18ee3ed4ee25d38ea4a0c7551a525623930bc Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 18 Jun 2024 11:09:39 +0200 Subject: [PATCH 041/109] Upgrade to Spring Cloud Services 4.1.3 Closes gh-1515 --- start-site/src/main/resources/application.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index a93b002991e..3e221c50bcc 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -117,8 +117,8 @@ initializr: versionProperty: spring-cloud-services.version additionalBoms: [ spring-cloud ] mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 4.1.0 + - compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 4.1.3 spring-modulith: groupId: org.springframework.modulith artifactId: spring-modulith-bom @@ -1268,7 +1268,7 @@ initializr: href: https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#spring-cloud-stream-overview-introducing - name: VMware Tanzu Application Service bom: spring-cloud-services - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Config Client (TAS) id: scs-config-client From 02879ee44cff26a676c03638d2c0ec82d10aecd9 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 18 Jun 2024 08:29:53 +0200 Subject: [PATCH 042/109] Upgrade to Solace Spring Cloud 4.1.0 This also marks Solace PubSub+ 3.3.x ready. Closes gh-1513 --- start-site/src/main/resources/application.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 3e221c50bcc..c843de23c4c 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -71,15 +71,15 @@ initializr: artifactId: solace-spring-boot-bom versionProperty: solace-spring-boot.version mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" + - compatibilityRange: "[3.2.0,3.4.0-M1)" version: 2.0.0 solace-spring-cloud: groupId: com.solace.spring.cloud artifactId: solace-spring-cloud-bom versionProperty: solace-spring-cloud.version mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 4.0.0 + - compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 4.1.0 spring-ai: groupId: org.springframework.ai artifactId: spring-ai-bom @@ -806,7 +806,7 @@ initializr: - name: Solace PubSub+ bom: solace-spring-boot id: solace - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" description: Connect to a Solace PubSub+ Advanced Event Broker to publish, subscribe, request/reply and store/replay messages groupId: com.solace.spring.boot artifactId: solace-spring-boot-starter From ce3050eb290cddca4aa057deda37858ec528c6e4 Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:34:13 +0300 Subject: [PATCH 043/109] Upgrade to Vaadin 24.4.3 See gh-1516 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index c843de23c4c..1e87f601622 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -150,7 +150,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.1 + version: 24.4.3 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From 6d20d72001bfac2f4a3f603c875e030be6df7bdb Mon Sep 17 00:00:00 2001 From: Christopher Chianelli Date: Wed, 19 Jun 2024 12:50:40 -0400 Subject: [PATCH 044/109] Upgrade Timefold Solver to 1.11.0 See gh-1517 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 1e87f601622..e4084d7b500 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -143,7 +143,7 @@ initializr: versionProperty: timefold-solver.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 1.10.0 + version: 1.11.0 vaadin: groupId: com.vaadin artifactId: vaadin-bom From 4dacbdb62fc9e0693a996238989c505f012c0c87 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Thu, 20 Jun 2024 14:07:29 +0200 Subject: [PATCH 045/109] Upgrade to Spring Boot 3.3.1 Closes gh-1518 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 393d60a43b6..c9c86e78e29 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.0 + 3.3.1 io.spring.start start-parent From e4f8cde63de94e7f57d1cd54549e1d2fd11f6021 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 24 Jun 2024 08:37:31 +0200 Subject: [PATCH 046/109] Upgrade node dependencies --- start-client/yarn.lock | 276 ++++++++++++++++++++++++++--------------- 1 file changed, 174 insertions(+), 102 deletions(-) diff --git a/start-client/yarn.lock b/start-client/yarn.lock index 8df5e413b78..1cf2a984cba 100644 --- a/start-client/yarn.lock +++ b/start-client/yarn.lock @@ -1201,7 +1201,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.13.17", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.13.17", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== @@ -2115,9 +2115,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.3" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz#e469a13e4186c9e1c0418fb17be8bc8ff1b19a7a" - integrity sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg== + version "4.19.5" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" + integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2237,9 +2237,9 @@ "@types/node" "*" "@types/node@*": - version "20.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" - integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + version "20.14.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.8.tgz#45c26a2a5de26c3534a9504530ddb3b27ce031ac" + integrity sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA== dependencies: undici-types "~5.26.4" @@ -2576,10 +2576,10 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: version "5.3.2" @@ -2587,19 +2587,21 @@ acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + version "8.3.3" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" acorn@^6.0.7: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.0.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.0.4, acorn@^8.11.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" + integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== agent-base@6, agent-base@^6.0.2: version "6.0.2" @@ -2764,12 +2766,12 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== +aria-query@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: - dequal "^2.0.3" + deep-equal "^2.0.5" arr-diff@^4.0.0: version "4.0.0" @@ -2786,7 +2788,7 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -array-buffer-byte-length@^1.0.1: +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== @@ -2887,7 +2889,7 @@ array.prototype.toreversed@^1.1.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.tosorted@^1.1.3: +array.prototype.tosorted@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== @@ -2986,17 +2988,17 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.0.tgz#d9b802e9bb9c248d7be5f7f5ef178dc3684e9dcc" integrity sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g== -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +axe-core@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.9.1.tgz#fcd0f4496dad09e0c899b44f6c4bb7848da912ae" + integrity sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw== -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== +axobject-query@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== dependencies: - dequal "^2.0.3" + deep-equal "^2.0.5" babel-eslint@^10.0.3: version "10.1.0" @@ -3401,9 +3403,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001629: - version "1.0.30001632" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz#964207b7cba5851701afb4c8afaf1448db3884b6" - integrity sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg== + version "1.0.30001636" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" + integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== caseless@~0.12.0: version "0.12.0" @@ -3947,6 +3949,30 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -3978,7 +4004,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -4029,7 +4055,7 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -dequal@^2.0.0, dequal@^2.0.3: +dequal@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== @@ -4188,9 +4214,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.796: - version "1.4.798" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.798.tgz#6a3fcab2edc1e66e3883466f6b4b8944323c0164" - integrity sha512-by9J2CiM9KPGj9qfp5U4FcPSbXJG7FNzqnYaY4WLzX+v2PHieVGmnsA4dxfpGE3QEC7JofpPZmn7Vn1B9NR2+Q== + version "1.4.810" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.810.tgz#7dee01b090b9e048e6db752f7b30921790230654" + integrity sha512-Kaxhu4T7SJGpRQx99tq216gCq2nMxJo+uuT6uzz9l8TVN2stL7M06MIIXAtr9jsrLs2Glflgf2vMQRepxawOdQ== emittery@^0.10.2: version "0.10.2" @@ -4236,7 +4262,7 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^5.16.0: +enhanced-resolve@^5.17.0: version "5.17.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== @@ -4271,7 +4297,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: +es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -4335,7 +4361,22 @@ es-errors@^1.2.1, es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== @@ -4356,9 +4397,9 @@ es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: - version "1.5.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" - integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== es-object-atoms@^1.0.0: version "1.0.0" @@ -4488,26 +4529,26 @@ eslint-plugin-jest@^26.5.3: "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.4.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8" + integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g== dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" + aria-query "~5.1.3" + array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" + axe-core "^4.9.1" + axobject-query "~3.1.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" + es-iterator-helpers "^1.0.19" + hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.0" eslint-plugin-prettier@^4.0.0: version "4.2.1" @@ -4522,15 +4563,15 @@ eslint-plugin-react-hooks@^4.6.0: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.23.2: - version "7.34.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66" - integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw== + version "7.34.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz#9965f27bd1250a787b5d4cfcc765e5a5d58dcb7b" + integrity sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.3" + array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" es-iterator-helpers "^1.0.19" estraverse "^5.3.0" @@ -5301,7 +5342,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -6016,7 +6057,7 @@ inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -internal-slot@^1.0.7: +internal-slot@^1.0.4, internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== @@ -6060,7 +6101,15 @@ is-accessor-descriptor@^1.0.1: dependencies: hasown "^2.0.0" -is-array-buffer@^3.0.4: +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== @@ -6132,11 +6181,11 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + version "2.14.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" + integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" is-data-descriptor@^1.0.1: version "1.0.1" @@ -6262,7 +6311,7 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== -is-map@^2.0.3: +is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== @@ -6341,7 +6390,7 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== -is-set@^2.0.3: +is-set@^2.0.2, is-set@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== @@ -7150,9 +7199,9 @@ language-tags@^1.0.9: language-subtag-registry "^0.3.20" launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + version "2.8.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.0.tgz#7255d90bdba414448e2138faa770a74f28451305" + integrity sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" @@ -7924,9 +7973,9 @@ mute-stream@0.0.7: integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== nan@^2.13.2: - version "2.19.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" - integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== + version "2.20.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" + integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== nanoid@^3.3.7: version "3.3.7" @@ -8135,9 +8184,17 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -8161,7 +8218,7 @@ object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5, object.entries@^1.1.7, object.entries@^1.1.8: +object.entries@^1.1.5, object.entries@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -9080,7 +9137,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.5.2: +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== @@ -9404,9 +9461,9 @@ sass-loader@^13.0.0: neo-async "^2.6.2" sass@^1.52.3: - version "1.77.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.4.tgz#92059c7bfc56b827c56eb116778d157ec017a5cd" - integrity sha512-vcF3Ckow6g939GMA4PeU7b2K/9FALXk2KF9J87txdHzXbUF9XRQRwSxcAs/fGaTnJeBFd7UoV22j3lzMLdM0Pw== + version "1.77.6" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.6.tgz#898845c1348078c2e6d1b64f9ee06b3f8bd489e4" + integrity sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9945,6 +10002,13 @@ stdout-stream@^1.4.0: dependencies: readable-stream "^2.0.1" +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -9993,6 +10057,14 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string.prototype.includes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" + integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.6: version "4.0.11" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" @@ -10773,9 +10845,9 @@ uvu@^0.5.0: sade "^1.7.3" v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" @@ -10977,9 +11049,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.73.0: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + version "5.92.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.1.tgz#eca5c1725b9e189cffbd86e8b6c3c7400efc5788" + integrity sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" @@ -10987,10 +11059,10 @@ webpack@^5.73.0: "@webassemblyjs/wasm-edit" "^1.12.1" "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" + acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" + enhanced-resolve "^5.17.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" @@ -11081,7 +11153,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -11330,14 +11402,14 @@ write@1.0.3: mkdirp "^0.5.1" ws@^7.3.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xhr@^2.0.1: version "2.6.0" From 9447e839964dab711d52b74a21c1cbf500f5aa0c Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Fri, 21 Jun 2024 21:00:50 +0200 Subject: [PATCH 047/109] Upgrade to Spring Modulith 1.1.6 and 1.2.1 See gh-1520 --- start-site/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index e4084d7b500..6c270ec6009 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -125,9 +125,9 @@ initializr: versionProperty: spring-modulith.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 1.1.5 + version: 1.1.6 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 1.2.0 + version: 1.2.1 spring-shell: groupId: org.springframework.shell artifactId: spring-shell-dependencies From 327735a63b0fc5aa0ecde5c8f965872d7d967a2a Mon Sep 17 00:00:00 2001 From: Arvind Krishnakumar <61501885+arvindkrishnakumar-okta@users.noreply.github.com> Date: Fri, 21 Jun 2024 12:25:10 -0500 Subject: [PATCH 048/109] Upgrade to Okta Spring Boot 3.0.7 See gh-1519 --- start-site/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 6c270ec6009..835f298a865 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -425,8 +425,8 @@ initializr: groupId: com.okta.spring artifactId: okta-spring-boot-starter mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 3.0.6 + - compatibilityRange: "[3.2.0,3.3.0)" + version: 3.0.7 links: - rel: guide href: https://github.com/okta/samples-java-spring/tree/master/okta-hosted-login From 466db9ec9f8a59450d39a028ad8eb53e4b0892ac Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 24 Jun 2024 08:52:43 +0200 Subject: [PATCH 049/109] Polish "Upgrade to Okta Spring Boot 3.0.7" See gh-1519 --- start-site/src/main/resources/application.yml | 4 ++-- .../dependency/okta/OktaHelpDocumentCustomizerTests.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 835f298a865..ce0404b970b 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -420,12 +420,12 @@ initializr: href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#data.nosql.ldap - name: Okta id: okta - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" description: Okta specific configuration for Spring Security/Spring Boot OAuth2 features. Enable your Spring Boot application to work with Okta via OAuth 2.0/OIDC. groupId: com.okta.spring artifactId: okta-spring-boot-starter mappings: - - compatibilityRange: "[3.2.0,3.3.0)" + - compatibilityRange: "[3.2.0,3.4.0-M1)" version: 3.0.7 links: - rel: guide diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/okta/OktaHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/okta/OktaHelpDocumentCustomizerTests.java index 5fe3cdec208..921908539bf 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/okta/OktaHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/okta/OktaHelpDocumentCustomizerTests.java @@ -29,7 +29,7 @@ */ class OktaHelpDocumentCustomizerTests extends AbstractExtensionTests { - private static final String SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test void oktaSectionWithOktaDependencyIsPresent() { From 9ea618421e0d1217a85fd164252f28e28f19fbd4 Mon Sep 17 00:00:00 2001 From: Gerrit Meier Date: Mon, 24 Jun 2024 09:22:29 +0200 Subject: [PATCH 050/109] Fix typo in Neo4j Vector database The product is spelled with a lower-case j. See gh-1523 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index ce0404b970b..f5de5cf7fd2 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -1463,7 +1463,7 @@ initializr: links: - rel: reference href: https://docs.spring.io/spring-ai/reference/api/clients/mistralai-chat.html - - name: Neo4J Vector Database + - name: Neo4j Vector Database id: spring-ai-vectordb-neo4j group-id: org.springframework.ai artifact-id: spring-ai-neo4j-store-spring-boot-starter From 94eba9281f1a1b9139f83fd8eb17aed254b13d72 Mon Sep 17 00:00:00 2001 From: Sanajit Jana Date: Mon, 24 Jun 2024 12:24:42 +0530 Subject: [PATCH 051/109] Adapt history dialog to dark theme See gh-1522 --- start-client/src/styles/_dark.scss | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/start-client/src/styles/_dark.scss b/start-client/src/styles/_dark.scss index 58a0127dbab..3414d8fbcbd 100644 --- a/start-client/src/styles/_dark.scss +++ b/start-client/src/styles/_dark.scss @@ -396,4 +396,23 @@ body.dark { box-shadow: inset 0 0 0 2px $dark-color; background: $dark-background; } + + .modal-share .modal-header { + background: $dark-background; + border-bottom: 1px solid #4a5053; + } + .modal-content { + background: $dark-background; + } + .modal-content .list a.item { + background: $dark-background-secondary; + color: white; + &:hover { + background: lighten($dark-background-secondary, 2); + } + } + .modal-action { + background: $dark-background; + border-top: 1px solid #4a5053; + } } From 8079e0026c22a8dd6fa5926547817393dd25063e Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 24 Jun 2024 13:41:06 +0200 Subject: [PATCH 052/109] Polish "Adapt history dialog to dark theme" See gh-1522 --- start-client/src/styles/_dark.scss | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/start-client/src/styles/_dark.scss b/start-client/src/styles/_dark.scss index 3414d8fbcbd..819696c4b54 100644 --- a/start-client/src/styles/_dark.scss +++ b/start-client/src/styles/_dark.scss @@ -399,20 +399,23 @@ body.dark { .modal-share .modal-header { background: $dark-background; - border-bottom: 1px solid #4a5053; + border-bottom: 1px solid $dark-border; + } + .modal-history-container { + border: 1px solid $dark-border; } .modal-content { background: $dark-background; } .modal-content .list a.item { background: $dark-background-secondary; - color: white; + color: $dark-color; &:hover { background: lighten($dark-background-secondary, 2); } } .modal-action { background: $dark-background; - border-top: 1px solid #4a5053; + border-top: 1px solid $dark-border; } } From 2ed09a2ab1846774dd93ed8c2dfea0c1e58c0bd3 Mon Sep 17 00:00:00 2001 From: Sanajit Jana Date: Tue, 25 Jun 2024 14:00:34 +0530 Subject: [PATCH 053/109] Fix history icon hover and transition on dark theme --- start-client/src/styles/_dark.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/start-client/src/styles/_dark.scss b/start-client/src/styles/_dark.scss index 819696c4b54..6b00b3cfb0c 100644 --- a/start-client/src/styles/_dark.scss +++ b/start-client/src/styles/_dark.scss @@ -18,6 +18,10 @@ body.dark { #side-left .navigation-item { color: white; + transition: all 0.15s; + &:hover { + opacity: 0.7; + } } #side-right .side-container { From 23a0f2e97324022570dbb3e4502c8b64a96c58fc Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 26 Jun 2024 09:40:54 +0200 Subject: [PATCH 054/109] Add MongoDB Atlas vector database for Spring AI Closes gh-1525 --- start-site/src/main/resources/application.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index f5de5cf7fd2..9a16bb74349 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -1463,6 +1463,16 @@ initializr: links: - rel: reference href: https://docs.spring.io/spring-ai/reference/api/clients/mistralai-chat.html + - name: MongoDB Atlas Vector Database + id: spring-ai-vectordb-mongodb-atlas + group-id: org.springframework.ai + artifact-id: spring-ai-mongodb-atlas-store-spring-boot-starter + description: Spring AI vector database support for MongoDB Atlas. Is is a fully managed cloud database service that provides an easy way to deploy, operate, and scale a MongoDB database in the cloud. + bom: spring-ai + starter: true + links: + - rel: reference + href: https://docs.spring.io/spring-ai/reference/api/vectordbs/mongodb.html - name: Neo4j Vector Database id: spring-ai-vectordb-neo4j group-id: org.springframework.ai From d249c70be9ad7909709423ae7355cebb3f13ff88 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Wed, 26 Jun 2024 11:50:22 +0100 Subject: [PATCH 055/109] Upgrade to Spring Shell 3.2.6 and 3.3.1 See gh-1526 --- start-site/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 9a16bb74349..8e048e6814d 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -134,9 +134,9 @@ initializr: versionProperty: spring-shell.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 3.2.5 + version: 3.2.6 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 3.3.0 + version: 3.3.1 timefold-solver: groupId: ai.timefold.solver artifactId: timefold-solver-bom From be3e35a0cdcf7a27125c5448665b7619f35614df Mon Sep 17 00:00:00 2001 From: Diego Marquez Date: Fri, 28 Jun 2024 21:01:36 -0400 Subject: [PATCH 056/109] Update spring-cloud-gcp to 5.4.3 See gh-1527 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 8e048e6814d..aed56aa3498 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -110,7 +110,7 @@ initializr: additionalBoms: [ spring-cloud ] mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 5.4.1 + version: 5.4.3 spring-cloud-services: groupId: io.pivotal.spring.cloud artifactId: spring-cloud-services-dependencies From d9bc915d07535c63541bdafd706eaa81ab9ea384 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Tue, 2 Jul 2024 22:08:56 +0200 Subject: [PATCH 057/109] Automatically add Spring Modulith event externalization dependency If a message broker *and* Spring Modulith are declared as project dependencies, the event externalization of Spring Modulith for configured broker are now declared automatically as well. Also, the Spring Modulith Events API dependency is declared in compile scope to allow event types to be marked for externalization. See gh-1528 --- .../SpringModulithBuildCustomizer.java | 30 +++++++++++++++++++ .../SpringModulithBuildCustomizerTests.java | 18 +++++++++++ 2 files changed, 48 insertions(+) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java index a979040ff79..f01b1a44f93 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java @@ -41,6 +41,8 @@ class SpringModulithBuildCustomizer implements BuildCustomizer { private static final Collection PERSISTENCE = List.of("jdbc", "jpa", "mongodb"); + private static final Collection BROKERS = List.of("activemq", "amqp", "artemis", "kafka"); + @Override public void customize(Build build) { DependencyContainer dependencies = build.dependencies(); @@ -52,6 +54,9 @@ public void customize(Build build) { modulithDependency("observability").scope(DependencyScope.RUNTIME)); } addEventPublicationRegistryBackend(build); + if (addEventExternalizationDependency(build)) { + dependencies.add("modulith-events-api", modulithDependency("events-api")); + } dependencies.add("modulith-starter-test", modulithDependency("starter-test").scope(DependencyScope.TEST_COMPILE)); } @@ -75,4 +80,29 @@ private Builder modulithDependency(String name) { return Dependency.withCoordinates("org.springframework.modulith", "spring-modulith-" + name); } + private boolean addEventExternalizationDependency(Build build) { + DependencyContainer dependencies = build.dependencies(); + return BROKERS.stream() + .filter(dependencies::has) + .map(this::getModulithBrokerKey) + .peek((it) -> dependencies.add("modulith-events-" + it, + modulithDependency("events-" + it).scope(DependencyScope.RUNTIME))) + .findAny() + .isPresent(); + } + + private String getModulithBrokerKey(String broker) { + + switch (broker) { + case "kafka": + case "amqp": + return broker; + case "artemis": + case "activemq": + return "jms"; + default: + throw new IllegalArgumentException("Unsupported broker!"); + } + } + } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java index 957b56547bc..81ac376dfbe 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizerTests.java @@ -74,6 +74,24 @@ void presenceOfSpringDataModuleAddsModuleEventStarter(String store) { assertThat(build.dependencies().ids()).doesNotContain("modulith-starter-core"); } + @ParameterizedTest + @ValueSource(strings = { "amqp", "kafka" }) + void addsExternalizationDependency(String broker) { + Build build = createBuild("modulith", broker); + this.customizer.customize(build); + assertThat(build.dependencies().ids()).contains("modulith-events-" + broker); + assertThat(build.dependencies().ids()).contains("modulith-events-api"); + } + + @ParameterizedTest + @ValueSource(strings = { "activemq", "artemis" }) + void addsJmsExternalizationDependency(String broker) { + Build build = createBuild("modulith", broker); + this.customizer.customize(build); + assertThat(build.dependencies().ids()).contains("modulith-events-jms"); + assertThat(build.dependencies().ids()).contains("modulith-events-api"); + } + private Build createBuild(String... dependencies) { InitializrMetadata metadata = getMetadata(); MavenBuild build = new MavenBuild(new MetadataBuildItemResolver(metadata, getDefaultPlatformVersion(metadata))); From bc87b20e4ee1319797233545a02d67eb1f3964de Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 3 Jul 2024 08:30:47 +0200 Subject: [PATCH 058/109] Polish "Automatically add Spring Modulith event externalization dependency" See gh-1528 --- .../SpringModulithBuildCustomizer.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java index f01b1a44f93..91604af4cd3 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/springmodulith/SpringModulithBuildCustomizer.java @@ -92,17 +92,11 @@ private boolean addEventExternalizationDependency(Build build) { } private String getModulithBrokerKey(String broker) { - - switch (broker) { - case "kafka": - case "amqp": - return broker; - case "artemis": - case "activemq": - return "jms"; - default: - throw new IllegalArgumentException("Unsupported broker!"); - } + return switch (broker) { + case "kafka", "amqp" -> broker; + case "artemis", "activemq" -> "jms"; + default -> throw new IllegalArgumentException("Unsupported broker!"); + }; } } From a18bb0edc2a16ca90b52f103e666f7fb234878ef Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Mon, 8 Jul 2024 16:31:23 +0300 Subject: [PATCH 059/109] Upgrade to Vaadin 24.4.5 See gh-1530 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index aed56aa3498..ea1268ba9c2 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -150,7 +150,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.3 + version: 24.4.5 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From baa8f80a2d024780ca307181d20b2977bdf693fa Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Tue, 9 Jul 2024 14:47:45 +0300 Subject: [PATCH 060/109] Upgrade to Vaadin 24.4.6 See gh-1531 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index ea1268ba9c2..2df8166ce88 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -150,7 +150,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.5 + version: 24.4.6 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From 11d49fde05438498dbaf7eeebaf0617a4684bf09 Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 9 Jul 2024 13:06:28 -0300 Subject: [PATCH 061/109] Update Timefold solver version to 1.12.0 See gh-1532 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 2df8166ce88..2855538b66d 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -143,7 +143,7 @@ initializr: versionProperty: timefold-solver.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 1.11.0 + version: 1.12.0 vaadin: groupId: com.vaadin artifactId: vaadin-bom From 6816410dabe7c2bbfac3227051bf9bc19ce0d966 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 11 Jul 2024 15:55:37 +0100 Subject: [PATCH 062/109] Upgrade to Spring Cloud Azure 5.14.0 Closes gh-1535 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 2855538b66d..97212746495 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -102,7 +102,7 @@ initializr: versionProperty: spring-cloud-azure.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 5.13.0 + version: 5.14.0 spring-cloud-gcp: groupId: com.google.cloud artifactId: spring-cloud-gcp-dependencies From 9b93f1e13bd4e689e35bcaca35d5fb025c38e364 Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Fri, 12 Jul 2024 20:42:37 +0200 Subject: [PATCH 063/109] Upgrade to Spring Cloud 2023.0.3 See gh-1536 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 97212746495..fa410ea97a9 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -95,7 +95,7 @@ initializr: order: 50 mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 2023.0.2 + version: 2023.0.3 spring-cloud-azure: groupId: com.azure.spring artifactId: spring-cloud-azure-dependencies From 70afa6b90f7629688a84b6c97a207e09f0bb02cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Carrasco=20Mo=C3=B1ino?= Date: Mon, 22 Jul 2024 19:59:37 +0200 Subject: [PATCH 064/109] Upgrade to Vaadin 24.4.7 See gh-1538 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index fa410ea97a9..0de685a1e3a 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -150,7 +150,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.6 + version: 24.4.7 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From 0508a9e1f008005ed837e80e38c857315751d3bc Mon Sep 17 00:00:00 2001 From: Tran Ngoc Nhan Date: Sat, 27 Jul 2024 23:00:30 +0700 Subject: [PATCH 065/109] Update reference links in HELP.md See gh-1541 --- ...adleBuildSystemHelpDocumentCustomizer.java | 24 +++++++++++++++---- ...avenBuildSystemHelpDocumentCustomizer.java | 16 +++++++++++-- .../GraalVmHelpDocumentCustomizer.java | 20 ++++++++++++---- .../ObservabilityHelpDocumentCustomizer.java | 17 ++++++++++--- .../TestContainersHelpDocumentCustomizer.java | 20 ++++++++++++---- ...uildSystemHelpDocumentCustomizerTests.java | 4 ++-- ...uildSystemHelpDocumentCustomizerTests.java | 6 ++--- .../GraalVmHelpDocumentCustomizerTests.java | 11 +++++++++ 8 files changed, 95 insertions(+), 23 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java index 35052ee14b9..5134c12c687 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java @@ -20,6 +20,8 @@ import io.spring.initializr.generator.spring.documentation.HelpDocument; import io.spring.initializr.generator.spring.documentation.HelpDocumentCustomizer; import io.spring.initializr.generator.version.Version; +import io.spring.initializr.generator.version.VersionParser; +import io.spring.initializr.generator.version.VersionRange; /** * A {@link HelpDocumentCustomizer} that adds reference links for Gradle. @@ -29,6 +31,10 @@ */ class GradleBuildSystemHelpDocumentCustomizer implements HelpDocumentCustomizer { + private static final String SPRING_BOOT_DOCS_URL = "https://docs.spring.io/spring-boot"; + + private static final VersionRange SPRING_BOOT_3_3_0_OR_LATER = VersionParser.DEFAULT.parseRange("3.3.0"); + private final Version springBootVersion; GradleBuildSystemHelpDocumentCustomizer(ProjectDescription description) { @@ -42,14 +48,22 @@ public void customize(HelpDocument document) { "Gradle Build Scans – insights for your project's build"); document.gettingStarted().addReferenceDocLink("https://docs.gradle.org", "Official Gradle documentation"); document.gettingStarted() - .addReferenceDocLink( - String.format("https://docs.spring.io/spring-boot/docs/%s/gradle-plugin/reference/html/", - this.springBootVersion), - "Spring Boot Gradle Plugin Reference Guide"); + .addReferenceDocLink(generateReferenceGuideUrl(), "Spring Boot Gradle Plugin Reference Guide"); document.gettingStarted() .addReferenceDocLink(String.format( - "https://docs.spring.io/spring-boot/docs/%s/gradle-plugin/reference/html/#build-image", + generateReferenceGuideUrl() + (shouldChangeUrl() ? "/packaging-oci-image.html" : "#build-image"), this.springBootVersion), "Create an OCI image"); } + private String generateReferenceGuideUrl() { + String baseUrlFormat = SPRING_BOOT_DOCS_URL + + (shouldChangeUrl() ? "/%s/gradle-plugin" : "/%s/gradle-plugin/reference/html/"); + return String.format(baseUrlFormat, this.springBootVersion); + } + + private boolean shouldChangeUrl() { + + return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion); + } + } diff --git a/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java index 3d8ef234871..1333d78b6f5 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java @@ -20,6 +20,8 @@ import io.spring.initializr.generator.spring.documentation.HelpDocument; import io.spring.initializr.generator.spring.documentation.HelpDocumentCustomizer; import io.spring.initializr.generator.version.Version; +import io.spring.initializr.generator.version.VersionParser; +import io.spring.initializr.generator.version.VersionRange; /** * A {@link HelpDocumentCustomizer} that adds reference links for Apache Maven. @@ -29,6 +31,10 @@ */ class MavenBuildSystemHelpDocumentCustomizer implements HelpDocumentCustomizer { + private static final String SPRING_BOOT_DOCS_URL = "https://docs.spring.io/spring-boot"; + + private static final VersionRange SPRING_BOOT_3_3_0_OR_LATER = VersionParser.DEFAULT.parseRange("3.3.0"); + private final Version springBootVersion; MavenBuildSystemHelpDocumentCustomizer(ProjectDescription description) { @@ -41,13 +47,19 @@ public void customize(HelpDocument document) { .addReferenceDocLink("https://maven.apache.org/guides/index.html", "Official Apache Maven documentation"); String referenceGuideUrl = generateReferenceGuideUrl(); document.gettingStarted().addReferenceDocLink(referenceGuideUrl, "Spring Boot Maven Plugin Reference Guide"); - String buildImageSection = referenceGuideUrl + "#build-image"; + String buildImageSection = referenceGuideUrl + (shouldChangeUrl() ? "/build-image.html" : "#build-image"); document.gettingStarted().addReferenceDocLink(buildImageSection, "Create an OCI image"); } private String generateReferenceGuideUrl() { - String baseUrlFormat = "https://docs.spring.io/spring-boot/docs/%s/maven-plugin/reference/html/"; + String baseUrlFormat = SPRING_BOOT_DOCS_URL + + (shouldChangeUrl() ? "/%s/maven-plugin" : "/docs/%s/maven-plugin/reference/html/"); return String.format(baseUrlFormat, this.springBootVersion); } + private boolean shouldChangeUrl() { + + return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion); + } + } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java index 685edb169b7..363f54b6478 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java @@ -28,6 +28,8 @@ import io.spring.initializr.generator.spring.documentation.HelpDocument; import io.spring.initializr.generator.spring.documentation.HelpDocumentCustomizer; import io.spring.initializr.generator.version.Version; +import io.spring.initializr.generator.version.VersionParser; +import io.spring.initializr.generator.version.VersionRange; import io.spring.initializr.metadata.Dependency; import io.spring.initializr.metadata.InitializrMetadata; @@ -38,6 +40,8 @@ */ class GraalVmHelpDocumentCustomizer implements HelpDocumentCustomizer { + private static final VersionRange SPRING_BOOT_3_3_0_OR_LATER = VersionParser.DEFAULT.parseRange("3.3.0"); + private final InitializrMetadata metadata; private final ProjectDescription description; @@ -56,13 +60,16 @@ class GraalVmHelpDocumentCustomizer implements HelpDocumentCustomizer { @Override public void customize(HelpDocument document) { document.gettingStarted() - .addReferenceDocLink(String.format( - "https://docs.spring.io/spring-boot/docs/%s/reference/html/native-image.html#native-image", + .addReferenceDocLink(String.format(shouldChangeUrl() + ? "https://docs.spring.io/spring-boot/%s/reference/packaging/native-image/introducing-graalvm-native-images.html" + : "https://docs.spring.io/spring-boot/docs/%s/reference/html/native-image.html#native-image", this.platformVersion), "GraalVM Native Image Support"); boolean mavenBuild = this.build instanceof MavenBuild; boolean gradleBuild = this.build instanceof GradleBuild; - String url = String.format("https://docs.spring.io/spring-boot/docs/%s/%s/reference/htmlsingle/#aot", - this.platformVersion, (mavenBuild) ? "maven-plugin" : "gradle-plugin"); + String url = shouldChangeUrl() + ? String.format("https://docs.spring.io/spring-boot/%s/how-to/aot.html", this.platformVersion) + : String.format("https://docs.spring.io/spring-boot/docs/%s/%s/reference/htmlsingle/#aot", + this.platformVersion, (mavenBuild) ? "maven-plugin" : "gradle-plugin"); document.gettingStarted().addAdditionalLink(url, "Configure AOT settings in Build Plugin"); Map model = new HashMap<>(); @@ -98,4 +105,9 @@ private Stream buildDependencies() { .filter(Objects::nonNull); } + private boolean shouldChangeUrl() { + + return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion); + } + } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java index a14175982aa..a5af92e7706 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java @@ -21,6 +21,8 @@ import io.spring.initializr.generator.spring.documentation.HelpDocument; import io.spring.initializr.generator.spring.documentation.HelpDocumentCustomizer; import io.spring.initializr.generator.version.Version; +import io.spring.initializr.generator.version.VersionParser; +import io.spring.initializr.generator.version.VersionRange; /** * {@link HelpDocumentCustomizer} implementation for Observability. @@ -29,6 +31,8 @@ */ public class ObservabilityHelpDocumentCustomizer implements HelpDocumentCustomizer { + private static final VersionRange SPRING_BOOT_3_3_0_OR_LATER = VersionParser.DEFAULT.parseRange("3.3.0"); + private final Version platformVersion; private final Build build; @@ -42,13 +46,20 @@ public ObservabilityHelpDocumentCustomizer(ProjectDescription description, Build public void customize(HelpDocument document) { if (this.build.dependencies().has("distributed-tracing")) { document.gettingStarted() - .addReferenceDocLink("https://micrometer.io/docs/tracing", "Distributed Tracing Reference Guide"); + .addReferenceDocLink("https://docs.micrometer.io/tracing/reference/index.html", + "Distributed Tracing Reference Guide"); document.gettingStarted() - .addReferenceDocLink(String.format( - "https://docs.spring.io/spring-boot/docs/%s/reference/html/actuator.html#actuator.micrometer-tracing.getting-started", + .addReferenceDocLink(String.format(shouldChangeUrl() + ? "https://docs.spring.io/spring-boot/%s/reference/actuator/tracing.html" + : "https://docs.spring.io/spring-boot/docs/%s/reference/html/actuator.html#actuator.micrometer-tracing.getting-started", this.platformVersion), "Getting Started with Distributed Tracing"); } } + private boolean shouldChangeUrl() { + + return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion); + } + } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java index 91f34224247..41e3d689ce6 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java @@ -23,6 +23,8 @@ import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.spring.documentation.HelpDocument; import io.spring.initializr.generator.spring.documentation.HelpDocumentCustomizer; +import io.spring.initializr.generator.version.VersionParser; +import io.spring.initializr.generator.version.VersionRange; import io.spring.start.site.container.DockerService; import io.spring.start.site.container.ServiceConnections; import io.spring.start.site.container.ServiceConnections.ServiceConnection; @@ -35,6 +37,8 @@ */ class TestContainersHelpDocumentCustomizer implements HelpDocumentCustomizer { + private static final VersionRange SPRING_BOOT_3_3_0_OR_LATER = VersionParser.DEFAULT.parseRange("3.3.0"); + private final ProjectDescription description; private final ServiceConnections serviceConnections; @@ -46,7 +50,9 @@ class TestContainersHelpDocumentCustomizer implements HelpDocumentCustomizer { @Override public void customize(HelpDocument document) { - String referenceDocUrl = "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testing.testcontainers" + String referenceDocUrl = (shouldChangeUrl() + ? "https://docs.spring.io/spring-boot/%s/reference/testing/testcontainers.html#testing.testcontainers" + : "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testing.testcontainers") .formatted(this.description.getPlatformVersion()); document.gettingStarted().addReferenceDocLink(referenceDocUrl, "Spring Boot Testcontainers support"); @@ -55,10 +61,16 @@ public void customize(HelpDocument document) { .map(ServiceConnection::dockerService) .toList(); model.put("services", dockerServices); - model.put("testcontainersAtDevelopmentTimeLink", - "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testing.testcontainers.at-development-time" - .formatted(this.description.getPlatformVersion())); + model.put("testcontainersAtDevelopmentTimeLink", (shouldChangeUrl() + ? "https://docs.spring.io/spring-boot/%s/reference/features/dev-services.html#features.dev-services.testcontainers" + : "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testcontainers") + .formatted(this.description.getPlatformVersion())); document.addSection("testcontainers", model); } + private boolean shouldChangeUrl() { + + return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.description.getPlatformVersion()); + } + } diff --git a/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java index cefd3029969..74da64eb4d5 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java @@ -38,8 +38,8 @@ void linksAddedToHelpDocumentForGradleBuild() { assertHelpDocument("gradle-build", SPRING_BOOT_VERSION).contains( "* [Official Gradle documentation](https://docs.gradle.org)", "* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle)", - "* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.3.0/gradle-plugin/reference/html/)", - "* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.3.0/gradle-plugin/reference/html/#build-image)"); + "* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/3.3.0/gradle-plugin)", + "* [Create an OCI image](https://docs.spring.io/spring-boot/3.3.0/gradle-plugin/packaging-oci-image.html)"); } @Test diff --git a/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java index 56a17532e5c..e4b43e87551 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java @@ -37,15 +37,15 @@ class MavenBuildSystemHelpDocumentCustomizerTests extends AbstractExtensionTests void linksAddedToHelpDocumentForMavenBuild() { assertHelpDocument("maven-build", SPRING_BOOT_VERSION).contains( "* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)", - "* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.3.0/maven-plugin/reference/html/)", - "* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.3.0/maven-plugin/reference/html/#build-image)"); + "* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/3.3.0/maven-plugin)", + "* [Create an OCI image](https://docs.spring.io/spring-boot/3.3.0/maven-plugin/build-image.html)"); } @Test void linksNotAddedToHelpDocumentForGradleBuild() { assertHelpDocument("gradle-build", SPRING_BOOT_VERSION).doesNotContain( "* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)", - "* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.3.0/maven-plugin/)"); + "* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/3.3.0/maven-plugin/)"); } private ListAssert assertHelpDocument(String type, String version) { diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java index 78961c3b532..b6c4b94200f 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java @@ -45,6 +45,17 @@ class GraalVmHelpDocumentCustomizerTests extends AbstractExtensionTests { @Autowired private MustacheTemplateRenderer templateRenderer; + @Test + void mavenBuildAndGradleAddLinkToMavenAotPlugin() { + MutableProjectDescription description = new MutableProjectDescription(); + description.setPlatformVersion(Version.parse("3.3.0")); + HelpDocument document = customize(description, new MavenBuild()); + assertThat(document.gettingStarted().additionalLinks().getItems()).singleElement().satisfies((link) -> { + assertThat(link.getDescription()).isEqualTo("Configure AOT settings in Build Plugin"); + assertThat(link.getHref()).isEqualTo("https://docs.spring.io/spring-boot/3.3.0/how-to/aot.html"); + }); + } + @Test void mavenBuildAddLinkToMavenAotPlugin() { MutableProjectDescription description = new MutableProjectDescription(); From 880c59dfc0ceffebdef56dfbf7e4019e2b952cb8 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Mon, 29 Jul 2024 09:29:30 +0200 Subject: [PATCH 066/109] Polish "Update reference links in HELP.md" See gh-1541 --- ...adleBuildSystemHelpDocumentCustomizer.java | 19 +++--- ...avenBuildSystemHelpDocumentCustomizer.java | 14 ++-- .../GraalVmHelpDocumentCustomizer.java | 9 +-- .../ObservabilityHelpDocumentCustomizer.java | 7 +- .../TestContainersHelpDocumentCustomizer.java | 15 ++--- ...uildSystemHelpDocumentCustomizerTests.java | 15 ++++- ...uildSystemHelpDocumentCustomizerTests.java | 15 ++++- .../GraalVmHelpDocumentCustomizerTests.java | 25 ++++++-- ...ervabilityHelpDocumentCustomizerTests.java | 64 +++++++++++++++++++ ...rsProjectGenerationConfigurationTests.java | 14 +++- 10 files changed, 141 insertions(+), 56 deletions(-) create mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java index 5134c12c687..b645a5cb974 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizer.java @@ -50,20 +50,17 @@ public void customize(HelpDocument document) { document.gettingStarted() .addReferenceDocLink(generateReferenceGuideUrl(), "Spring Boot Gradle Plugin Reference Guide"); document.gettingStarted() - .addReferenceDocLink(String.format( - generateReferenceGuideUrl() + (shouldChangeUrl() ? "/packaging-oci-image.html" : "#build-image"), - this.springBootVersion), "Create an OCI image"); + .addReferenceDocLink( + String + .format(generateReferenceGuideUrl() + (SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion) + ? "/packaging-oci-image.html" : "#build-image"), this.springBootVersion), + "Create an OCI image"); } private String generateReferenceGuideUrl() { - String baseUrlFormat = SPRING_BOOT_DOCS_URL - + (shouldChangeUrl() ? "/%s/gradle-plugin" : "/%s/gradle-plugin/reference/html/"); - return String.format(baseUrlFormat, this.springBootVersion); - } - - private boolean shouldChangeUrl() { - - return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion); + String baseUrlFormat = SPRING_BOOT_DOCS_URL + (SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion) + ? "/%s/gradle-plugin" : "/docs/%s/gradle-plugin/reference/html/"); + return baseUrlFormat.formatted(this.springBootVersion); } } diff --git a/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java index 1333d78b6f5..e4fe3d8d715 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizer.java @@ -47,19 +47,15 @@ public void customize(HelpDocument document) { .addReferenceDocLink("https://maven.apache.org/guides/index.html", "Official Apache Maven documentation"); String referenceGuideUrl = generateReferenceGuideUrl(); document.gettingStarted().addReferenceDocLink(referenceGuideUrl, "Spring Boot Maven Plugin Reference Guide"); - String buildImageSection = referenceGuideUrl + (shouldChangeUrl() ? "/build-image.html" : "#build-image"); + String buildImageSection = referenceGuideUrl + + (SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion) ? "/build-image.html" : "#build-image"); document.gettingStarted().addReferenceDocLink(buildImageSection, "Create an OCI image"); } private String generateReferenceGuideUrl() { - String baseUrlFormat = SPRING_BOOT_DOCS_URL - + (shouldChangeUrl() ? "/%s/maven-plugin" : "/docs/%s/maven-plugin/reference/html/"); - return String.format(baseUrlFormat, this.springBootVersion); - } - - private boolean shouldChangeUrl() { - - return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion); + String baseUrlFormat = SPRING_BOOT_DOCS_URL + (SPRING_BOOT_3_3_0_OR_LATER.match(this.springBootVersion) + ? "/%s/maven-plugin" : "/docs/%s/maven-plugin/reference/html/"); + return baseUrlFormat.formatted(this.springBootVersion); } } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java index 363f54b6478..9a962a914f4 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizer.java @@ -60,13 +60,13 @@ class GraalVmHelpDocumentCustomizer implements HelpDocumentCustomizer { @Override public void customize(HelpDocument document) { document.gettingStarted() - .addReferenceDocLink(String.format(shouldChangeUrl() + .addReferenceDocLink(String.format(SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion) ? "https://docs.spring.io/spring-boot/%s/reference/packaging/native-image/introducing-graalvm-native-images.html" : "https://docs.spring.io/spring-boot/docs/%s/reference/html/native-image.html#native-image", this.platformVersion), "GraalVM Native Image Support"); boolean mavenBuild = this.build instanceof MavenBuild; boolean gradleBuild = this.build instanceof GradleBuild; - String url = shouldChangeUrl() + String url = SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion) ? String.format("https://docs.spring.io/spring-boot/%s/how-to/aot.html", this.platformVersion) : String.format("https://docs.spring.io/spring-boot/docs/%s/%s/reference/htmlsingle/#aot", this.platformVersion, (mavenBuild) ? "maven-plugin" : "gradle-plugin"); @@ -105,9 +105,4 @@ private Stream buildDependencies() { .filter(Objects::nonNull); } - private boolean shouldChangeUrl() { - - return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion); - } - } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java index a5af92e7706..0b82d7e30b0 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizer.java @@ -49,7 +49,7 @@ public void customize(HelpDocument document) { .addReferenceDocLink("https://docs.micrometer.io/tracing/reference/index.html", "Distributed Tracing Reference Guide"); document.gettingStarted() - .addReferenceDocLink(String.format(shouldChangeUrl() + .addReferenceDocLink(String.format(SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion) ? "https://docs.spring.io/spring-boot/%s/reference/actuator/tracing.html" : "https://docs.spring.io/spring-boot/docs/%s/reference/html/actuator.html#actuator.micrometer-tracing.getting-started", this.platformVersion), "Getting Started with Distributed Tracing"); @@ -57,9 +57,4 @@ public void customize(HelpDocument document) { } } - private boolean shouldChangeUrl() { - - return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.platformVersion); - } - } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java index 41e3d689ce6..cbe847d9f0e 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/TestContainersHelpDocumentCustomizer.java @@ -50,27 +50,22 @@ class TestContainersHelpDocumentCustomizer implements HelpDocumentCustomizer { @Override public void customize(HelpDocument document) { - String referenceDocUrl = (shouldChangeUrl() + String referenceDocUrl = (SPRING_BOOT_3_3_0_OR_LATER.match(this.description.getPlatformVersion()) ? "https://docs.spring.io/spring-boot/%s/reference/testing/testcontainers.html#testing.testcontainers" : "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testing.testcontainers") .formatted(this.description.getPlatformVersion()); document.gettingStarted().addReferenceDocLink(referenceDocUrl, "Spring Boot Testcontainers support"); - Map model = new HashMap<>(); List dockerServices = this.serviceConnections.values() .map(ServiceConnection::dockerService) .toList(); model.put("services", dockerServices); - model.put("testcontainersAtDevelopmentTimeLink", (shouldChangeUrl() - ? "https://docs.spring.io/spring-boot/%s/reference/features/dev-services.html#features.dev-services.testcontainers" - : "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testcontainers") + model.put("testcontainersAtDevelopmentTimeLink", (SPRING_BOOT_3_3_0_OR_LATER + .match(this.description.getPlatformVersion()) + ? "https://docs.spring.io/spring-boot/%s/reference/features/dev-services.html#features.dev-services.testcontainers" + : "https://docs.spring.io/spring-boot/docs/%s/reference/html/features.html#features.testing.testcontainers.at-development-time") .formatted(this.description.getPlatformVersion())); document.addSection("testcontainers", model); } - private boolean shouldChangeUrl() { - - return this.SPRING_BOOT_3_3_0_OR_LATER.match(this.description.getPlatformVersion()); - } - } diff --git a/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java index 74da64eb4d5..fe8970a452d 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/build/gradle/GradleBuildSystemHelpDocumentCustomizerTests.java @@ -28,9 +28,12 @@ * * @author Jenn Strater * @author Andy Wilkinson + * @author Moritz Halbritter */ class GradleBuildSystemHelpDocumentCustomizerTests extends AbstractExtensionTests { + private static final String OLD_SPRING_BOOT_VERSION = "3.2.0"; + private static final String SPRING_BOOT_VERSION = "3.3.0"; @Test @@ -43,11 +46,17 @@ void linksAddedToHelpDocumentForGradleBuild() { } @Test - void linksNotAddedToHelpDocumentForMavenBuild() { - assertHelpDocument("maven-build", SPRING_BOOT_VERSION).doesNotContain( + void linksAddedToHelpDocumentForGradleBuildWithOldSpringBootVersion() { + assertHelpDocument("gradle-build", OLD_SPRING_BOOT_VERSION).contains( "* [Official Gradle documentation](https://docs.gradle.org)", "* [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle)", - "* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.3.0/gradle-plugin/reference/html/)"); + "* [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.2.0/gradle-plugin/reference/html/)", + "* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.2.0/gradle-plugin/reference/html/#build-image)"); + } + + @Test + void linksNotAddedToHelpDocumentForMavenBuild() { + assertHelpDocument("maven-build", SPRING_BOOT_VERSION).noneMatch((line) -> line.contains("Gradle")); } private ListAssert assertHelpDocument(String type, String version) { diff --git a/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java index e4b43e87551..c430cb05b63 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/build/maven/MavenBuildSystemHelpDocumentCustomizerTests.java @@ -28,11 +28,14 @@ * * @author Jenn Strater * @author Andy Wilkinson + * @author Moritz Halbritter */ class MavenBuildSystemHelpDocumentCustomizerTests extends AbstractExtensionTests { private static final String SPRING_BOOT_VERSION = "3.3.0"; + private static final String OLD_SPRING_BOOT_VERSION = "3.2.0"; + @Test void linksAddedToHelpDocumentForMavenBuild() { assertHelpDocument("maven-build", SPRING_BOOT_VERSION).contains( @@ -42,10 +45,16 @@ void linksAddedToHelpDocumentForMavenBuild() { } @Test - void linksNotAddedToHelpDocumentForGradleBuild() { - assertHelpDocument("gradle-build", SPRING_BOOT_VERSION).doesNotContain( + void linksAddedToHelpDocumentForMavenBuildWithOldSpringBootVersion() { + assertHelpDocument("maven-build", OLD_SPRING_BOOT_VERSION).contains( "* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)", - "* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/3.3.0/maven-plugin/)"); + "* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.2.0/maven-plugin/reference/html/)", + "* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.2.0/maven-plugin/reference/html/#build-image)"); + } + + @Test + void linksNotAddedToHelpDocumentForGradleBuild() { + assertHelpDocument("gradle-build", SPRING_BOOT_VERSION).noneMatch((line) -> line.contains("Maven")); } private ListAssert assertHelpDocument(String type, String version) { diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java index b6c4b94200f..0ec9c9e0409 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/graalvm/GraalVmHelpDocumentCustomizerTests.java @@ -42,13 +42,17 @@ */ class GraalVmHelpDocumentCustomizerTests extends AbstractExtensionTests { + private static final String SPRING_BOOT_VERSION = "3.3.0"; + + private static final String OLD_SPRING_BOOT_VERSION = "3.2.0"; + @Autowired private MustacheTemplateRenderer templateRenderer; @Test - void mavenBuildAndGradleAddLinkToMavenAotPlugin() { + void mavenBuildAddLinkToMavenAotPlugin() { MutableProjectDescription description = new MutableProjectDescription(); - description.setPlatformVersion(Version.parse("3.3.0")); + description.setPlatformVersion(Version.parse(SPRING_BOOT_VERSION)); HelpDocument document = customize(description, new MavenBuild()); assertThat(document.gettingStarted().additionalLinks().getItems()).singleElement().satisfies((link) -> { assertThat(link.getDescription()).isEqualTo("Configure AOT settings in Build Plugin"); @@ -57,9 +61,9 @@ void mavenBuildAndGradleAddLinkToMavenAotPlugin() { } @Test - void mavenBuildAddLinkToMavenAotPlugin() { + void mavenBuildAddLinkToMavenAotPluginWithOldSpringBootVersion() { MutableProjectDescription description = new MutableProjectDescription(); - description.setPlatformVersion(Version.parse("3.2.0")); + description.setPlatformVersion(Version.parse(OLD_SPRING_BOOT_VERSION)); HelpDocument document = customize(description, new MavenBuild()); assertThat(document.gettingStarted().additionalLinks().getItems()).singleElement().satisfies((link) -> { assertThat(link.getDescription()).isEqualTo("Configure AOT settings in Build Plugin"); @@ -71,7 +75,18 @@ void mavenBuildAddLinkToMavenAotPlugin() { @Test void gradleBuildAddLinkToGradleAotPlugin() { MutableProjectDescription description = new MutableProjectDescription(); - description.setPlatformVersion(Version.parse("3.2.0")); + description.setPlatformVersion(Version.parse(SPRING_BOOT_VERSION)); + HelpDocument document = customize(description, new GradleBuild()); + assertThat(document.gettingStarted().additionalLinks().getItems()).singleElement().satisfies((link) -> { + assertThat(link.getDescription()).isEqualTo("Configure AOT settings in Build Plugin"); + assertThat(link.getHref()).isEqualTo("https://docs.spring.io/spring-boot/3.3.0/how-to/aot.html"); + }); + } + + @Test + void gradleBuildAddLinkToGradleAotPluginWithOldSpringBootVersion() { + MutableProjectDescription description = new MutableProjectDescription(); + description.setPlatformVersion(Version.parse(OLD_SPRING_BOOT_VERSION)); HelpDocument document = customize(description, new GradleBuild()); assertThat(document.gettingStarted().additionalLinks().getItems()).singleElement().satisfies((link) -> { assertThat(link.getDescription()).isEqualTo("Configure AOT settings in Build Plugin"); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizerTests.java new file mode 100644 index 00000000000..9b1dae50d95 --- /dev/null +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/observability/ObservabilityHelpDocumentCustomizerTests.java @@ -0,0 +1,64 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.observability; + +import io.spring.initializr.generator.test.io.TextAssert; +import io.spring.initializr.generator.test.project.ProjectStructure; +import io.spring.initializr.web.project.ProjectRequest; +import io.spring.start.site.extension.AbstractExtensionTests; +import org.assertj.core.api.ListAssert; +import org.junit.jupiter.api.Test; + +/** + * Tests for {@link ObservabilityHelpDocumentCustomizer}. + * + * @author Moritz Halbritter + */ +class ObservabilityHelpDocumentCustomizerTests extends AbstractExtensionTests { + + private static final String OLD_SPRING_BOOT_VERSION = "3.2.0"; + + private static final String SPRING_BOOT_VERSION = "3.3.0"; + + @Test + void linksAddedToHelpDocumentForGradleBuild() { + assertHelpDocument(SPRING_BOOT_VERSION, "distributed-tracing").contains( + "* [Distributed Tracing Reference Guide](https://docs.micrometer.io/tracing/reference/index.html)", + "* [Getting Started with Distributed Tracing](https://docs.spring.io/spring-boot/3.3.0/reference/actuator/tracing.html)"); + } + + @Test + void linksAddedToHelpDocumentForGradleBuildWithOldSpringBootVersion() { + assertHelpDocument(OLD_SPRING_BOOT_VERSION, "distributed-tracing").contains( + "* [Distributed Tracing Reference Guide](https://docs.micrometer.io/tracing/reference/index.html)", + "* [Getting Started with Distributed Tracing](https://docs.spring.io/spring-boot/docs/3.2.0/reference/html/actuator.html#actuator.micrometer-tracing.getting-started)"); + } + + @Test + void linksNotAddedToHelpDocumentForBuildWithoutTracing() { + assertHelpDocument(SPRING_BOOT_VERSION).noneMatch((line) -> line.contains("Tracing")); + } + + private ListAssert assertHelpDocument(String version, String... dependencies) { + ProjectRequest request = createProjectRequest(dependencies); + request.setType("gradle-build"); + request.setBootVersion(version); + ProjectStructure project = generateProject(request); + return new TextAssert(project.getProjectDirectory().resolve("HELP.md")).lines(); + } + +} diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java index 5773293b593..a18c5e3bbca 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/testcontainers/TestcontainersProjectGenerationConfigurationTests.java @@ -428,9 +428,19 @@ fun contextLoads() { @Test void shouldAddHelpSection() { assertHelpDocument(SPRING_BOOT_VERSION_3_3, "testcontainers", "data-mongodb", "postgresql").contains( - "https://docs.spring.io/spring-boot/docs/3.3.0/reference/html/features.html#features.testing.testcontainers") + "https://docs.spring.io/spring-boot/3.3.0/reference/testing/testcontainers.html#testing.testcontainers") .contains( - "https://docs.spring.io/spring-boot/docs/3.3.0/reference/html/features.html#features.testing.testcontainers.at-development-time") + "https://docs.spring.io/spring-boot/3.3.0/reference/features/dev-services.html#features.dev-services.testcontainers") + .contains("mongo:latest") + .contains("postgres:latest"); + } + + @Test + void shouldAddHelpSectionWithOldSpringBoot() { + assertHelpDocument(SPRING_BOOT_VERSION_3_2, "testcontainers", "data-mongodb", "postgresql").contains( + "https://docs.spring.io/spring-boot/docs/3.2.0/reference/html/features.html#features.testing.testcontainers") + .contains( + "https://docs.spring.io/spring-boot/docs/3.2.0/reference/html/features.html#features.testing.testcontainers.at-development-time") .contains("mongo:latest") .contains("postgres:latest"); } From 40e9ea3ddbf03a44d34e28ead05c4144dd4e19e8 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 30 Jul 2024 09:01:44 +0200 Subject: [PATCH 067/109] Add thymeleaf security extensions and Security test if OAuth2 client is selected Closes gh-1542 --- .../DependencyProjectGenerationConfiguration.java | 7 +++++++ .../dependency/thymeleaf/ThymeleafBuildCustomizer.java | 3 ++- .../SpringSecurityTestBuildCustomizerTests.java | 10 ++++++++++ .../thymeleaf/ThymeleafBuildCustomizerTests.java | 10 ++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java index a5240dc1ad6..62a456c9e29 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/DependencyProjectGenerationConfiguration.java @@ -46,6 +46,7 @@ * @author Stephane Nicoll * @author Eddú Meléndez * @author Kazuki Shimizu + * @author Moritz Halbritter */ @ProjectGenerationConfiguration public class DependencyProjectGenerationConfiguration { @@ -67,6 +68,12 @@ public SpringSecurityTestBuildCustomizer securityTestBuildCustomizer() { return new SpringSecurityTestBuildCustomizer(); } + @Bean + @ConditionalOnRequestedDependency("oauth2-client") + SpringSecurityTestBuildCustomizer oauth2ClientTestBuildCustomizer() { + return new SpringSecurityTestBuildCustomizer(); + } + @Bean @ConditionalOnRequestedDependency("security") public SpringSecurityRSocketBuildCustomizer securityRSocketBuildCustomizer() { diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizer.java index 47d17d7606a..236bdfd0ea0 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizer.java @@ -24,12 +24,13 @@ * A {@link BuildCustomizer} for Thymeleaf. * * @author Stephane Nicoll + * @author Moritz Halbritter */ public class ThymeleafBuildCustomizer implements BuildCustomizer { @Override public void customize(Build build) { - if (build.dependencies().has("security")) { + if (build.dependencies().has("security") || build.dependencies().has("oauth2-client")) { build.dependencies() .add("thymeleaf-extras-spring-security", Dependency.withCoordinates("org.thymeleaf.extras", "thymeleaf-extras-springsecurity6")); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/springsecurity/SpringSecurityTestBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/springsecurity/SpringSecurityTestBuildCustomizerTests.java index 4f705726525..1f9f392ff1f 100755 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/springsecurity/SpringSecurityTestBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/springsecurity/SpringSecurityTestBuildCustomizerTests.java @@ -27,6 +27,7 @@ * Tests for {@link SpringSecurityTestBuildCustomizer}. * * @author Stephane Nicoll + * @author Moritz Halbritter */ class SpringSecurityTestBuildCustomizerTests extends AbstractExtensionTests { @@ -39,6 +40,15 @@ void securityTestIsAddedWithSecurity() { .hasDependenciesSize(3); } + @Test + void securityTestIsAddedWithOAuth2Client() { + ProjectRequest request = createProjectRequest("oauth2-client"); + assertThat(mavenPom(request)).hasDependency(Dependency.createSpringBootStarter("oauth2-client")) + .hasDependency(Dependency.createSpringBootStarter("test", Dependency.SCOPE_TEST)) + .hasDependency(springSecurityTest()) + .hasDependenciesSize(3); + } + @Test void securityTestIsNotAddedWithoutSpringSecurity() { ProjectRequest request = createProjectRequest("web"); diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizerTests.java index 97482ed6c07..9a4eda8b6c0 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizerTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/thymeleaf/ThymeleafBuildCustomizerTests.java @@ -27,6 +27,7 @@ * Tests for {@link ThymeleafBuildCustomizer}. * * @author Stephane Nicoll + * @author Moritz Halbritter */ class ThymeleafBuildCustomizerTests extends AbstractExtensionTests { @@ -39,6 +40,15 @@ void thymeleafWithSpringSecurityAndSpringBootAddsExtrasDependency() { "thymeleaf-extras-springsecurity6")); } + @Test + void thymeleafWithOAuth2ClientAndSpringBootAddsExtrasDependency() { + ProjectRequest projectRequest = createProjectRequest("thymeleaf", "oauth2-client"); + assertThat(mavenPom(projectRequest)).hasDependency(Dependency.createSpringBootStarter("thymeleaf")) + .hasDependency(Dependency.createSpringBootStarter("oauth2-client")) + .hasDependency(Dependency.withId("thymeleaf-extras-spring-security", "org.thymeleaf.extras", + "thymeleaf-extras-springsecurity6")); + } + @Test void thymeleafWithoutSpringSecurityDoesNotAddExtrasDependency() { assertThat(mavenPom(createProjectRequest("thymeleaf", "web"))) From aab159a7b47ae883eb87a55e88a3408aeeb3bd07 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 2 Aug 2024 09:32:45 +0200 Subject: [PATCH 068/109] Remove wavefront starter Closes gh-1543 --- ...abilityProjectGenerationConfiguration.java | 9 --- .../WavefrontHelpDocumentCustomizer.java | 63 --------------- start-site/src/main/resources/application.yml | 13 +--- .../WavefrontHelpDocumentCustomizerTests.java | 78 ------------------- 4 files changed, 3 insertions(+), 160 deletions(-) delete mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizer.java delete mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityProjectGenerationConfiguration.java index 4c6b2e0cf39..7d5ace1bc9b 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/ObservabilityProjectGenerationConfiguration.java @@ -17,8 +17,6 @@ package io.spring.start.site.extension.dependency.observability; import io.spring.initializr.generator.buildsystem.Build; -import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion; -import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; import io.spring.initializr.generator.project.ProjectDescription; import io.spring.initializr.generator.project.ProjectGenerationConfiguration; @@ -48,11 +46,4 @@ ObservabilityHelpDocumentCustomizer observabilityHelpDocumentCustomizer(ProjectD return new ObservabilityHelpDocumentCustomizer(description, build); } - @Bean - @ConditionalOnRequestedDependency("wavefront") - @ConditionalOnPlatformVersion("[3.2.0, 3.3.0-M1)") - WavefrontHelpDocumentCustomizer wavefrontHelpDocumentCustomizer(Build build) { - return new WavefrontHelpDocumentCustomizer("https://docs.wavefront.com/wavefront_springboot3.html", build); - } - } diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizer.java deleted file mode 100644 index 94d7533466d..00000000000 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizer.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2012-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.observability; - -import io.spring.initializr.generator.buildsystem.Build; -import io.spring.initializr.generator.spring.documentation.HelpDocument; -import io.spring.initializr.generator.spring.documentation.HelpDocumentCustomizer; - -/** - * A {@link HelpDocumentCustomizer} that provides additional references when Wavefront is - * selected. - * - * @author Stephane Nicoll - * @author Brian Clozel - */ -class WavefrontHelpDocumentCustomizer implements HelpDocumentCustomizer { - - private final Build build; - - private final String referenceLink; - - WavefrontHelpDocumentCustomizer(String referenceLink, Build build) { - this.referenceLink = referenceLink; - this.build = build; - } - - @Override - public void customize(HelpDocument document) { - document.gettingStarted().addReferenceDocLink(this.referenceLink, "Wavefront for Spring Boot documentation"); - - StringBuilder sb = new StringBuilder(); - sb.append(String.format("## Observability with Wavefront%n%n")); - sb.append(String - .format("If you don't have a Wavefront account, the starter will create a freemium account for you.%n")); - sb.append(String.format("The URL to access the Wavefront Service dashboard is logged on startup.%n")); - - if (this.build.dependencies().has("web") || this.build.dependencies().has("webflux")) { - sb.append( - String.format("%nYou can also access your dashboard using the `/actuator/wavefront` endpoint.%n")); - } - - if (!this.build.dependencies().has("distributed-tracing")) { - sb.append(String.format( - "%nFinally, you can opt-in for distributed tracing by adding the 'Distributed Tracing' entry.%n")); - } - document.addSection((writer) -> writer.print(sb)); - } - -} diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 0de685a1e3a..100175b7fb1 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -992,16 +992,9 @@ initializr: - name: Wavefront id: wavefront description: Publish metrics and optionally distributed traces to Tanzu Observability by Wavefront, a SaaS-based metrics monitoring and analytics platform that lets you visualize, query, and alert over data from across your entire stack. - mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - groupId: com.wavefront - artifactId: wavefront-spring-boot-starter - version: 3.2.0 - starter: true - - compatibilityRange: "3.3.0-M1" - groupId: io.micrometer - artifactId: micrometer-registry-wavefront - starter: false + groupId: io.micrometer + artifactId: micrometer-registry-wavefront + starter: false - name: Zipkin id: zipkin description: Enable and expose span and trace IDs to Zipkin. diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizerTests.java deleted file mode 100644 index e2721825666..00000000000 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/observability/WavefrontHelpDocumentCustomizerTests.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2012-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.start.site.extension.dependency.observability; - -import io.spring.initializr.generator.test.io.TextAssert; -import io.spring.initializr.generator.test.project.ProjectStructure; -import io.spring.initializr.web.project.ProjectRequest; -import io.spring.start.site.extension.AbstractExtensionTests; -import org.assertj.core.api.ListAssert; -import org.junit.jupiter.api.Test; - -/** - * Tests for {@link WavefrontHelpDocumentCustomizer}. - * - * @author Stephane Nicoll - * @author Brian Clozel - */ -class WavefrontHelpDocumentCustomizerTests extends AbstractExtensionTests { - - @Test - void wavefrontAddGeneralSection() { - assertHelpDocument("3.2.0", "wavefront").contains("## Observability with Wavefront", "", - "If you don't have a Wavefront account, the starter will create a freemium account for you.", - "The URL to access the Wavefront Service dashboard is logged on startup."); - } - - @Test - void wavefrontWithoutWebApplicationDoesNotAddActuatorSection() { - assertHelpDocument("3.2.0", "wavefront") - .doesNotContain("You can also access your dashboard using the `/actuator/wavefront` endpoint."); - } - - @Test - void wavefrontWithWebApplicationAddActuatorSection() { - assertHelpDocument("3.2.0", "wavefront", "web") - .contains("You can also access your dashboard using the `/actuator/wavefront` endpoint."); - } - - @Test - void wavefrontWithoutDistributedTracingAddTracingNote() { - assertHelpDocument("3.2.0", "wavefront") - .contains("Finally, you can opt-in for distributed tracing by adding the 'Distributed Tracing' entry."); - } - - @Test - void wavefrontWithDistributedTracingDoesNotAddTracingNote() { - assertHelpDocument("3.2.0", "wavefront", "distributed-tracing").doesNotContain( - "Finally, you can opt-in for distributed tracing by adding the 'Distributed Tracing' entry."); - } - - @Test - void springBoot3xWavefrontReference() { - assertHelpDocument("3.2.0", "wavefront").contains( - "* [Wavefront for Spring Boot documentation](https://docs.wavefront.com/wavefront_springboot3.html)"); - } - - private ListAssert assertHelpDocument(String version, String... dependencies) { - ProjectRequest request = createProjectRequest(dependencies); - request.setBootVersion(version); - ProjectStructure project = generateProject(request); - return new TextAssert(project.getProjectDirectory().resolve("HELP.md")).lines(); - } - -} From 625de84333fc75ad780a7a9cae04003170a42929 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 2 Aug 2024 09:33:10 +0200 Subject: [PATCH 069/109] Upgrade to Spring Boot 3.3.2 Closes gh-1544 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c9c86e78e29..7f9b038a609 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.1 + 3.3.2 io.spring.start start-parent From b6d7321b8dbc80d7e6ae7d3fb78c8791ee873e07 Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Wed, 7 Aug 2024 09:46:00 +0300 Subject: [PATCH 070/109] Upgrade to Vaadin 24.4.8 See gh-1545 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 100175b7fb1..f33b6f523a0 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -150,7 +150,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.7 + version: 24.4.8 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From d5b25e832f8d3b49fa69b1c370d96b74e5bffc45 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 7 Aug 2024 10:32:03 +0200 Subject: [PATCH 071/109] Upgrade to Spring Cloud Azure 5.15.0 Closes gh-1546 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index f33b6f523a0..aa79cf7cd60 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -102,7 +102,7 @@ initializr: versionProperty: spring-cloud-azure.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 5.14.0 + version: 5.15.0 spring-cloud-gcp: groupId: com.google.cloud artifactId: spring-cloud-gcp-dependencies From f98159a4738effa9ebdf37d1ea9a41444248cb4c Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 7 Aug 2024 11:12:34 +0200 Subject: [PATCH 072/109] Adapt to changes in the initialzr library --- .../KotlinTestContainersApplicationCodeProjectContributor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java index 4105fd4409b..bd9ba8b5e91 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/testcontainers/KotlinTestContainersApplicationCodeProjectContributor.java @@ -46,7 +46,7 @@ class KotlinTestContainersApplicationCodeProjectContributor extends KotlinTestContainersApplicationCodeProjectContributor(IndentingWriterFactory indentingWriterFactory, ProjectDescription description, ServiceConnections serviceConnections) { super(description, serviceConnections, KotlinSourceCode::new, - new KotlinSourceCodeWriter(indentingWriterFactory)); + new KotlinSourceCodeWriter(description.getLanguage(), indentingWriterFactory)); } @Override From 3d1f3f11c633ea8c87fb508b25abac4a3ed41877 Mon Sep 17 00:00:00 2001 From: Fred Date: Tue, 13 Aug 2024 12:28:32 -0300 Subject: [PATCH 073/109] Upgrade Timefold Solver to 1.13.0 See gh-1551 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index aa79cf7cd60..42185327450 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -143,7 +143,7 @@ initializr: versionProperty: timefold-solver.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 1.12.0 + version: 1.13.0 vaadin: groupId: com.vaadin artifactId: vaadin-bom From c58bbad85a7b40efbce84e58d408f1c5c459ec32 Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:23:29 -0600 Subject: [PATCH 074/109] Upgrade to netflix-dgs 9.0.4 See gh-1550 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 42185327450..201e53cabef 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -58,7 +58,7 @@ initializr: - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 8.7.1 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 9.0.0 + version: 9.0.4 sentry: groupId: io.sentry artifactId: sentry-bom From 6681ea040c4dbac5f3c93187f373bbe09c68f17f Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:44:12 -0600 Subject: [PATCH 075/109] Fix java version in CONTRIBUTING.adoc file See gh-1550 --- CONTRIBUTING.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index 07dccdb206d..2b98592fccd 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -53,7 +53,7 @@ added after the original pull request but before a merge. === Building from Source start.spring.io can be build from the command line using -https://maven.apache.org/run-maven/index.html[Apache Maven] on JDK 11 or above. +https://maven.apache.org/run-maven/index.html[Apache Maven] on JDK 17 or above. We include '`Maven Wrapper`' scripts (`./mvnw` or `mvnw.bat`) that you can run rather than needing to install Maven locally. From 5636684519971d180d13aa4d7b132e8903cadef5 Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Tue, 13 Aug 2024 07:31:29 -0600 Subject: [PATCH 076/109] Upgrade to yarn 1.22.22 See gh-1550 --- start-client/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-client/pom.xml b/start-client/pom.xml index f8f46ea4a25..d6277a9b545 100644 --- a/start-client/pom.xml +++ b/start-client/pom.xml @@ -24,7 +24,7 @@ v16.20.0 - v1.22.19 + v1.22.22 From 86c98ff0b081f02e205093d2316a4b8261db90a8 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 16 Aug 2024 11:23:03 +0200 Subject: [PATCH 077/109] Set Vaadin's launch-browser property automatically Closes gh-1552 --- .../VaadinProjectGenerationConfiguration.java | 7 +++++++ .../VaadinProjectGenerationConfigurationTests.java | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfiguration.java index 8c1435fd15b..5415099a7e9 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfiguration.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfiguration.java @@ -21,6 +21,7 @@ import io.spring.initializr.generator.condition.ConditionalOnBuildSystem; import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; import io.spring.initializr.generator.project.ProjectDescription; +import io.spring.initializr.generator.spring.properties.ApplicationPropertiesCustomizer; import io.spring.initializr.generator.spring.scm.git.GitIgnoreCustomizer; import io.spring.initializr.metadata.InitializrMetadata; @@ -31,6 +32,7 @@ * Configuration for generation of projects that depend on Vaadin. * * @author Stephane Nicoll + * @author Moritz Halbritter */ @Configuration(proxyBeanMethods = false) @ConditionalOnRequestedDependency("vaadin") @@ -54,4 +56,9 @@ GitIgnoreCustomizer vaadinGitIgnoreCustomizer() { return (gitignore) -> gitignore.getGeneral().add("node_modules"); } + @Bean + ApplicationPropertiesCustomizer launchBrowserApplicationPropertiesCustomizer() { + return (properties) -> properties.add("vaadin.launch-browser", true); + } + } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java index 1cc693cab1e..67da3174585 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/vaadin/VaadinProjectGenerationConfigurationTests.java @@ -27,6 +27,7 @@ * Tests for {@link VaadinProjectGenerationConfiguration}. * * @author Stephane Nicoll + * @author Moritz Halbritter */ class VaadinProjectGenerationConfigurationTests extends AbstractExtensionTests { @@ -110,6 +111,18 @@ void gitIgnoreWithoutVaadinDoesNotIgnoreNodeModules() { .doesNotContain("node_modules"); } + @Test + void shouldAddLaunchBrowserProperty() { + assertThat(generateProject(createProjectRequest("vaadin"))).textFile("src/main/resources/application.properties") + .contains("vaadin.launch-browser=true"); + } + + @Test + void shouldNotAddLaunchBrowserPropertyIfVaadinIsNotSelected() { + assertThat(generateProject(createProjectRequest("data-jpa"))).textFile("src/main/resources/application.properties") + .doesNotContain("vaadin.launch-browser=true"); + } + @Override protected ProjectRequest createProjectRequest(String... dependencies) { ProjectRequest request = super.createProjectRequest(dependencies); From 872a7f5abed2f02bf6d8d3fcf3c18a191f553ae7 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 16 Aug 2024 11:47:33 +0200 Subject: [PATCH 078/109] Upgrade to spring-java-format 0.0.43 Closes gh-1555 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7f9b038a609..47c50ec75a5 100644 --- a/pom.xml +++ b/pom.xml @@ -34,8 +34,8 @@ 0.0.1-SNAPSHOT false 0.22.0-SNAPSHOT - 0.0.42 - + 0.0.43 + v start-client From dbf359d7600b628319642a641a7c99c0c88b90c4 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 16 Aug 2024 12:08:01 +0200 Subject: [PATCH 079/109] Fix typo --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 47c50ec75a5..ee38ddeb802 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ false 0.22.0-SNAPSHOT 0.0.43 - v + start-client From 0884b2f19d7dbfb59ffb407f92b6cc03da5d9b3c Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Mon, 19 Aug 2024 12:37:03 +0300 Subject: [PATCH 080/109] Upgrade to Vaadin 24.4.9 See gh-1556 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 201e53cabef..e665cc04b73 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -150,7 +150,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.8 + version: 24.4.9 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From 8d661c5ea125fc75998b17fbf8b3559d4a9f3a80 Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 15 Aug 2024 02:27:42 -0600 Subject: [PATCH 081/109] Upgrade to Sentry 7.14.0 See gh-1553 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index e665cc04b73..5865180d676 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -65,7 +65,7 @@ initializr: versionProperty: sentry.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 7.3.0 + version: 7.14.0 solace-spring-boot: groupId: com.solace.spring.boot artifactId: solace-spring-boot-bom From 7abe5d399e496762a832c7b82da272c504f5594f Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 15 Aug 2024 02:30:12 -0600 Subject: [PATCH 082/109] Upgrade to Solace Spring Boot 2.1.1 See gh-1553 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 5865180d676..5683fb8d033 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -72,7 +72,7 @@ initializr: versionProperty: solace-spring-boot.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 2.0.0 + version: 2.1.1 solace-spring-cloud: groupId: com.solace.spring.cloud artifactId: solace-spring-cloud-bom From 888f93aa74eaaa7104d2693e26a05d14d9b055eb Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 15 Aug 2024 02:32:09 -0600 Subject: [PATCH 083/109] Upgrade to Solace Cloud 4.4.0 See gh-1553 --- start-site/src/main/resources/application.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 5683fb8d033..3d856513781 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -78,8 +78,10 @@ initializr: artifactId: solace-spring-cloud-bom versionProperty: solace-spring-cloud.version mappings: - - compatibilityRange: "[3.2.0,3.4.0-M1)" + - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 4.1.0 + - compatibilityRange: "[3.3.0,3.4.0-M1)" + version: 4.4.0 spring-ai: groupId: org.springframework.ai artifactId: spring-ai-bom From 1b865e178a6f4b70b3df7a9dd370df35d0623368 Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 15 Aug 2024 02:33:21 -0600 Subject: [PATCH 084/109] Upgrade to Spring Cloud gcp to 5.5.0 See gh-1553 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 3d856513781..ac736220aa2 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -112,7 +112,7 @@ initializr: additionalBoms: [ spring-cloud ] mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 5.4.3 + version: 5.5.0 spring-cloud-services: groupId: io.pivotal.spring.cloud artifactId: spring-cloud-services-dependencies From 9306854414422a926207e9e34a77ec739399ca5e Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 15 Aug 2024 02:40:56 -0600 Subject: [PATCH 085/109] Upgrade to Spring Cloud Services 4.1.5 See gh-1553 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index ac736220aa2..7eb651fbc3e 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -120,7 +120,7 @@ initializr: additionalBoms: [ spring-cloud ] mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 4.1.3 + version: 4.1.5 spring-modulith: groupId: org.springframework.modulith artifactId: spring-modulith-bom From 9164f4141e6e6ee048b5735d8c1486b4d7cd0bfb Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 20 Aug 2024 09:18:43 +0200 Subject: [PATCH 086/109] Upgrade to cyclonedx-gradle-plugin 1.10.0 Closes gh-1558 --- .../dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java | 2 +- .../sbom/SbomProjectGenerationConfigurationTests.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java index a68ed6fcf31..879875bf545 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/sbom/SbomCycloneDxGradleBuildCustomizer.java @@ -26,7 +26,7 @@ */ class SbomCycloneDxGradleBuildCustomizer implements BuildCustomizer { - private static final String PLUGIN_VERSION = "1.8.2"; + private static final String PLUGIN_VERSION = "1.10.0"; @Override public void customize(GradleBuild build) { diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java index 56c3dfd0527..89bfe1eb4ac 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/sbom/SbomProjectGenerationConfigurationTests.java @@ -64,7 +64,7 @@ void shouldAddMavenPlugin() { @Test void shouldAddGradlePlugin() { ProjectRequest request = createProjectRequest("sbom-cyclone-dx"); - assertThat(gradleBuild(request)).hasPlugin("org.cyclonedx.bom", "1.8.2"); + assertThat(gradleBuild(request)).hasPlugin("org.cyclonedx.bom", "1.10.0"); } } From df8b1287d61b1b4afbe8b9ecf43275a137b4a2d3 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 20 Aug 2024 13:45:36 +0200 Subject: [PATCH 087/109] Add htmx dependency Closes gh-1549 --- .../dependency/htmx/HtmxBuildCustomizer.java | 44 ++++++++++++++ .../HtmxProjectGenerationConfiguration.java | 38 ++++++++++++ .../dependency/htmx/package-info.java | 20 +++++++ .../main/resources/META-INF/spring.factories | 1 + start-site/src/main/resources/application.yml | 15 +++++ .../htmx/HtmxBuildCustomizerTests.java | 60 +++++++++++++++++++ 6 files changed, 178 insertions(+) create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizer.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxProjectGenerationConfiguration.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/package-info.java create mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizer.java new file mode 100644 index 00000000000..456646c24ef --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizer.java @@ -0,0 +1,44 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.htmx; + +import io.spring.initializr.generator.buildsystem.Build; +import io.spring.initializr.generator.buildsystem.Dependency; +import io.spring.initializr.generator.spring.build.BuildCustomizer; + +/** + * A {@link BuildCustomizer} that replaces {@code htmx-spring-boot} with + * {@code htmx-spring-boot-thymeleaf} if Thymeleaf is selected. + * + * @author Moritz Halbritter + */ +class HtmxBuildCustomizer implements BuildCustomizer { + + @Override + public void customize(Build build) { + if (build.dependencies().has("thymeleaf")) { + Dependency htmx = build.dependencies().get("htmx"); + build.dependencies().remove("htmx"); + build.dependencies() + .add("htmx-thymeleaf", + Dependency.withCoordinates(htmx.getGroupId(), "htmx-spring-boot-thymeleaf") + .version(htmx.getVersion()) + .build()); + } + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxProjectGenerationConfiguration.java new file mode 100644 index 00000000000..7360d24bd9d --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/HtmxProjectGenerationConfiguration.java @@ -0,0 +1,38 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.htmx; + +import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Configuration for generation of projects that depend on htmx. + * + * @author Moritz Halbritter + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnRequestedDependency("htmx") +class HtmxProjectGenerationConfiguration { + + @Bean + HtmxBuildCustomizer htmxBuildCustomizer() { + return new HtmxBuildCustomizer(); + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/package-info.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/package-info.java new file mode 100644 index 00000000000..b0e25f8f188 --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/htmx/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2012-2022 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Extensions for generation of projects that depend on htmx. + */ +package io.spring.start.site.extension.dependency.htmx; diff --git a/start-site/src/main/resources/META-INF/spring.factories b/start-site/src/main/resources/META-INF/spring.factories index 28826f662c5..f2a58132499 100644 --- a/start-site/src/main/resources/META-INF/spring.factories +++ b/start-site/src/main/resources/META-INF/spring.factories @@ -13,6 +13,7 @@ io.spring.start.site.extension.dependency.elasticsearch.ElasticsearchProjectGene io.spring.start.site.extension.dependency.flyway.FlywayProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.graalvm.GraalVmProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.graphql.SpringGraphQlProjectGenerationConfiguration,\ +io.spring.start.site.extension.dependency.htmx.HtmxProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.mariadb.MariaDbProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.mongodb.MongoDbProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.mysql.MysqlProjectGenerationConfiguration,\ diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 7eb651fbc3e..52faf59e0c8 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -348,6 +348,21 @@ initializr: links: - rel: reference href: https://netflix.github.io/dgs/ + - name: htmx + id: htmx + facets: + - web + starter: false + groupId: io.github.wimdeblauwe + artifactId: htmx-spring-boot + description: Build modern user interfaces with the simplicity and power of hypertext. + compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 3.4.1 + links: + - rel: reference + href: https://github.com/wimdeblauwe/htmx-spring-boot + - rel: guide + href: https://www.youtube.com/watch?v=j-rfPoXe5aE - name: Template Engines content: - name: Thymeleaf diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizerTests.java new file mode 100644 index 00000000000..ada2bc088de --- /dev/null +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/htmx/HtmxBuildCustomizerTests.java @@ -0,0 +1,60 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.htmx; + +import io.spring.initializr.metadata.Dependency; +import io.spring.initializr.web.project.ProjectRequest; +import io.spring.start.site.extension.AbstractExtensionTests; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link HtmxBuildCustomizer}. + * + * @author Moritz Halbritter + */ +class HtmxBuildCustomizerTests extends AbstractExtensionTests { + + private final Dependency htmx = Dependency.withId("htmx", "io.github.wimdeblauwe", "htmx-spring-boot"); + + private final Dependency htmxThymeleaf = Dependency.withId("htmx", "io.github.wimdeblauwe", + "htmx-spring-boot-thymeleaf"); + + @Test + void shouldUseHtmxThymleafIfThymeleafIsSelected() { + ProjectRequest request = createProjectRequest("htmx", "thymeleaf"); + assertThat(mavenPom(request)).doesNotHaveDependency(this.htmx.getGroupId(), this.htmx.getArtifactId()) + .hasDependency(this.htmxThymeleaf); + } + + @Test + void shouldUsePlainHtmxIfThymeleafIsNotSelected() { + ProjectRequest request = createProjectRequest("htmx"); + assertThat(mavenPom(request)) + .doesNotHaveDependency(this.htmxThymeleaf.getGroupId(), this.htmxThymeleaf.getArtifactId()) + .hasDependency(this.htmx); + } + + @Test + void shouldNotAddHtmx() { + ProjectRequest request = createProjectRequest("web"); + assertThat(mavenPom(request)).doesNotHaveDependency(this.htmx.getGroupId(), this.htmx.getArtifactId()) + .doesNotHaveDependency(this.htmxThymeleaf.getGroupId(), this.htmxThymeleaf.getArtifactId()); + } + +} From 4542e80bef5241512fc575005d41428bab18ff6f Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 20 Aug 2024 16:00:53 +0200 Subject: [PATCH 088/109] Upgrade to Spring Cloud 2024.0.0-M1 Closes gh-1559 --- start-site/src/main/resources/application.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 52faf59e0c8..8453d1a6f6a 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -98,6 +98,9 @@ initializr: mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" version: 2023.0.3 + - compatibilityRange: "[3.4.0-M1,3.5.0-M1)" + version: 2024.0.0-M1 + repositories: spring-milestones spring-cloud-azure: groupId: com.azure.spring artifactId: spring-cloud-azure-dependencies @@ -1042,7 +1045,7 @@ initializr: href: https://java.testcontainers.org/ - name: Contract Verifier bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" id: cloud-contract-verifier description: Moves TDD to the level of software architecture by enabling Consumer Driven Contract (CDC) development. groupId: org.springframework.cloud @@ -1053,7 +1056,7 @@ initializr: href: https://cloud.spring.io/spring-cloud-contract/reference/htmlsingle/ - name: Contract Stub Runner bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" id: cloud-contract-stub-runner description: Stub Runner for HTTP/Messaging based communication. Allows creating WireMock stubs from RestDocs tests. groupId: org.springframework.cloud @@ -1074,7 +1077,7 @@ initializr: href: https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/index.html#data.nosql.ldap.embedded - name: Spring Cloud bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" content: - name: Cloud Bootstrap id: cloud-starter @@ -1106,7 +1109,7 @@ initializr: href: https://docs.spring.io/spring-cloud-task/docs/current/reference/html/ - name: Spring Cloud Config bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" content: - name: Config Client id: cloud-config-client @@ -1157,7 +1160,7 @@ initializr: description: Spring Cloud Consul Quick Start - name: Spring Cloud Discovery bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" content: - name: Eureka Discovery Client id: cloud-eureka @@ -1199,7 +1202,7 @@ initializr: href: https://docs.spring.io/spring-cloud-consul/docs/current/reference/html/#spring-cloud-consul-discovery - name: Spring Cloud Routing bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" content: - name: Gateway id: cloud-gateway @@ -1246,7 +1249,7 @@ initializr: href: https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#spring-cloud-loadbalancer - name: Spring Cloud Circuit Breaker bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" content: - name: Resilience4J id: cloud-resilience4j @@ -1258,7 +1261,7 @@ initializr: href: https://docs.spring.io/spring-cloud-circuitbreaker/docs/current/reference/html/#configuring-resilience4j-circuit-breakers - name: Spring Cloud Messaging bom: spring-cloud - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" content: - name: Cloud Bus id: cloud-bus From 7900339c737c0593aa43db757af9b3dbf4bffde3 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 21 Aug 2024 09:12:14 +0200 Subject: [PATCH 089/109] Ensure that DependencyResolver is thread safe --- .../src/test/java/io/spring/start/site/DependencyResolver.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java b/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java index 025fe5f38e8..63ed6d84f85 100644 --- a/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java +++ b/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -62,7 +63,7 @@ final class DependencyResolver { - private static final Collection instances = new ArrayList<>(); + private static final Collection instances = new CopyOnWriteArrayList<>(); private static final ThreadLocal instanceForThread = ThreadLocal.withInitial(() -> { DependencyResolver instance = new DependencyResolver(); From 0f095d7210dfd04a643fdf881fe7af924ac807bc Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 21 Aug 2024 09:12:21 +0200 Subject: [PATCH 090/109] Polish --- .../java/io/spring/start/site/MetadataVerificationTests.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java b/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java index 7d689ebea60..af4735ed2f0 100644 --- a/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java +++ b/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java @@ -16,7 +16,6 @@ package io.spring.start.site; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -62,7 +61,7 @@ class MetadataVerificationTests { private final InitializrMetadata metadata; - MetadataVerificationTests(@Autowired InitializrMetadataProvider metadataProvider) throws IOException { + MetadataVerificationTests(@Autowired InitializrMetadataProvider metadataProvider) { this.metadata = metadataProvider.get(); } From 242da36ef386ed0acfaee48ce3137ae7769de3a1 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 21 Aug 2024 09:12:29 +0200 Subject: [PATCH 091/109] Mark htmx as a starter --- start-site/src/main/resources/application.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 8453d1a6f6a..e5e751cd380 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -355,7 +355,6 @@ initializr: id: htmx facets: - web - starter: false groupId: io.github.wimdeblauwe artifactId: htmx-spring-boot description: Build modern user interfaces with the simplicity and power of hypertext. From e62e17f115dd7752e63097ac6a98e5bab832f6a7 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 21 Aug 2024 10:18:58 +0200 Subject: [PATCH 092/109] Cache MetadataVerificationTests They are quite slow to execute as they always resolve against an empty Maven repository. This commit moves the Homes and some other test support infra structure to a shared module which is used in start-site and start-site-verification in test scope. The DependencyResolver used in MetadataVerificationTests is using the Homes class, reusing the already cached repository, thus speeding it up. --- pom.xml | 6 ++ start-site-verification/pom.xml | 6 ++ .../spring/start/site/DependencyResolver.java | 63 ++++-------- .../start/site/MetadataVerificationTests.java | 13 +-- .../src/test/resources/application-test.yml | 3 + .../test/resources/junit-platform.properties | 18 ++++ start-site/pom.xml | 5 + .../ProjectGenerationIntegrationTests.java | 65 ++---------- .../site/test/TestMavenVersionResolver.java | 1 + .../test/resources/junit-platform.properties | 2 +- test-support/pom.xml | 51 ++++++++++ .../io/spring/start/testsupport/Homes.java | 99 +++++++++++++++++++ .../JunitMaxParallelismStrategy.java | 2 +- .../start/testsupport}/TemporaryFiles.java | 2 +- .../start/testsupport/package-info.java | 20 ++++ .../spring/start/testsupport/HomesTests.java | 43 ++++++++ 16 files changed, 286 insertions(+), 113 deletions(-) create mode 100644 start-site-verification/src/test/resources/application-test.yml create mode 100644 test-support/pom.xml create mode 100644 test-support/src/main/java/io/spring/start/testsupport/Homes.java rename {start-site/src/test/java/io/spring/start/site/test => test-support/src/main/java/io/spring/start/testsupport}/JunitMaxParallelismStrategy.java (98%) rename {start-site/src/test/java/io/spring/start/site/test => test-support/src/main/java/io/spring/start/testsupport}/TemporaryFiles.java (98%) create mode 100644 test-support/src/main/java/io/spring/start/testsupport/package-info.java create mode 100644 test-support/src/test/java/io/spring/start/testsupport/HomesTests.java diff --git a/pom.xml b/pom.xml index ee38ddeb802..6e466dea7e5 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ start-client start-site + test-support @@ -79,6 +80,11 @@ start-site ${revision} + + io.spring.start + test-support + ${revision} + com.azure.spring spring-cloud-azure-dependencies diff --git a/start-site-verification/pom.xml b/start-site-verification/pom.xml index 6d15809c9a8..55da66153b2 100644 --- a/start-site-verification/pom.xml +++ b/start-site-verification/pom.xml @@ -28,6 +28,12 @@ + + + io.spring.start + test-support + test + diff --git a/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java b/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java index 63ed6d84f85..3efb658d728 100644 --- a/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java +++ b/start-site-verification/src/test/java/io/spring/start/site/DependencyResolver.java @@ -16,19 +16,16 @@ package io.spring.start.site; -import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; import java.util.stream.Collectors; import java.util.stream.Stream; import io.spring.initializr.metadata.BillOfMaterials; +import io.spring.start.testsupport.Homes; import org.apache.maven.repository.internal.MavenRepositorySystemUtils; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; @@ -59,36 +56,23 @@ import org.eclipse.aether.util.graph.visitor.FilteringDependencyVisitor; import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy; -import org.springframework.util.FileSystemUtils; - final class DependencyResolver { - private static final Collection instances = new CopyOnWriteArrayList<>(); - - private static final ThreadLocal instanceForThread = ThreadLocal.withInitial(() -> { - DependencyResolver instance = new DependencyResolver(); - instances.add(instance); - return instance; - }); - static final RemoteRepository mavenCentral = createRemoteRepository("central", "https://repo1.maven.org/maven2", false); private static final Map> managedDependencies = new ConcurrentHashMap<>(); - private final Path localRepositoryLocation; - private final RepositorySystemSession repositorySystemSession; private final RepositorySystem repositorySystem; - DependencyResolver() { + DependencyResolver(Path localRepositoryLocation) { try { ServiceLocator serviceLocator = createServiceLocator(); DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); session.setArtifactDescriptorPolicy(new SimpleArtifactDescriptorPolicy(false, false)); - this.localRepositoryLocation = Files.createTempDirectory("metadata-validation-m2"); - LocalRepository localRepository = new LocalRepository(this.localRepositoryLocation.toFile()); + LocalRepository localRepository = new LocalRepository(localRepositoryLocation.toFile()); this.repositorySystem = serviceLocator.getService(RepositorySystem.class); session .setLocalRepositoryManager(this.repositorySystem.newLocalRepositoryManager(session, localRepository)); @@ -113,33 +97,26 @@ static RemoteRepository createRemoteRepository(String id, String url, boolean sn return repositoryBuilder.build(); } - static List resolveDependencies(String groupId, String artifactId, String version, + static List resolveDependencies(Homes homes, String groupId, String artifactId, String version, List boms, List repositories) { - DependencyResolver instance = instanceForThread.get(); - List managedDependencies = instance.getManagedDependencies(boms, repositories); - Dependency aetherDependency = new Dependency(new DefaultArtifact(groupId, artifactId, "pom", - instance.getVersion(groupId, artifactId, version, managedDependencies)), "compile"); - CollectRequest collectRequest = new CollectRequest(aetherDependency, repositories); - collectRequest.setManagedDependencies(managedDependencies); - try { - CollectResult result = instance.collectDependencies(collectRequest); - return DependencyCollector.collect(result.getRoot(), RuntimeTransitiveOnlyDependencyFilter.INSTANCE); - } - catch (DependencyCollectionException ex) { - throw new RuntimeException(ex); - } - } - - static void cleanUp() { - instances.forEach(DependencyResolver::deleteLocalRepository); - } - - void deleteLocalRepository() { + Path home = homes.acquire(); try { - FileSystemUtils.deleteRecursively(this.localRepositoryLocation); + DependencyResolver instance = new DependencyResolver(home.resolve("repository")); + List managedDependencies = instance.getManagedDependencies(boms, repositories); + Dependency aetherDependency = new Dependency(new DefaultArtifact(groupId, artifactId, "pom", + instance.getVersion(groupId, artifactId, version, managedDependencies)), "compile"); + CollectRequest collectRequest = new CollectRequest(aetherDependency, repositories); + collectRequest.setManagedDependencies(managedDependencies); + try { + CollectResult result = instance.collectDependencies(collectRequest); + return DependencyCollector.collect(result.getRoot(), RuntimeTransitiveOnlyDependencyFilter.INSTANCE); + } + catch (DependencyCollectionException ex) { + throw new RuntimeException(ex); + } } - catch (IOException ex) { - // Continue + finally { + homes.release(home); } } diff --git a/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java b/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java index af4735ed2f0..dbc1b0b400e 100644 --- a/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java +++ b/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java @@ -34,8 +34,8 @@ import io.spring.initializr.metadata.InitializrMetadata; import io.spring.initializr.metadata.InitializrMetadataProvider; import io.spring.initializr.metadata.Repository; +import io.spring.start.testsupport.Homes; import org.eclipse.aether.repository.RemoteRepository; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; import org.junit.jupiter.api.parallel.Execution; @@ -46,6 +46,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; import static org.assertj.core.api.Assertions.assertThat; @@ -57,6 +58,7 @@ @SpringBootTest @TestInstance(Lifecycle.PER_CLASS) @Execution(ExecutionMode.CONCURRENT) +@ActiveProfiles("test") class MetadataVerificationTests { private final InitializrMetadata metadata; @@ -65,11 +67,6 @@ class MetadataVerificationTests { this.metadata = metadataProvider.get(); } - @AfterAll - static void cleanUp() { - DependencyResolver.cleanUp(); - } - @ParameterizedTest(name = "{3}") @MethodSource("parameters") void dependencyStarterConfigurationIsCorrect(Dependency dependency, List boms, @@ -88,8 +85,8 @@ void dependencyStarterConfigurationIsCorrect(Dependency dependency, List collectDependencies(Dependency dependency, List boms, List repositories) { try { - return DependencyResolver.resolveDependencies(dependency.getGroupId(), dependency.getArtifactId(), - dependency.getVersion(), boms, repositories); + return DependencyResolver.resolveDependencies(Homes.MAVEN, dependency.getGroupId(), + dependency.getArtifactId(), dependency.getVersion(), boms, repositories); } catch (RuntimeException ex) { // ActiveMQ starter does not exist with Spring Boot 3.0 diff --git a/start-site-verification/src/test/resources/application-test.yml b/start-site-verification/src/test/resources/application-test.yml new file mode 100644 index 00000000000..604ee888f61 --- /dev/null +++ b/start-site-verification/src/test/resources/application-test.yml @@ -0,0 +1,3 @@ +application: + maven-version-resolver: + cache-directory: "${START_SPRING_IO_TMPDIR:${java.io.tmpdir}}/maven-version-resolver-cache" diff --git a/start-site-verification/src/test/resources/junit-platform.properties b/start-site-verification/src/test/resources/junit-platform.properties index 1d27b78fbbb..5c068dfbba1 100644 --- a/start-site-verification/src/test/resources/junit-platform.properties +++ b/start-site-verification/src/test/resources/junit-platform.properties @@ -1 +1,19 @@ +# +# Copyright 2012-2024 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + junit.jupiter.execution.parallel.enabled=true +junit.jupiter.execution.parallel.config.strategy=custom +junit.jupiter.execution.parallel.config.custom.class=io.spring.start.testsupport.JunitMaxParallelismStrategy diff --git a/start-site/pom.xml b/start-site/pom.xml index 322e5e48e2a..044ab775b61 100644 --- a/start-site/pom.xml +++ b/start-site/pom.xml @@ -92,6 +92,11 @@ initializr-generator-test test + + io.spring.start + test-support + test + diff --git a/start-site/src/test/java/io/spring/start/site/ProjectGenerationIntegrationTests.java b/start-site/src/test/java/io/spring/start/site/ProjectGenerationIntegrationTests.java index e4c3d219f1c..314484e5828 100644 --- a/start-site/src/test/java/io/spring/start/site/ProjectGenerationIntegrationTests.java +++ b/start-site/src/test/java/io/spring/start/site/ProjectGenerationIntegrationTests.java @@ -17,17 +17,11 @@ package io.spring.start.site; import java.io.IOException; -import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Queue; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Stream; import io.spring.initializr.generator.buildsystem.BuildSystem; @@ -48,7 +42,8 @@ import io.spring.initializr.web.project.ProjectGenerationInvoker; import io.spring.initializr.web.project.ProjectRequest; import io.spring.initializr.web.project.WebProjectRequest; -import io.spring.start.site.test.TemporaryFiles; +import io.spring.start.testsupport.Homes; +import io.spring.start.testsupport.TemporaryFiles; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; import org.junit.jupiter.api.parallel.Execution; @@ -61,7 +56,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.test.context.ActiveProfiles; -import org.springframework.util.Assert; import static org.assertj.core.api.Assertions.assertThat; @@ -78,10 +72,6 @@ @Execution(ExecutionMode.CONCURRENT) class ProjectGenerationIntegrationTests { - private static final Homes mavenHomes = new Homes("maven-home"); - - private static final Homes gradleHomes = new Homes("gradle-home"); - private final ProjectGenerationInvoker invoker; private final InitializrMetadata metadata; @@ -157,16 +147,16 @@ void projectBuilds(Version bootVersion, Packaging packaging, Language language, private Path acquireHome(BuildSystem buildSystem) { return switch (buildSystem.id()) { - case MavenBuildSystem.ID -> mavenHomes.acquire(); - case GradleBuildSystem.ID -> gradleHomes.acquire(); + case MavenBuildSystem.ID -> Homes.MAVEN.acquire(); + case GradleBuildSystem.ID -> Homes.GRADLE.acquire(); default -> throw new IllegalStateException("Unknown build system '%s'".formatted(buildSystem.id())); }; } private void releaseHome(BuildSystem buildSystem, Path home) { switch (buildSystem.id()) { - case MavenBuildSystem.ID -> mavenHomes.release(home); - case GradleBuildSystem.ID -> gradleHomes.release(home); + case MavenBuildSystem.ID -> Homes.MAVEN.release(home); + case GradleBuildSystem.ID -> Homes.GRADLE.release(home); default -> throw new IllegalStateException("Unknown build system '%s'".formatted(buildSystem.id())); } } @@ -186,47 +176,4 @@ private ProcessBuilder createProcessBuilder(BuildSystem buildSystem, Path home) throw new IllegalStateException("Unknown build system '%s'".formatted(buildSystem.id())); } - private static final class Homes { - - private final Set homes = ConcurrentHashMap.newKeySet(); - - private final Queue freeHomes = new ConcurrentLinkedQueue<>(); - - private final AtomicInteger counter = new AtomicInteger(); - - private final String prefix; - - private Homes(String prefix) { - this.prefix = prefix; - } - - Path acquire() { - Path home = this.freeHomes.poll(); - if (home == null) { - home = createTempDirectory(); - this.homes.add(home); - } - return home; - } - - void release(Path home) { - Assert.state(this.homes.contains(home), "Invalid home '%s'".formatted(home)); - this.freeHomes.add(home); - } - - private Path createTempDirectory() { - try { - Path path = TemporaryFiles.getTempDir() - .resolve("homes") - .resolve(this.prefix + "-" + this.counter.getAndIncrement()); - Files.createDirectories(path); - return path; - } - catch (IOException ex) { - throw new UncheckedIOException("Failed to create temp directory", ex); - } - } - - } - } diff --git a/start-site/src/test/java/io/spring/start/site/test/TestMavenVersionResolver.java b/start-site/src/test/java/io/spring/start/site/test/TestMavenVersionResolver.java index 3c6fedb07fd..49cac911690 100644 --- a/start-site/src/test/java/io/spring/start/site/test/TestMavenVersionResolver.java +++ b/start-site/src/test/java/io/spring/start/site/test/TestMavenVersionResolver.java @@ -19,6 +19,7 @@ import java.util.Map; import io.spring.initializr.versionresolver.MavenVersionResolver; +import io.spring.start.testsupport.TemporaryFiles; /** * A {@link MavenVersionResolver} for tests, which uses a fixed directory for the cache. diff --git a/start-site/src/test/resources/junit-platform.properties b/start-site/src/test/resources/junit-platform.properties index 308777dedba..5c068dfbba1 100644 --- a/start-site/src/test/resources/junit-platform.properties +++ b/start-site/src/test/resources/junit-platform.properties @@ -16,4 +16,4 @@ junit.jupiter.execution.parallel.enabled=true junit.jupiter.execution.parallel.config.strategy=custom -junit.jupiter.execution.parallel.config.custom.class=io.spring.start.site.test.JunitMaxParallelismStrategy +junit.jupiter.execution.parallel.config.custom.class=io.spring.start.testsupport.JunitMaxParallelismStrategy diff --git a/test-support/pom.xml b/test-support/pom.xml new file mode 100644 index 00000000000..29137b934e6 --- /dev/null +++ b/test-support/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + io.spring.start + start-parent + ${revision} + + test-support + Support utilities for tests + + + + org.springframework + spring-core + + + org.junit.jupiter + junit-jupiter-engine + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + + io.spring.javaformat + spring-javaformat-maven-plugin + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + false + + + + + + diff --git a/test-support/src/main/java/io/spring/start/testsupport/Homes.java b/test-support/src/main/java/io/spring/start/testsupport/Homes.java new file mode 100644 index 00000000000..a13f24dabb8 --- /dev/null +++ b/test-support/src/main/java/io/spring/start/testsupport/Homes.java @@ -0,0 +1,99 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.testsupport; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Queue; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicInteger; + +import org.springframework.util.Assert; + +/** + * Manages Maven and Gradle home directories. + *

    + * The directories are reused, if possible. If no home is available for reuse, a new one + * will be created. + * + * @author Moritz Halbritter + */ +public class Homes { + + /** + * Maven homes. + */ + public static final Homes MAVEN = new Homes("maven-home"); + + /** + * Gradle homes. + */ + public static final Homes GRADLE = new Homes("gradle-home"); + + private final Set homes = ConcurrentHashMap.newKeySet(); + + private final Queue freeHomes = new ConcurrentLinkedQueue<>(); + + private final AtomicInteger counter = new AtomicInteger(); + + private final String prefix; + + public Homes(String prefix) { + this.prefix = prefix; + } + + /** + * Acquires a path to the home. Callers are responsible to call {@link #release(Path)} + * when done. + * @return the path to the home + */ + public Path acquire() { + Path home = this.freeHomes.poll(); + if (home == null) { + home = createTempDirectory(); + this.homes.add(home); + } + return home; + } + + /** + * Releases a path to the home. + * @param home the path to the home + */ + public void release(Path home) { + Assert.state(this.homes.contains(home), "Invalid home '%s'".formatted(home)); + this.freeHomes.add(home); + } + + private Path createTempDirectory() { + try { + Path path = TemporaryFiles.getTempDir() + .resolve("homes") + .resolve(this.prefix + "-" + this.counter.getAndIncrement()); + Files.createDirectories(path); + return path; + } + catch (IOException ex) { + throw new UncheckedIOException("Failed to create temp directory", ex); + } + } + +} diff --git a/start-site/src/test/java/io/spring/start/site/test/JunitMaxParallelismStrategy.java b/test-support/src/main/java/io/spring/start/testsupport/JunitMaxParallelismStrategy.java similarity index 98% rename from start-site/src/test/java/io/spring/start/site/test/JunitMaxParallelismStrategy.java rename to test-support/src/main/java/io/spring/start/testsupport/JunitMaxParallelismStrategy.java index 97d3c63bbf4..9b0e22f19fb 100644 --- a/start-site/src/test/java/io/spring/start/site/test/JunitMaxParallelismStrategy.java +++ b/test-support/src/main/java/io/spring/start/testsupport/JunitMaxParallelismStrategy.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.spring.start.site.test; +package io.spring.start.testsupport; import java.util.concurrent.ForkJoinPool; import java.util.function.Predicate; diff --git a/start-site/src/test/java/io/spring/start/site/test/TemporaryFiles.java b/test-support/src/main/java/io/spring/start/testsupport/TemporaryFiles.java similarity index 98% rename from start-site/src/test/java/io/spring/start/site/test/TemporaryFiles.java rename to test-support/src/main/java/io/spring/start/testsupport/TemporaryFiles.java index 70151d6053c..92fab023fe3 100644 --- a/start-site/src/test/java/io/spring/start/site/test/TemporaryFiles.java +++ b/test-support/src/main/java/io/spring/start/testsupport/TemporaryFiles.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package io.spring.start.site.test; +package io.spring.start.testsupport; import java.io.IOException; import java.nio.file.Files; diff --git a/test-support/src/main/java/io/spring/start/testsupport/package-info.java b/test-support/src/main/java/io/spring/start/testsupport/package-info.java new file mode 100644 index 00000000000..1399b403a46 --- /dev/null +++ b/test-support/src/main/java/io/spring/start/testsupport/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Test support classes. + */ +package io.spring.start.testsupport; diff --git a/test-support/src/test/java/io/spring/start/testsupport/HomesTests.java b/test-support/src/test/java/io/spring/start/testsupport/HomesTests.java new file mode 100644 index 00000000000..3411d61ad40 --- /dev/null +++ b/test-support/src/test/java/io/spring/start/testsupport/HomesTests.java @@ -0,0 +1,43 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.testsupport; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link Homes}. + * + * @author Moritz Halbritter + */ +class HomesTests { + + @Test + void shouldAcquireNewHome() { + Homes homes = new Homes("test"); + Path home1 = homes.acquire(); + Path home2 = homes.acquire(); + assertThat(home1).isNotEqualTo(home2); + homes.release(home1); + Path home3 = homes.acquire(); + assertThat(home3).isEqualTo(home1); + } + +} From ce9eb98a539f0ad19d69dc2b48bfda9a84c12c57 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 21 Aug 2024 10:31:55 +0200 Subject: [PATCH 093/109] Remove unused code --- .../start/site/MetadataVerificationTests.java | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java b/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java index dbc1b0b400e..e77d6ddd2d2 100644 --- a/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java +++ b/start-site-verification/src/test/java/io/spring/start/site/MetadataVerificationTests.java @@ -84,24 +84,8 @@ void dependencyStarterConfigurationIsCorrect(Dependency dependency, List collectDependencies(Dependency dependency, List boms, List repositories) { - try { - return DependencyResolver.resolveDependencies(Homes.MAVEN, dependency.getGroupId(), - dependency.getArtifactId(), dependency.getVersion(), boms, repositories); - } - catch (RuntimeException ex) { - // ActiveMQ starter does not exist with Spring Boot 3.0 - if (ex.getMessage().contains("rg.springframework.boot:spring-boot-starter-activemq:pom:")) { - return null; - } - // Known issue with Spring Cloud Contract to be fixed in the next release - // See - // https://github.com/spring-cloud/spring-cloud-contract/commit/13c7d477fbbc856b319600874a11aabcef283df7 - if (ex.getMessage() - .contains("org.springframework.cloud:spring-cloud-starter-contract-verifier:pom:2.2.3.RELEASE")) { - return null; - } - throw ex; - } + return DependencyResolver.resolveDependencies(Homes.MAVEN, dependency.getGroupId(), dependency.getArtifactId(), + dependency.getVersion(), boms, repositories); } Stream parameters() { From 15c8f233e9e03c14048186157a9e28954194aab8 Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Mon, 26 Aug 2024 09:46:37 -0600 Subject: [PATCH 094/109] Upgrade to Spring Boot Admin 3.3.3 See gh-1561 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index e5e751cd380..2b3a1496d96 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -49,7 +49,7 @@ initializr: - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 3.2.3 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 3.3.2 + version: 3.3.3 netflix-dgs: groupId: com.netflix.graphql.dgs artifactId: graphql-dgs-platform-dependencies From 01eeac1ef15dc9c94ccd7cc164d370cd5937396e Mon Sep 17 00:00:00 2001 From: Craig Walls Date: Tue, 27 Aug 2024 10:31:17 -0600 Subject: [PATCH 095/109] Upgrade Spring AI to 1.0.0-M2 See gh-1562 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 2b3a1496d96..1190a9bf46d 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -88,7 +88,7 @@ initializr: versionProperty: spring-ai.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 1.0.0-M1 + version: 1.0.0-M2 repositories: spring-milestones spring-cloud: groupId: org.springframework.cloud From 9833ffff362d0b09d4600704cbb617c842d3e3b2 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 28 Aug 2024 09:38:56 +0200 Subject: [PATCH 096/109] Add comment to clarify which version of Azure/login we use --- .github/workflows/build-and-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/build-and-deploy.yml index 26f143e065b..0ee8f52314c 100644 --- a/.github/workflows/build-and-deploy.yml +++ b/.github/workflows/build-and-deploy.yml @@ -36,7 +36,7 @@ jobs: run: ./mvnw --batch-mode --update-snapshots verify - name: Set up Azure - uses: azure/login@6c251865b4e6290e7b78be643ea2d005bc51f69a + uses: azure/login@6c251865b4e6290e7b78be643ea2d005bc51f69a # v2.1.1 with: creds: ${{ secrets.AZURE_CREDENTIALS_SPRING_IO }} From a279ed086bd10cdbcd31f0810fdd33b47401ed6c Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 28 Aug 2024 09:40:38 +0200 Subject: [PATCH 097/109] Update Maven to 3.9.9 Also updates the wrapper to 3.3.2 Closes gh-1564 --- .mvn/wrapper/maven-wrapper.properties | 5 +++-- mvnw | 17 +++++++++++++---- mvnw.cmd | 5 ++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index fe378a151db..d58dfb70bab 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -14,5 +14,6 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -wrapperVersion=3.3.1 -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/mvnw b/mvnw index ac8e247e1c2..19529ddf8c6 100755 --- a/mvnw +++ b/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.1 +# Apache Maven Wrapper startup batch script, version 3.3.2 # # Optional ENV vars # ----------------- @@ -97,11 +97,19 @@ die() { exit 1 } +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties while IFS="=" read -r key value; do case "${key-}" in - distributionUrl) distributionUrl="${value-}" ;; - distributionSha256Sum) distributionSha256Sum="${value-}" ;; + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; esac done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" [ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" @@ -131,7 +139,8 @@ esac distributionUrlName="${distributionUrl##*/}" distributionUrlNameMain="${distributionUrlName%.*}" distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_HOME="$HOME/.m2/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" exec_maven() { unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : diff --git a/mvnw.cmd b/mvnw.cmd index 7b0c0943b22..249bdf38222 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -19,7 +19,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.1 +@REM Apache Maven Wrapper startup batch script, version 3.3.2 @REM @REM Optional ENV vars @REM MVNW_REPOURL - repo url base for downloading maven distribution @@ -79,6 +79,9 @@ if ($env:MVNW_REPOURL) { $distributionUrlName = $distributionUrl -replace '^.*/','' $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' $MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} $MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" From 9c5e72b8a3ca3d941a813ead2e6d10c35451d0d4 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 28 Aug 2024 10:03:19 +0200 Subject: [PATCH 098/109] Upgrade to Spring Boot 3.3.3 Closes gh-1565 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6e466dea7e5..1a0c232bf91 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.2 + 3.3.3 io.spring.start start-parent From efe2ccffd81bea6f3e33a5ed8ff11a1bf841c140 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Wed, 28 Aug 2024 10:06:01 +0200 Subject: [PATCH 099/109] Upgrade to Netflix DGS 9.1.0 Closes gh-1566 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 1190a9bf46d..7b84148f516 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -58,7 +58,7 @@ initializr: - compatibilityRange: "[3.2.0,3.3.0-M1)" version: 8.7.1 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 9.0.4 + version: 9.1.0 sentry: groupId: io.sentry artifactId: sentry-bom From d986d1c5f1aee6499b34bc7c1ccebe64c3b95853 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Wed, 28 Aug 2024 10:06:41 +0200 Subject: [PATCH 100/109] Upgrade to DGS Codegen Maven plugin 1.61.5 Closes gh-1567 --- .../extension/dependency/dgs/DgsCodegenVersionResolver.java | 2 +- .../dgs/DgsCodegenProjectGenerationConfigurationTests.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenVersionResolver.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenVersionResolver.java index d126cc9e463..7fd96a0c266 100644 --- a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenVersionResolver.java +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenVersionResolver.java @@ -36,7 +36,7 @@ static String resolve(InitializrMetadata metadata, Version platformVersion, Buil } else if (MavenBuildSystem.ID.equals(build.id())) { // https://github.com/deweyjose/graphqlcodegen/releases - return "1.50"; + return "1.61.5"; } throw new IllegalArgumentException("Could not resolve DGS Codegen version for build system " + build.id()); } diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenProjectGenerationConfigurationTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenProjectGenerationConfigurationTests.java index 538c2a573f4..cda1a9a94f4 100644 --- a/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenProjectGenerationConfigurationTests.java +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsCodegenProjectGenerationConfigurationTests.java @@ -89,7 +89,7 @@ void mavenBuildConfiguresCodegenPlugin() { " ", " io.github.deweyjose", " graphqlcodegen-maven-plugin", - " 1.50", + " 1.61.5", " ", " ", " dgs-codegen", From a7c1d9cc59f12d70832769d8edc5991d248ec3e7 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Wed, 28 Aug 2024 10:08:51 +0200 Subject: [PATCH 101/109] Add DGS testing dependency automatically for DGS apps Closes gh-1563 --- .../dependency/dgs/DgsBuildCustomizer.java | 40 ++++++++++++++++ .../DgsProjectGenerationConfiguration.java | 39 +++++++++++++++ .../main/resources/META-INF/spring.factories | 1 + .../dgs/DgsBuildCustomizerTests.java | 47 +++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizer.java create mode 100644 start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsProjectGenerationConfiguration.java create mode 100644 start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizerTests.java diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizer.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizer.java new file mode 100644 index 00000000000..349ba5b9213 --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizer.java @@ -0,0 +1,40 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.dgs; + +import io.spring.initializr.generator.buildsystem.Build; +import io.spring.initializr.generator.buildsystem.Dependency; +import io.spring.initializr.generator.buildsystem.DependencyScope; +import io.spring.initializr.generator.spring.build.BuildCustomizer; + +/** + * A {@link BuildCustomizer} that automatically adds + * "graphql-dgs-spring-graphql-starter-test" when the {@code dgs} dependency is present. + * + * @author Brian Clozel + */ +class DgsBuildCustomizer implements BuildCustomizer { + + @Override + public void customize(Build build) { + build.dependencies() + .add("graphql-dgs-spring-graphql-starter-test", + Dependency.withCoordinates("com.netflix.graphql.dgs", "graphql-dgs-spring-graphql-starter-test") + .scope(DependencyScope.TEST_COMPILE)); + } + +} diff --git a/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsProjectGenerationConfiguration.java b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsProjectGenerationConfiguration.java new file mode 100644 index 00000000000..be1387b6c1c --- /dev/null +++ b/start-site/src/main/java/io/spring/start/site/extension/dependency/dgs/DgsProjectGenerationConfiguration.java @@ -0,0 +1,39 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.dgs; + +import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency; +import io.spring.initializr.generator.project.ProjectGenerationConfiguration; + +import org.springframework.context.annotation.Bean; + +/** + * {@link ProjectGenerationConfiguration} for generation of projects that use the Netflix + * DGS. + * + * @author Brian Clozel + */ +@ProjectGenerationConfiguration +@ConditionalOnRequestedDependency("netflix-dgs") +class DgsProjectGenerationConfiguration { + + @Bean + DgsBuildCustomizer dgsBuildCustomizer() { + return new DgsBuildCustomizer(); + } + +} diff --git a/start-site/src/main/resources/META-INF/spring.factories b/start-site/src/main/resources/META-INF/spring.factories index f2a58132499..40924849fc3 100644 --- a/start-site/src/main/resources/META-INF/spring.factories +++ b/start-site/src/main/resources/META-INF/spring.factories @@ -7,6 +7,7 @@ io.spring.start.site.extension.dependency.activemq.ActiveMQProjectGenerationConf io.spring.start.site.extension.dependency.activemq.ArtemisProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.cassandra.CassandraProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.derby.DerbyProjectGenerationConfiguration,\ +io.spring.start.site.extension.dependency.dgs.DgsProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.dgs.DgsCodegenProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.dockercompose.DockerComposeProjectGenerationConfiguration,\ io.spring.start.site.extension.dependency.elasticsearch.ElasticsearchProjectGenerationConfiguration,\ diff --git a/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizerTests.java b/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizerTests.java new file mode 100644 index 00000000000..0dd86da5b96 --- /dev/null +++ b/start-site/src/test/java/io/spring/start/site/extension/dependency/dgs/DgsBuildCustomizerTests.java @@ -0,0 +1,47 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.start.site.extension.dependency.dgs; + +import io.spring.initializr.metadata.Dependency; +import io.spring.initializr.web.project.ProjectRequest; +import io.spring.start.site.extension.AbstractExtensionTests; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class DgsBuildCustomizerTests extends AbstractExtensionTests { + + private Dependency dgsTest; + + @BeforeEach + void setup() { + this.dgsTest = Dependency.withId("graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs", + "graphql-dgs-spring-graphql-starter-test"); + this.dgsTest.setScope(Dependency.SCOPE_TEST); + } + + @Test + void shouldAddTestingDependency() { + ProjectRequest request = createProjectRequest("web", "netflix-dgs"); + assertThat(mavenPom(request)).hasDependency(Dependency.createSpringBootStarter("web")) + .hasDependency(Dependency.createSpringBootStarter("test", Dependency.SCOPE_TEST)) + .hasDependency(this.dgsTest) + .hasDependenciesSize(4); + } + +} From 728b4cd2b72b21ae323291035fc5712e082600d1 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Wed, 28 Aug 2024 21:02:48 +0200 Subject: [PATCH 102/109] Upgrade to latest Spring Modulith releases Extend general compatibility to Spring Boot 3.4 (covered by milestones) See gh-1568 --- start-site/src/main/resources/application.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 7b84148f516..67bc97a9519 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -130,9 +130,12 @@ initializr: versionProperty: spring-modulith.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 1.1.6 + version: 1.1.8 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 1.2.1 + version: 1.2.3 + - compatibilityRange: "[3.4.0-M1,3.5.0-M1)" + version: 1.3.0-M2 + repositories: spring-milestones spring-shell: groupId: org.springframework.shell artifactId: spring-shell-dependencies @@ -216,7 +219,7 @@ initializr: - name: Spring Modulith id: modulith bom: spring-modulith - compatibilityRange: "[3.2.0,3.4.0-M1)" + compatibilityRange: "[3.2.0,3.5.0-M1)" group-id: org.springframework.modulith artifact-id: spring-modulith-starter-core description: Support for building modular monolithic applications. From ef846792d95a3bf1451ceaa24e0d084c5c059fa6 Mon Sep 17 00:00:00 2001 From: Wim Deblauwe Date: Thu, 29 Aug 2024 08:14:25 +0200 Subject: [PATCH 103/109] Update htmx-spring-boot to 3.5.0 See gh-1569 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 67bc97a9519..bf2f6d04735 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -362,7 +362,7 @@ initializr: artifactId: htmx-spring-boot description: Build modern user interfaces with the simplicity and power of hypertext. compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 3.4.1 + version: 3.5.0 links: - rel: reference href: https://github.com/wimdeblauwe/htmx-spring-boot From d2102ff7c4f55f8a25f5998e603e96cc4c532fcb Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 29 Aug 2024 07:31:45 -0600 Subject: [PATCH 104/109] Upgrade to Spring Shell 3.2.7 and 3.3.2 See gh-1571 --- start-site/src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index bf2f6d04735..8a3c0bf7950 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -142,9 +142,9 @@ initializr: versionProperty: spring-shell.version mappings: - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 3.2.6 + version: 3.2.7 - compatibilityRange: "[3.3.0,3.4.0-M1)" - version: 3.3.1 + version: 3.3.2 timefold-solver: groupId: ai.timefold.solver artifactId: timefold-solver-bom From 4ae354f038c625392fd33eb71d6d881ccca610ae Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 29 Aug 2024 07:35:28 -0600 Subject: [PATCH 105/109] Upgrade to Vaadin 24.4.10 See gh-1572 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 8a3c0bf7950..47edcb790a2 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -158,7 +158,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.9 + version: 24.4.10 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From d8791aa41b07ac447a28fd303972e0383f288f12 Mon Sep 17 00:00:00 2001 From: ferclager <17533449+ferclager@users.noreply.github.com> Date: Thu, 29 Aug 2024 07:24:05 -0600 Subject: [PATCH 106/109] Upgrade to Solace Spring Boot 2.2.0 See gh-1570 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 47edcb790a2..4c9f87432c1 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -72,7 +72,7 @@ initializr: versionProperty: solace-spring-boot.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 2.1.1 + version: 2.2.0 solace-spring-cloud: groupId: com.solace.spring.cloud artifactId: solace-spring-cloud-bom From 1c825ed0bc46cac0bd5f43a3f1bac53d3d465608 Mon Sep 17 00:00:00 2001 From: Zhe Sun <31067185+ZheSun88@users.noreply.github.com> Date: Tue, 3 Sep 2024 08:40:45 +0300 Subject: [PATCH 107/109] Upgrade to Vaadin 24.4.11 See gh-1573 --- start-site/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 4c9f87432c1..0d438aa0739 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -158,7 +158,7 @@ initializr: versionProperty: vaadin.version mappings: - compatibilityRange: "[3.2.0,3.4.0-M1)" - version: 24.4.10 + version: 24.4.11 gradle: dependency-management-plugin-version: 1.0.14.RELEASE platform: From 9221bb1f47e38265c33edaad2eeae099c25f85ef Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Mon, 17 Jun 2024 15:11:25 -0400 Subject: [PATCH 108/109] Add starter for Spring AI vector store for Oracle See gh-1514 --- start-site/src/main/resources/application.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 0d438aa0739..52b1f7630d9 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -1518,6 +1518,16 @@ initializr: links: - rel: reference href: https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html + - name: Oracle Vector Database + id: spring-ai-vectordb-oracle + group-id: org.springframework.ai + artifact-id: spring-ai-oracle-store-spring-boot-starter + description: Spring AI vector database support for Oracle. Enables storing, indexing and searching vector embeddings in Oracle Database 23ai. + bom: spring-ai + starter: true + links: + - rel: reference + href: https://docs.spring.io/spring-ai/reference/api/vectordbs/oracle.html - name: PGvector Vector Database id: spring-ai-vectordb-pgvector group-id: org.springframework.ai From d2b676d09bf41254912cb9226036a5c4314635c5 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 3 Sep 2024 09:32:24 +0200 Subject: [PATCH 109/109] Upgrade to Spring Cloud GCP 5.6.0 Closes gh-1574 --- start-site/src/main/resources/application.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/start-site/src/main/resources/application.yml b/start-site/src/main/resources/application.yml index 52b1f7630d9..1c364b78d23 100644 --- a/start-site/src/main/resources/application.yml +++ b/start-site/src/main/resources/application.yml @@ -114,8 +114,8 @@ initializr: versionProperty: spring-cloud-gcp.version additionalBoms: [ spring-cloud ] mappings: - - compatibilityRange: "[3.2.0,3.3.0-M1)" - version: 5.5.0 + - compatibilityRange: "[3.2.0,3.4.0-M1)" + version: 5.6.0 spring-cloud-services: groupId: io.pivotal.spring.cloud artifactId: spring-cloud-services-dependencies @@ -1381,7 +1381,7 @@ initializr: description: Azure Storage Sample - name: Google Cloud bom: spring-cloud-gcp - compatibilityRange: "[3.2.0,3.3.0-M1)" + compatibilityRange: "[3.2.0,3.4.0-M1)" content: - name: Google Cloud Support id: cloud-gcp