getRouteComponent(Component component) {
+ if (component.getClass().isAnnotationPresent(Route.class)) {
+ return Optional.of(component);
+ }
+ if (component.getParent().isPresent()) {
+ return getRouteComponent(component.getParent().get());
+ }
+ return Optional.empty();
+ }
+
}
diff --git a/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java b/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java
index abbff25a419..7b97d072ff1 100644
--- a/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java
+++ b/flow-server/src/main/java/com/vaadin/flow/component/internal/ComponentTracker.java
@@ -119,15 +119,21 @@ public int hashCode() {
}
/**
- * Finds the Java file this location refers to.
+ * Finds the source file this location refers to.
*
* @param configuration
* the application configuration
- * @return the Java file the location refers to, or {@code null}
+ * @return the source file the location refers to, or {@code null}
*/
- public File findJavaFile(AbstractConfiguration configuration) {
+ public File findSourceFile(AbstractConfiguration configuration) {
String cls = className();
- String filenameNoExt = filename().replace(".java", "");
+ int indexOfExt = filename().lastIndexOf(".");
+ String ext = filename().substring(indexOfExt);
+ if (!ext.equals(".java") && !ext.equals(".kt")) {
+ return null;
+ }
+
+ String filenameNoExt = filename().substring(0, indexOfExt);
if (!cls.endsWith(filenameNoExt)) {
// Check for inner class
@@ -141,11 +147,28 @@ public File findJavaFile(AbstractConfiguration configuration) {
}
File src = configuration.getJavaSourceFolder();
+ if (ext.equals(".kt") && src.getPath().endsWith("/java")) {
+ src = new File(src.getPath().substring(0,
+ src.getPath().lastIndexOf("/java")) + "/kotlin");
+ }
File javaFile = new File(src,
- cls.replace(".", File.separator) + ".java");
+ cls.replace(".", File.separator) + ext);
return javaFile;
}
+ /**
+ * Finds the Java file this location refers to.
+ *
+ * @param configuration
+ * the application configuration
+ * @return the Java file the location refers to, or {@code null}
+ * @deprecated use findSourceFile
+ */
+ @Deprecated
+ public File findJavaFile(AbstractConfiguration configuration) {
+ return findSourceFile(configuration);
+ }
+
@Override
public String toString() {
return "Component '" + className + "' at '" + filename + "' ("
diff --git a/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java b/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java
index c5cc329da71..f33939089ea 100644
--- a/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java
+++ b/flow-server/src/main/java/com/vaadin/flow/component/internal/UIInternals.java
@@ -699,12 +699,8 @@ public boolean containsPendingJavascript(String containsFilter) {
*/
public void setTitle(String title) {
assert title != null;
- JavaScriptInvocation invocation = new JavaScriptInvocation("""
- document.title = $0;
- if(window?.Vaadin?.documentTitleSignal) {
- window.Vaadin.documentTitleSignal.value = $0;
- }
- """.stripIndent(), title);
+ JavaScriptInvocation invocation = new JavaScriptInvocation(
+ generateTitleScript().stripIndent(), title);
pendingTitleUpdateCanceler = new PendingJavaScriptInvocation(
getStateTree().getRootNode(), invocation);
@@ -713,6 +709,23 @@ public void setTitle(String title) {
this.title = title;
}
+ private String generateTitleScript() {
+ String setTitleScript = """
+ document.title = $0;
+ if(window?.Vaadin?.documentTitleSignal) {
+ window.Vaadin.documentTitleSignal.value = $0;
+ }
+ """;
+ if (getSession().getConfiguration().isReactEnabled()) {
+ // For react-router we should wait for navigation to finish
+ // before updating the title.
+ setTitleScript = String.format(
+ "if(window.Vaadin.Flow.navigation) { window.addEventListener('vaadin-navigated', function(event) {%s}, {once:true}); } else { %1$s }",
+ setTitleScript);
+ }
+ return setTitleScript;
+ }
+
/**
* Records the text content of the title tag in the application shell.
*
diff --git a/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java b/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java
index 650d7e48ced..73776c031f8 100644
--- a/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java
+++ b/flow-server/src/main/java/com/vaadin/flow/hotswap/Hotswapper.java
@@ -46,6 +46,8 @@
import com.vaadin.flow.server.SessionDestroyListener;
import com.vaadin.flow.server.SessionInitEvent;
import com.vaadin.flow.server.SessionInitListener;
+import com.vaadin.flow.server.UIInitEvent;
+import com.vaadin.flow.server.UIInitListener;
import com.vaadin.flow.server.VaadinService;
import com.vaadin.flow.server.VaadinSession;
@@ -83,7 +85,7 @@
* @since 24.5
*/
public class Hotswapper implements ServiceDestroyListener, SessionInitListener,
- SessionDestroyListener {
+ SessionDestroyListener, UIInitListener {
private static final Logger LOGGER = LoggerFactory
.getLogger(Hotswapper.class);
private final Set sessions = ConcurrentHashMap.newKeySet();
@@ -413,6 +415,11 @@ public void serviceDestroy(ServiceDestroyEvent event) {
sessions.clear();
}
+ @Override
+ public void uiInit(UIInitEvent event) {
+ sessions.add(event.getUI().getSession());
+ }
+
/**
* Register the hotwsapper entry point for the given {@link VaadinService}.
*
@@ -428,6 +435,7 @@ public void serviceDestroy(ServiceDestroyEvent event) {
public static Optional register(VaadinService vaadinService) {
if (!vaadinService.getDeploymentConfiguration().isProductionMode()) {
Hotswapper hotswapper = new Hotswapper(vaadinService);
+ vaadinService.addUIInitListener(hotswapper);
vaadinService.addSessionInitListener(hotswapper);
vaadinService.addSessionDestroyListener(hotswapper);
vaadinService.addServiceDestroyListener(hotswapper);
diff --git a/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java b/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java
index 503c0d19329..055d13cf8fc 100644
--- a/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java
+++ b/flow-server/src/main/java/com/vaadin/flow/internal/DevModeHandlerManager.java
@@ -15,10 +15,12 @@
*/
package com.vaadin.flow.internal;
+import java.io.Closeable;
import java.util.Optional;
import java.util.Set;
import com.vaadin.flow.di.Lookup;
+import com.vaadin.flow.server.Command;
import com.vaadin.flow.server.VaadinContext;
import com.vaadin.flow.server.VaadinService;
import com.vaadin.flow.server.startup.VaadinInitializerException;
@@ -49,7 +51,7 @@ public interface DevModeHandlerManager {
* @param classes
* classes to check for npm- and js modules
* @param context
- * servlet context we are running in
+ * Vaadin Context we are running in
*
* @throws VaadinInitializerException
* if dev mode can't be initialized
@@ -87,6 +89,24 @@ void initDevModeHandler(Set> classes, VaadinContext context)
*/
void launchBrowserInDevelopmentMode(String url);
+ /**
+ * Sets the application URL for the given application.
+ *
+ * This is only called if the URL is known.
+ *
+ * @param applicationUrl
+ * the application url
+ */
+ void setApplicationUrl(String applicationUrl);
+
+ /**
+ * Registers a command that will run when DevModeHandler is shut down
+ *
+ * @param command
+ * the command to run
+ */
+ void registerShutdownCommand(Command command);
+
/**
* Gets the {@link DevModeHandler}.
*
diff --git a/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java b/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java
index 19025c3f4a6..dab5401eac5 100644
--- a/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java
+++ b/flow-server/src/main/java/com/vaadin/flow/router/BeforeEvent.java
@@ -58,6 +58,7 @@ public abstract class BeforeEvent extends EventObject {
private String unknownReroute = null;
private String externalForwardUrl = null;
+ private boolean useForwardCallback;
/**
* Constructs event from a NavigationEvent.
@@ -340,6 +341,30 @@ public void forwardTo(Class extends Component> forwardTargetComponent) {
RouteParameters.empty(), null));
}
+ /**
+ * Forward the navigation to show the given component instead of the
+ * component that is currently about to be displayed.
+ *
+ * This function changes the browser URL as opposed to
+ * rerouteTo()
.
+ *
+ * Note that query parameters of the event are preserved in the forwarded
+ * URL.
+ *
+ * @param forwardTargetComponent
+ * the component type to display, not {@code null}
+ * @param useForwardCallback
+ * {@literal true} to request navigation callback from client
+ */
+ public void forwardTo(Class extends Component> forwardTargetComponent,
+ boolean useForwardCallback) {
+ Objects.requireNonNull(forwardTargetComponent,
+ "forwardTargetComponent cannot be null");
+ this.useForwardCallback = useForwardCallback;
+ forwardTo(getNavigationState(forwardTargetComponent,
+ RouteParameters.empty(), null));
+ }
+
/**
* Forward the navigation to show the given component with given route
* parameter instead of the component that is currently about to be
@@ -1139,6 +1164,17 @@ public ErrorParameter> getErrorParameter() {
return errorParameter;
}
+ /**
+ * Determines is client side callback should be requested when executing
+ * pending forward operation.
+ *
+ * @return {@literal true} if callback should be used,
+ * {@literal false otherwise}
+ */
+ public boolean isUseForwardCallback() {
+ return useForwardCallback;
+ }
+
/**
* Gets the UI this navigation takes place inside.
*
diff --git a/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java b/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java
index bdd1d34b6a2..e9866f9e216 100644
--- a/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java
+++ b/flow-server/src/main/java/com/vaadin/flow/router/internal/AbstractNavigationStateRenderer.java
@@ -737,20 +737,11 @@ private int forwardToExternalUrl(NavigationEvent event,
private int forward(NavigationEvent event, BeforeEvent beforeNavigation) {
NavigationHandler handler = beforeNavigation.getForwardTarget();
- Class extends Component> forwardTargetType = beforeNavigation
- .getForwardTargetType();
-
- List> parentLayouts = RouteUtil
- .getParentLayouts(event.getUI().getRouter().getRegistry(),
- forwardTargetType, beforeNavigation.getForwardUrl());
-
- boolean preserveOnRefreshTarget = isPreserveOnRefreshTarget(
- forwardTargetType, parentLayouts);
-
NavigationEvent newNavigationEvent = getNavigationEvent(event,
beforeNavigation);
newNavigationEvent.getUI().getPage().getHistory().replaceState(null,
- newNavigationEvent.getLocation(), !preserveOnRefreshTarget);
+ newNavigationEvent.getLocation(),
+ beforeNavigation.isUseForwardCallback());
return handler.handle(newNavigationEvent);
}
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java b/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java
index 100f46e10a3..a33042392f8 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java
@@ -187,6 +187,10 @@ public final boolean isEnabled() {
* the Flow view to use as login view
*/
public final void setLoginView(Class extends Component> loginView) {
+ if (loginView == this.loginView) {
+ // Probably hot reload
+ return;
+ }
throwIfLoginViewSet();
this.loginView = loginView;
}
@@ -210,6 +214,11 @@ protected Class extends Component> getLoginView() {
* the frontend view to use as login view
*/
public void setLoginView(String loginUrl) {
+ if (loginUrl == this.loginUrl) {
+ // Probably hot reload
+ return;
+ }
+
throwIfLoginViewSet();
this.loginUrl = loginUrl;
}
@@ -246,7 +255,7 @@ public void beforeEnter(BeforeEnterEvent event) {
if (context.getPrincipal() == null) {
storeRedirectURL(event, request);
if (loginView != null) {
- event.forwardTo(loginView);
+ event.forwardTo(loginView, true);
} else {
if (loginUrl != null) {
event.forwardToUrl(loginUrl);
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java b/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java
index 0a8087c3e93..eb65aa368da 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/auth/ViewAccessChecker.java
@@ -206,7 +206,7 @@ public void beforeEnter(BeforeEnterEvent beforeEnterEvent) {
}
}
if (loginView != null) {
- beforeEnterEvent.forwardTo(loginView);
+ beforeEnterEvent.forwardTo(loginView, true);
} else {
if (loginUrl != null) {
beforeEnterEvent.forwardToUrl(loginUrl);
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java b/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java
index 838fa4f57dc..3a4dda04a44 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/communication/rpc/AbstractRpcInvocationHandler.java
@@ -22,9 +22,14 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.vaadin.flow.component.Component;
+import com.vaadin.flow.component.ComponentUtil;
import com.vaadin.flow.component.PollEvent;
import com.vaadin.flow.component.UI;
+import com.vaadin.flow.dom.Element;
import com.vaadin.flow.internal.StateNode;
+import com.vaadin.flow.internal.nodefeature.ElementData;
+import com.vaadin.flow.router.Route;
import com.vaadin.flow.shared.JsonConstants;
import elemental.json.JsonObject;
@@ -59,21 +64,43 @@ public Optional handle(UI ui, JsonObject invocationJson) {
// ignore RPC requests from the client side for the nodes that are
// invisible, disabled or inert
if (node.isInactive()) {
- getLogger().info("Ignored RPC for invocation handler '{}' from "
- + "the client side for an inactive (disabled or invisible) node id='{}'",
- getClass().getName(), node.getId());
+ logHandlingIgnoredMessage(node, "inactive (disabled or invisible)");
return Optional.empty();
} else if (!allowInert(ui, invocationJson) && node.isInert()) {
- getLogger().info(
- "Ignored RPC for invocation handler '{}' from "
- + "the client side for an inert node id='{}'",
- getClass().getName(), node.getId());
+ logHandlingIgnoredMessage(node, "inert");
return Optional.empty();
} else {
return handleNode(node, invocationJson);
}
}
+ private void logHandlingIgnoredMessage(StateNode node, String reason) {
+ StringBuilder targetInfo = new StringBuilder();
+ if (node != null && node.hasFeature(ElementData.class)) {
+ Element element = Element.get(node);
+ Optional component = element.getComponent();
+ targetInfo.append(" element with tag").append("'")
+ .append(element.getTag()).append("'");
+ if (component.isPresent()) {
+ targetInfo.append(" Component: ").append("'")
+ .append(component.get().getClass().getName())
+ .append("'");
+ Optional routeComponent = ComponentUtil
+ .getRouteComponent(component.get());
+ if (routeComponent.isPresent()) {
+ targetInfo.append(" Route: ").append("'")
+ .append(routeComponent.get().getClass()
+ .getAnnotation(Route.class).value())
+ .append("'");
+ }
+ }
+ }
+ getLogger().info(
+ "Ignored RPC for invocation handler '{}' from "
+ + "the client side for an {} node id='{}'{}",
+ getClass().getName(), reason, node.getId(), targetInfo);
+ }
+
/**
* Checks whether a Poll RPC invocation is valid or not.
*
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java b/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java
index b694d739784..78b44b7d463 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/frontend/FrontendTools.java
@@ -66,7 +66,7 @@ public class FrontendTools {
* the installed version is older than {@link #SUPPORTED_NODE_VERSION}, i.e.
* {@value #SUPPORTED_NODE_MAJOR_VERSION}.{@value #SUPPORTED_NODE_MINOR_VERSION}.
*/
- public static final String DEFAULT_NODE_VERSION = "v20.17.0";
+ public static final String DEFAULT_NODE_VERSION = "v22.9.0";
/**
* This is the version shipped with the default Node version.
*/
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java b/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java
index 6f173dded0d..7c24e4d1c52 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/frontend/TaskGenerateReactFiles.java
@@ -20,6 +20,7 @@
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
+import java.util.Set;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;
@@ -28,10 +29,14 @@
import org.slf4j.LoggerFactory;
import com.vaadin.flow.internal.StringUtil;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.ExecutionFailedException;
import com.vaadin.flow.server.Version;
+import elemental.json.Json;
+import elemental.json.JsonArray;
+import elemental.json.JsonObject;
import static com.vaadin.flow.server.frontend.FileIOUtils.compareIgnoringIndentationEOLAndWhiteSpace;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -102,6 +107,7 @@ function build() {
private static final String VAADIN_REACT_TSX = "vaadin-react.tsx";
private static final String REACT_ADAPTER_TEMPLATE = "ReactAdapter.template";
private static final String REACT_ADAPTER_TSX = "ReactAdapter.tsx";
+ private static final String LAYOUTS_JSON = "layouts.json";
static final String FLOW_FLOW_TSX = "flow/" + FLOW_TSX;
static final String FLOW_REACT_ADAPTER_TSX = "flow/" + REACT_ADAPTER_TSX;
private static final String ROUTES_JS_IMPORT_PATH_TOKEN = "%routesJsImportPath%";
@@ -158,6 +164,8 @@ private void doExecute() throws ExecutionFailedException {
writeFile(flowTsx, getFileContent(FLOW_TSX));
writeFile(vaadinReactTsx,
getVaadinReactTsContent(routesTsx.exists()));
+ writeFile(new File(frontendGeneratedFolder, LAYOUTS_JSON),
+ layoutsContent());
if (fileAvailable(REACT_ADAPTER_TEMPLATE)) {
String reactAdapterContent = getFileContent(
REACT_ADAPTER_TEMPLATE);
@@ -193,6 +201,19 @@ && serverRoutesAvailable()) {
}
}
+ private String layoutsContent() {
+ JsonArray availableLayouts = Json.createArray();
+ Set> layoutClasses = options.getClassFinder()
+ .getAnnotatedClasses(Layout.class);
+ for (Class> layout : layoutClasses) {
+ JsonObject layoutObject = Json.createObject();
+ layoutObject.put("path",
+ layout.getAnnotation(Layout.class).value());
+ availableLayouts.set(availableLayouts.length(), layoutObject);
+ }
+ return availableLayouts.toJson();
+ }
+
private void cleanup() throws ExecutionFailedException {
try {
File frontendDirectory = options.getFrontendDirectory();
@@ -204,7 +225,9 @@ private void cleanup() throws ExecutionFailedException {
FLOW_REACT_ADAPTER_TSX);
File frontendGeneratedFolderRoutesTsx = new File(
frontendGeneratedFolder, FrontendUtils.ROUTES_TSX);
+ File layoutsJson = new File(frontendGeneratedFolder, LAYOUTS_JSON);
FileUtils.deleteQuietly(flowTsx);
+ FileUtils.deleteQuietly(layoutsJson);
FileUtils.deleteQuietly(vaadinReactTsx);
FileUtils.deleteQuietly(reactAdapterTsx);
FileUtils.deleteQuietly(frontendGeneratedFolderRoutesTsx);
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java b/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java
index 66070f2e0d1..b8a1cfd80b4 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependencies.java
@@ -51,6 +51,7 @@
import com.vaadin.flow.internal.ReflectTools;
import com.vaadin.flow.router.DefaultRoutePathProvider;
import com.vaadin.flow.router.HasErrorParameter;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.router.internal.DependencyTrigger;
import com.vaadin.flow.server.LoadDependenciesOnStartup;
@@ -465,6 +466,11 @@ private void collectEntryPoints(boolean generateEmbeddableWebComponents)
addInternalEntryPoint(initListener);
}
+ for (Class> layout : getFinder().getAnnotatedClasses(
+ getFinder().loadClass(Layout.class.getName()))) {
+ addInternalEntryPoint(layout);
+ }
+
for (Class> appShell : getFinder().getSubTypesOf(
getFinder().loadClass(AppShellConfigurator.class.getName()))) {
addInternalEntryPoint(appShell);
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java b/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java
index 2ac6ba3e7b2..102ccc944aa 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/menu/MenuRegistry.java
@@ -21,12 +21,15 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
+import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
@@ -41,6 +44,7 @@
import com.vaadin.flow.component.Component;
import com.vaadin.flow.router.BeforeEnterListener;
+import com.vaadin.flow.router.MenuData;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.RouteConfiguration;
import com.vaadin.flow.router.RouteData;
@@ -72,7 +76,48 @@ public class MenuRegistry {
* @return routes with view information
*/
public static Map collectMenuItems() {
- return new MenuRegistry().getMenuItems(true);
+ Map menuRoutes = new MenuRegistry()
+ .getMenuItems(true);
+ menuRoutes.entrySet()
+ .removeIf(entry -> Optional.ofNullable(entry.getValue())
+ .map(AvailableViewInfo::menu).map(MenuData::isExclude)
+ .orElse(false));
+ return menuRoutes;
+ }
+
+ /**
+ * Collect ordered list of views with menu annotation for automatic menu
+ * population. All client views are collected and any accessible server
+ * views.
+ *
+ * @return ordered routes with view information
+ */
+ public static List collectMenuItemsList() {
+ // en-US is used by default here to match with Hilla's
+ // createMenuItems.ts sorting algorithm.
+ return collectMenuItemsList(Locale.forLanguageTag("en-US"));
+ }
+
+ /**
+ * Collect ordered list of views with menu annotation for automatic menu
+ * population. All client views are collected and any accessible server
+ * views.
+ *
+ * @param locale
+ * locale to use for ordering. null for default locale.
+ * @return ordered routes with view information
+ */
+ public static List collectMenuItemsList(Locale locale) {
+ return collectMenuItems().entrySet().stream().map(entry -> {
+ AvailableViewInfo value = entry.getValue();
+ return new AvailableViewInfo(value.title(), value.rolesAllowed(),
+ value.loginRequired(), entry.getKey(), value.lazy(),
+ value.register(), value.menu(), value.children(),
+ value.routeParameters(), value.flowLayout());
+ }).sorted(getMenuOrderComparator(
+ (locale != null ? Collator.getInstance(locale)
+ : Collator.getInstance())))
+ .toList();
}
/**
@@ -467,4 +512,16 @@ public static Map getClientRoutes(
}
return clientItems;
}
+
+ private static Comparator getMenuOrderComparator(
+ Collator collator) {
+ return (o1, o2) -> {
+ int ordersCompareTo = Optional.ofNullable(o1.menu())
+ .map(MenuData::getOrder).orElse(Double.MAX_VALUE)
+ .compareTo(Optional.ofNullable(o2.menu())
+ .map(MenuData::getOrder).orElse(Double.MAX_VALUE));
+ return ordersCompareTo != 0 ? ordersCompareTo
+ : collator.compare(o1.route(), o2.route());
+ };
+ }
}
diff --git a/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java b/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java
index 772dc490558..151e579f452 100644
--- a/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java
+++ b/flow-server/src/main/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializer.java
@@ -19,8 +19,11 @@
import java.io.Serializable;
import java.lang.annotation.Annotation;
+import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -34,6 +37,7 @@
import com.vaadin.flow.router.RouteAlias;
import com.vaadin.flow.router.RouterLayout;
import com.vaadin.flow.router.internal.RouteUtil;
+import com.vaadin.flow.server.InvalidRouteConfigurationException;
import com.vaadin.flow.server.InvalidRouteLayoutConfigurationException;
import com.vaadin.flow.server.PWA;
import com.vaadin.flow.server.VaadinContext;
@@ -96,6 +100,30 @@ private void checkForConflictingAnnotations(VaadinContext context,
}
+ RouteAlias[] aliases = route.getAnnotationsByType(RouteAlias.class);
+ if (aliases.length > 0) {
+ Route routeAnnotation = route.getAnnotation(Route.class);
+ Map stats = Arrays.stream(aliases)
+ .map(RouteAlias::value).collect(Collectors.groupingBy(
+ Function.identity(), Collectors.counting()));
+ if (stats.containsKey(routeAnnotation.value())) {
+ throw new InvalidRouteConfigurationException(String.format(
+ "'%s' declares '@%s' and '@%s' with the same path '%s'",
+ route.getCanonicalName(), Route.class.getSimpleName(),
+ RouteAlias.class.getSimpleName(),
+ routeAnnotation.value()));
+ }
+ String repeatedAliases = stats.entrySet().stream()
+ .filter(e -> e.getValue() > 1).map(Map.Entry::getKey)
+ .collect(Collectors.joining(", "));
+ if (!repeatedAliases.isEmpty()) {
+ throw new InvalidRouteConfigurationException(String.format(
+ "'%s' declares multiple '@%s' with same paths: %s.",
+ route.getCanonicalName(),
+ RouteAlias.class.getSimpleName(), repeatedAliases));
+ }
+ }
+
if (route.isAnnotationPresent(PageTitle.class)
&& HasDynamicTitle.class.isAssignableFrom(route)) {
throw new DuplicateNavigationTitleException(String.format(
@@ -110,8 +138,7 @@ private void checkForConflictingAnnotations(VaadinContext context,
validateRouteAnnotation(context, route, annotation);
- for (RouteAlias alias : route
- .getAnnotationsByType(RouteAlias.class)) {
+ for (RouteAlias alias : aliases) {
validateRouteAliasAnnotation(context, route, alias, annotation);
}
});
diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx
index c5668442091..5c9e29c1cb2 100644
--- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx
+++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/Flow.tsx
@@ -20,13 +20,15 @@ import React, {
useEffect,
useReducer,
useRef,
+ useState,
type ReactNode
} from "react";
import {
matchRoutes,
useBlocker,
useLocation,
- useNavigate
+ useNavigate,
+ type NavigateOptions,
} from "react-router-dom";
import type { AgnosticRouteObject } from '@remix-run/router';
import { createPortal } from "react-dom";
@@ -151,13 +153,16 @@ function extractPath(event: MouseEvent): void | string {
* @param search search of navigation
*/
function fireNavigated(pathname:string, search: string) {
- setTimeout(() =>
- window.dispatchEvent(new CustomEvent('vaadin-navigated', {
- detail: {
- pathname,
- search
- }
- }))
+ setTimeout(() => {
+ window.dispatchEvent(new CustomEvent('vaadin-navigated', {
+ detail: {
+ pathname,
+ search
+ }
+ }));
+ // @ts-ignore
+ delete window.Vaadin.Flow.navigation;
+ }
)
}
@@ -197,6 +202,68 @@ function portalsReducer(portals: readonly PortalEntry[], action: PortalAction) {
}
}
+
+type NavigateOpts = {
+ to: string,
+ callback: boolean,
+ opts?: NavigateOptions
+};
+
+type NavigateFn = (to: string, callback: boolean, opts?: NavigateOptions) => void;
+
+/**
+ * A hook providing the `navigate(path: string, opts?: NavigateOptions)` function
+ * with React Router API that has more consistent history updates. Uses internal
+ * queue for processing navigate calls.
+ */
+function useQueuedNavigate(waitReference: React.MutableRefObject | undefined>, navigated: React.MutableRefObject): NavigateFn {
+ const navigate = useNavigate();
+ const navigateQueue = useRef([]).current;
+ const [navigateQueueLength, setNavigateQueueLength] = useState(0);
+
+ const dequeueNavigation = useCallback(() => {
+ const navigateArgs = navigateQueue.shift();
+ if (navigateArgs === undefined) {
+ // Empty queue, do nothing.
+ return;
+ }
+
+ const blockingNavigate = async () => {
+ if (waitReference.current) {
+ await waitReference.current;
+ waitReference.current = undefined;
+ }
+ navigated.current = !navigateArgs.callback;
+ navigate(navigateArgs.to, navigateArgs.opts);
+ setNavigateQueueLength(navigateQueue.length);
+ }
+ blockingNavigate();
+ }, [navigate, setNavigateQueueLength]);
+
+ const dequeueNavigationAfterCurrentTask = useCallback(() => {
+ queueMicrotask(dequeueNavigation);
+ }, [dequeueNavigation]);
+
+ const enqueueNavigation = useCallback((to: string, callback: boolean, opts?: NavigateOptions) => {
+ navigateQueue.push({to: to, callback: callback, opts: opts});
+ setNavigateQueueLength(navigateQueue.length);
+ if (navigateQueue.length === 1) {
+ // The first navigation can be started right after any pending sync
+ // jobs, which could add more navigations to the queue.
+ dequeueNavigationAfterCurrentTask();
+ }
+ }, [setNavigateQueueLength, dequeueNavigationAfterCurrentTask]);
+
+ useEffect(() => () => {
+ // The Flow component has rendered, but history might not be
+ // updated yet, as React Router does it asynchronously.
+ // Use microtask callback for history consistency.
+ dequeueNavigationAfterCurrentTask();
+ }, [navigateQueueLength, dequeueNavigationAfterCurrentTask]);
+
+ return enqueueNavigation;
+}
+
function Flow() {
const ref = useRef(null);
const navigate = useNavigate();
@@ -204,10 +271,12 @@ function Flow() {
navigated.current = navigated.current || (nextLocation.pathname === currentLocation.pathname && nextLocation.search === currentLocation.search && nextLocation.hash === currentLocation.hash);
return true;
});
- const {pathname, search, hash} = useLocation();
+ const location = useLocation();
const navigated = useRef(false);
const fromAnchor = useRef(false);
const containerRef = useRef(undefined);
+ const roundTrip = useRef | undefined>(undefined);
+ const queuedNavigate = useQueuedNavigate(roundTrip, navigated);
// portalsReducer function is used as state outside the Flow component.
const [portals, dispatchPortalAction] = useReducer(portalsReducer, []);
@@ -239,6 +308,8 @@ function Flow() {
// in order to get a server round-trip even when navigating to the same URL again
fromAnchor.current = true;
navigate(path);
+ // Dispatch close event for overlay drawer on click navigation.
+ window.dispatchEvent(new CustomEvent('close-overlay-drawer'));
}, [navigate]);
const vaadinRouterGoEventHandler = useCallback((event: CustomEvent) => {
@@ -253,9 +324,11 @@ function Flow() {
}, [navigate]);
const vaadinNavigateEventHandler = useCallback((event: CustomEvent<{state: unknown, url: string, replace?: boolean, callback: boolean}>) => {
+ // @ts-ignore
+ window.Vaadin.Flow.navigation = true;
const path = '/' + event.detail.url;
- navigated.current = !event.detail.callback;
- navigate(path, { state: event.detail.state, replace: event.detail.replace});
+ fromAnchor.current = false;
+ queuedNavigate(path, event.detail.callback, { state: event.detail.state, replace: event.detail.replace });
}, [navigate]);
const redirect = useCallback((path: string) => {
@@ -288,28 +361,34 @@ function Flow() {
useEffect(() => {
if (blocker.state === 'blocked') {
+ let blockingPromise: any;
+ roundTrip.current = new Promise((resolve,reject) => blockingPromise = {resolve:resolve,reject:reject});
+
// Do not skip server round-trip if navigation originates from a click on a link
if (navigated.current && !fromAnchor.current) {
blocker.proceed();
+ blockingPromise.resolve();
return;
}
fromAnchor.current = false;
const {pathname, search} = blocker.location;
const routes = ((window as any)?.Vaadin?.routesConfig || []) as AgnosticRouteObject[];
- let matched = matchRoutes(Array.from(routes), window.location.pathname);
+ let matched = matchRoutes(Array.from(routes), pathname);
// Navigation between server routes
// @ts-ignore
if (matched && matched.filter(path => path.route?.element?.type?.name === Flow.name).length != 0) {
containerRef.current?.onBeforeEnter?.call(containerRef?.current,
- {pathname,search}, {
+ {pathname, search}, {
prevent() {
blocker.reset();
+ blockingPromise.resolve();
navigated.current = false;
},
redirect,
continue() {
blocker.proceed();
+ blockingPromise.resolve();
}
}, router);
navigated.current = true;
@@ -325,13 +404,16 @@ function Flow() {
containerRef.current.serverConnected = (cancel) => {
if (cancel) {
blocker.reset();
+ blockingPromise.resolve();
} else {
blocker.proceed();
+ blockingPromise.resolve();
}
}
} else {
// permitted navigation: proceed with the blocker
blocker.proceed();
+ blockingPromise.resolve();
}
});
}
@@ -341,10 +423,10 @@ function Flow() {
useEffect(() => {
if (navigated.current) {
navigated.current = false;
- fireNavigated(pathname,search);
+ fireNavigated(location.pathname,location.search);
return;
}
- flow.serverSideRoutes[0].action({pathname, search})
+ flow.serverSideRoutes[0].action({pathname: location.pathname, search: location.search})
.then((container) => {
const outlet = ref.current?.parentNode;
if (outlet && outlet !== container.parentNode) {
@@ -353,18 +435,18 @@ function Flow() {
window.addEventListener('click', navigateEventHandler);
containerRef.current = container
}
- return container.onBeforeEnter?.call(container, {pathname, search}, {prevent, redirect, continue() {
- fireNavigated(pathname,search);}}, router);
+ return container.onBeforeEnter?.call(container, {pathname: location.pathname, search: location.search}, {prevent, redirect, continue() {
+ fireNavigated(location.pathname,location.search);}}, router);
})
.then((result: unknown) => {
if (typeof result === "function") {
result();
}
});
- }, [pathname, search, hash]);
+ }, [location]);
return <>
-
+
{portals.map(({children, domNode}) => createPortal(children, domNode))}
>;
}
diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json
index be74bd3ac94..793de6168bb 100644
--- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json
+++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/react-router/package.json
@@ -14,7 +14,7 @@
"react-router-dom": "6.26.2"
},
"devDependencies": {
- "@types/react": "18.3.5",
+ "@types/react": "18.3.9",
"@types/react-dom": "18.3.0"
}
}
diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json
index d9e2d2b08ce..e87e9dee5c6 100644
--- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json
+++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/dependencies/vite/package.json
@@ -13,8 +13,8 @@
"vite": "6.0.0-beta.2",
"@vitejs/plugin-react": "4.3.1",
"@preact/signals-react-transform": "0.4.0",
- "@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.0",
+ "@rollup/plugin-replace": "6.0.1",
+ "@rollup/pluginutils": "5.1.2",
"@babel/preset-react": "7.24.7",
"rollup-plugin-visualizer": "5.12.0",
"rollup-plugin-brotli": "3.1.0",
diff --git a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx
index 57466ef4ff6..549cdc83384 100644
--- a/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx
+++ b/flow-server/src/main/resources/com/vaadin/flow/server/frontend/vaadin-react.tsx
@@ -2,3 +2,13 @@ import { routes } from "%routesJsImportPath%";
(window as any).Vaadin ??= {};
(window as any).Vaadin.routesConfig = routes;
+
+export { routes as forHMROnly };
+
+// @ts-ignore
+if (import.meta.hot) {
+ // @ts-ignore
+ import.meta.hot.accept((module) => {
+ (window as any).Vaadin.routesConfig = module.forHMROnly;
+ });
+}
diff --git a/flow-server/src/main/resources/vite.generated.ts b/flow-server/src/main/resources/vite.generated.ts
index c96bdb377e6..46200d9c49d 100644
--- a/flow-server/src/main/resources/vite.generated.ts
+++ b/flow-server/src/main/resources/vite.generated.ts
@@ -722,7 +722,6 @@ export const vaadinConfig: UserConfigFn = (env) => {
outDir: buildOutputFolder,
emptyOutDir: devBundle,
assetsDir: 'VAADIN/build',
- target: ["esnext", "safari15"],
rollupOptions: {
input: {
indexhtml: projectIndexHtml,
diff --git a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java
index 3096b94bb45..3b25e498e99 100644
--- a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerLocationTest.java
@@ -42,7 +42,7 @@ public void findJavaFile_simpleClass() {
.resolve(Path.of("com", "example", "app", "MyClass.java"))
.toFile();
- File javaFile = location.findJavaFile(configuration);
+ File javaFile = location.findSourceFile(configuration);
Assert.assertEquals(expectedFile, javaFile);
}
@@ -60,7 +60,7 @@ public void findJavaFile_simpleClass_dollarInPackage() {
.resolve(Path.of("com", "exa$mple", "app", "MyClass.java"))
.toFile();
- File javaFile = location.findJavaFile(configuration);
+ File javaFile = location.findSourceFile(configuration);
Assert.assertEquals(expectedFile, javaFile);
}
@@ -79,7 +79,7 @@ public void findJavaFile_simpleClass_dollarInName() {
Path.of("com", "example", "app", "MyClass$NotInner.java"))
.toFile();
- File javaFile = location.findJavaFile(configuration);
+ File javaFile = location.findSourceFile(configuration);
Assert.assertEquals(expectedFile, javaFile);
}
@@ -98,7 +98,7 @@ public void findJavaFile_innerClass() {
.resolve(Path.of("com", "example", "app", "MyClass.java"))
.toFile();
- File javaFile = location.findJavaFile(configuration);
+ File javaFile = location.findSourceFile(configuration);
Assert.assertEquals(expectedFile, javaFile);
}
@@ -117,7 +117,26 @@ public void findJavaFile_nestedInnerClass() {
.resolve(Path.of("com", "example", "app", "MyClass.java"))
.toFile();
- File javaFile = location.findJavaFile(configuration);
+ File javaFile = location.findSourceFile(configuration);
+ Assert.assertEquals(expectedFile, javaFile);
+ }
+
+ @Test
+ public void findKotlinFile_simpleClass() {
+ File defaultJavaSrcDir = new File("src/main/java");
+ File kotlinExpectedSrcDir = new File("src/main/kotlin");
+ AbstractConfiguration configuration = Mockito
+ .mock(AbstractConfiguration.class);
+ Mockito.when(configuration.getJavaSourceFolder())
+ .thenReturn(defaultJavaSrcDir);
+
+ ComponentTracker.Location location = new ComponentTracker.Location(
+ "com.example.app.MyClass", "MyClass.kt", "whoCares", 99);
+ File expectedFile = kotlinExpectedSrcDir.toPath()
+ .resolve(Path.of("com", "example", "app", "MyClass.kt"))
+ .toFile();
+
+ File javaFile = location.findSourceFile(configuration);
Assert.assertEquals(expectedFile, javaFile);
}
diff --git a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java
index d8cbbf5704b..b83bc1d0a97 100644
--- a/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/ComponentTrackerTest.java
@@ -156,10 +156,10 @@ public void memoryIsReleased() throws Exception {
private boolean isCleared(Map, ?> map) throws InterruptedException {
for (int i = 0; i < 5; i++) {
System.gc();
- if (map.size() == 0) {
+ if (map.isEmpty()) {
return true;
}
- Thread.sleep(1);
+ Thread.sleep(100);
}
return false;
}
diff --git a/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java b/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java
index 75ba7339643..a17fe5dd2b5 100644
--- a/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/hotswap/HotswapperTest.java
@@ -48,6 +48,7 @@
import com.vaadin.flow.server.SessionDestroyListener;
import com.vaadin.flow.server.SessionInitEvent;
import com.vaadin.flow.server.SessionInitListener;
+import com.vaadin.flow.server.UIInitListener;
import com.vaadin.flow.server.VaadinRequest;
import com.vaadin.flow.server.VaadinService;
import com.vaadin.flow.server.VaadinSession;
@@ -504,6 +505,7 @@ public void register_developmentMode_trackingListenerInstalled() {
AtomicBoolean sessionInitInstalled = new AtomicBoolean();
AtomicBoolean sessionDestroyInstalled = new AtomicBoolean();
AtomicBoolean serviceDestroyInstalled = new AtomicBoolean();
+ AtomicBoolean uiInitInstalled = new AtomicBoolean();
MockDeploymentConfiguration configuration = new MockDeploymentConfiguration();
configuration.setProductionMode(false);
VaadinService service = new MockVaadinServletService(configuration) {
@@ -527,6 +529,12 @@ public Registration addServiceDestroyListener(
serviceDestroyInstalled.set(true);
return super.addServiceDestroyListener(listener);
}
+
+ @Override
+ public Registration addUIInitListener(UIInitListener listener) {
+ uiInitInstalled.set(true);
+ return super.addUIInitListener(listener);
+ }
};
ApplicationConfiguration appConfig = Mockito
.mock(ApplicationConfiguration.class);
@@ -546,6 +554,9 @@ public Registration addServiceDestroyListener(
Assert.assertTrue(
"Expected hotswapper ServiceDestroyListener to be registered in development mode, but was not",
serviceDestroyInstalled.get());
+ Assert.assertTrue(
+ "Expected hotswapper UIInitListener to be registered in development mode, but was not",
+ uiInitInstalled.get());
}
@Test
@@ -553,6 +564,7 @@ public void register_productionMode_trackingListenerNotInstalled() {
AtomicBoolean sessionInitInstalled = new AtomicBoolean();
AtomicBoolean sessionDestroyInstalled = new AtomicBoolean();
AtomicBoolean serviceDestroyInstalled = new AtomicBoolean();
+ AtomicBoolean uiInitInstalled = new AtomicBoolean();
MockDeploymentConfiguration configuration = new MockDeploymentConfiguration();
configuration.setProductionMode(true);
VaadinService service = new MockVaadinServletService(configuration) {
@@ -588,6 +600,9 @@ public Registration addServiceDestroyListener(
Assert.assertFalse(
"Expected hotswapper ServiceDestroyListener not to be registered in production mode, but it was",
serviceDestroyInstalled.get());
+ Assert.assertFalse(
+ "Expected hotswapper UIInitListener not to be registered in production mode, but it was",
+ uiInitInstalled.get());
}
@Tag("my-route")
diff --git a/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java b/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java
index 1a7bcaab451..f011794cc8a 100644
--- a/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/server/VaadinServiceDauTest.java
@@ -10,14 +10,19 @@
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.mockito.MockedStatic;
+import org.mockito.Mockito;
import com.vaadin.flow.di.Lookup;
import com.vaadin.flow.server.dau.DAUCustomizer;
import com.vaadin.flow.server.dau.DAUVaadinRequestInterceptor;
import com.vaadin.flow.server.dau.UserIdentitySupplier;
import com.vaadin.pro.licensechecker.LicenseException;
+import com.vaadin.pro.licensechecker.dau.DauIntegration;
import com.vaadin.tests.util.MockDeploymentConfiguration;
+import static org.mockito.ArgumentMatchers.anyString;
+
public class VaadinServiceDauTest {
private static final Predicate IS_DAU_INTERCEPTOR = interceptor -> interceptor instanceof DAUVaadinRequestInterceptor
@@ -25,11 +30,13 @@ public class VaadinServiceDauTest {
&& wrapper.delegate instanceof DAUVaadinRequestInterceptor);
private String subscriptionKey;
+ private MockedStatic dauIntegrationMock;
@Before
public void setUp() throws Exception {
subscriptionKey = System.getProperty("vaadin.subscriptionKey");
System.setProperty("vaadin.subscriptionKey", "sub-1234");
+ dauIntegrationMock = Mockito.mockStatic(DauIntegration.class);
}
@After
@@ -39,6 +46,7 @@ public void tearDown() throws Exception {
} else {
System.clearProperty("vaadin.subscriptionKey");
}
+ dauIntegrationMock.close();
}
@Test
@@ -50,6 +58,7 @@ public void init_developmentMode_dauNotEnabled() {
MockVaadinServletService service = new MockVaadinServletService(config);
Assert.assertTrue("Expecting DAU interceptor not to be installed",
vaadinInterceptors(service).noneMatch(IS_DAU_INTERCEPTOR));
+ dauIntegrationMock.verifyNoInteractions();
}
@Test
@@ -61,6 +70,7 @@ public void init_productionMode_notDauBuild_dauNotEnabled() {
MockVaadinServletService service = new MockVaadinServletService(config);
Assert.assertTrue("Expecting DAU interceptor not to be installed",
vaadinInterceptors(service).noneMatch(IS_DAU_INTERCEPTOR));
+ dauIntegrationMock.verifyNoInteractions();
}
@Test
@@ -72,10 +82,15 @@ public void init_productionMode_dauBuild_dauEnabled() {
MockVaadinServletService service = new MockVaadinServletService(config);
Assert.assertTrue("Expecting DAU interceptor to be installed",
vaadinInterceptors(service).anyMatch(IS_DAU_INTERCEPTOR));
+ dauIntegrationMock
+ .verify(() -> DauIntegration.startTracking(anyString()));
}
@Test
public void init_productionMode_dauBuild_subscriptionKeyNotAvailable_throws() {
+ dauIntegrationMock.reset();
+ dauIntegrationMock.when(() -> DauIntegration.startTracking(anyString()))
+ .thenCallRealMethod();
System.clearProperty("vaadin.subscriptionKey");
MockDeploymentConfiguration config = new MockDeploymentConfiguration();
config.setProductionMode(true);
diff --git a/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java b/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java
index b39a490f596..97bc029361f 100644
--- a/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/server/dau/DAUUtilsTest.java
@@ -2,6 +2,7 @@
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+
import java.util.HashMap;
import java.util.Map;
@@ -123,51 +124,65 @@ public void trackUser_notUidlRequest_track() {
@Test
public void jsonEnforcementResponse_noDauCustomizer_defaultMessages() {
- VaadinService service = VaadinServiceDauTest.vaadinServiceWithDau(null);
- VaadinRequest request = Mockito.mock(VaadinRequest.class);
- Mockito.when(request.getService()).thenReturn(service);
- String response = DAUUtils.jsonEnforcementResponse(request,
- new DauEnforcementException(new EnforcementException("STOP")));
-
- // remove JSON wrap
- response = response.replace("for(;;);[", "").replaceFirst("]$", "");
- JsonObject json = Json.parse(response).getObject("meta")
- .getObject("appError");
-
- EnforcementNotificationMessages expectedMessages = EnforcementNotificationMessages.DEFAULT;
- assertJsonErrorProperty("caption", expectedMessages.caption(), json);
- assertJsonErrorProperty("message", expectedMessages.message(), json);
- assertJsonErrorProperty("details", expectedMessages.details(), json);
- assertJsonErrorProperty("url", expectedMessages.url(), json);
+ try (MockedStatic dauIntegrationMock = Mockito
+ .mockStatic(DauIntegration.class)) {
+ VaadinService service = VaadinServiceDauTest
+ .vaadinServiceWithDau(null);
+ VaadinRequest request = Mockito.mock(VaadinRequest.class);
+ Mockito.when(request.getService()).thenReturn(service);
+ String response = DAUUtils.jsonEnforcementResponse(request,
+ new DauEnforcementException(
+ new EnforcementException("STOP")));
+
+ // remove JSON wrap
+ response = response.replace("for(;;);[", "").replaceFirst("]$", "");
+ JsonObject json = Json.parse(response).getObject("meta")
+ .getObject("appError");
+
+ EnforcementNotificationMessages expectedMessages = EnforcementNotificationMessages.DEFAULT;
+ assertJsonErrorProperty("caption", expectedMessages.caption(),
+ json);
+ assertJsonErrorProperty("message", expectedMessages.message(),
+ json);
+ assertJsonErrorProperty("details", expectedMessages.details(),
+ json);
+ assertJsonErrorProperty("url", expectedMessages.url(), json);
+ }
}
@Test
public void jsonEnforcementResponse_customMessages() {
- EnforcementNotificationMessages expectedMessages = new EnforcementNotificationMessages(
- "caption", "message", "details", "url");
- DAUCustomizer customizer = new DAUCustomizer() {
- @Override
- public EnforcementNotificationMessages getEnforcementNotificationMessages(
- SystemMessagesInfo systemMessagesInfo) {
- return expectedMessages;
- }
- };
- VaadinService service = VaadinServiceDauTest
- .vaadinServiceWithDau(customizer);
- VaadinRequest request = Mockito.mock(VaadinRequest.class);
- Mockito.when(request.getService()).thenReturn(service);
-
- String response = DAUUtils.jsonEnforcementResponse(request,
- new DauEnforcementException(new EnforcementException("STOP")));
- response = response.replace("for(;;);[", "").replaceFirst("]$", "");
- JsonObject json = Json.parse(response).getObject("meta")
- .getObject("appError");
-
- assertJsonErrorProperty("caption", expectedMessages.caption(), json);
- assertJsonErrorProperty("message", expectedMessages.message(), json);
- assertJsonErrorProperty("details", expectedMessages.details(), json);
- assertJsonErrorProperty("url", expectedMessages.url(), json);
-
+ try (MockedStatic dauIntegrationMock = Mockito
+ .mockStatic(DauIntegration.class)) {
+ EnforcementNotificationMessages expectedMessages = new EnforcementNotificationMessages(
+ "caption", "message", "details", "url");
+ DAUCustomizer customizer = new DAUCustomizer() {
+ @Override
+ public EnforcementNotificationMessages getEnforcementNotificationMessages(
+ SystemMessagesInfo systemMessagesInfo) {
+ return expectedMessages;
+ }
+ };
+ VaadinService service = VaadinServiceDauTest
+ .vaadinServiceWithDau(customizer);
+ VaadinRequest request = Mockito.mock(VaadinRequest.class);
+ Mockito.when(request.getService()).thenReturn(service);
+
+ String response = DAUUtils.jsonEnforcementResponse(request,
+ new DauEnforcementException(
+ new EnforcementException("STOP")));
+ response = response.replace("for(;;);[", "").replaceFirst("]$", "");
+ JsonObject json = Json.parse(response).getObject("meta")
+ .getObject("appError");
+
+ assertJsonErrorProperty("caption", expectedMessages.caption(),
+ json);
+ assertJsonErrorProperty("message", expectedMessages.message(),
+ json);
+ assertJsonErrorProperty("details", expectedMessages.details(),
+ json);
+ assertJsonErrorProperty("url", expectedMessages.url(), json);
+ }
}
@Test
diff --git a/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java b/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java
index 2b9fc7b4215..7080fe17309 100644
--- a/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/server/frontend/TaskGenerateReactFilesTest.java
@@ -31,7 +31,9 @@
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.Tag;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.Route;
+import com.vaadin.flow.router.RouterLayout;
import com.vaadin.flow.server.ExecutionFailedException;
import com.vaadin.flow.server.frontend.scanner.ClassFinder;
import com.vaadin.tests.util.MockOptions;
@@ -82,6 +84,27 @@ public void reactFilesAreWrittenToFrontend()
"routes.tsx").exists());
Assert.assertFalse("Missing ./frontend/routes.tsx",
new File(frontend, "routes.tsx").exists());
+ Assert.assertTrue(
+ "Missing ./frontend/" + FrontendUtils.GENERATED
+ + "layouts.json",
+ new File(new File(frontend, FrontendUtils.GENERATED),
+ "layouts.json").exists());
+ }
+
+ @Test
+ public void layoutsJson_containsExpectedPaths()
+ throws ExecutionFailedException, IOException {
+ Mockito.when(options.getClassFinder().getAnnotatedClasses(Layout.class))
+ .thenReturn(Collections.singleton(TestLayout.class));
+
+ TaskGenerateReactFiles task = new TaskGenerateReactFiles(options);
+ task.execute();
+
+ String layoutsContent = FileUtils.readFileToString(
+ new File(options.getFrontendGeneratedFolder(), "layouts.json"));
+
+ Assert.assertEquals("[{\"path\":\"/test\"}]", layoutsContent);
+
}
@Test
@@ -555,4 +578,9 @@ public void routesContainExport_oneSingleExport_exceptionThrown()
@Route("test")
private class TestRoute extends Component {
}
+
+ @Tag("div")
+ @Layout("/test")
+ private class TestLayout extends Component implements RouterLayout {
+ }
}
\ No newline at end of file
diff --git a/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java b/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java
index 4721df75016..95ca5aff4ac 100644
--- a/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesTest.java
@@ -37,8 +37,10 @@
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.ErrorParameter;
import com.vaadin.flow.router.HasErrorParameter;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.NotFoundException;
import com.vaadin.flow.router.Route;
+import com.vaadin.flow.router.RouterLayout;
import com.vaadin.flow.server.UIInitListener;
import com.vaadin.flow.server.VaadinServiceInitListener;
import com.vaadin.flow.server.frontend.scanner.samples.ErrorComponent;
@@ -280,6 +282,24 @@ public void classInMultipleEntryPoints_collectEntryPointsNotOverrideInitial() {
"@vaadin/common-frontend/ConnectionIndicator.js");
}
+ @Test // 20074
+ public void layoutClasses_collectedAsEntrypoint() {
+ Mockito.when(classFinder.getAnnotatedClasses(Layout.class))
+ .thenReturn(Collections.singleton(MainLayout.class));
+
+ FrontendDependencies dependencies = new FrontendDependencies(
+ classFinder, false);
+
+ Optional layoutEndpointData = dependencies
+ .getEntryPoints().stream().filter(entryPoint -> entryPoint
+ .getName().equals(MainLayout.class.getName()))
+ .findAny();
+ Assert.assertTrue("MainLayout should be visited",
+ layoutEndpointData.isPresent());
+ DepsTests.assertImports(dependencies.getModules(), "reference.js",
+ "@vaadin/common-frontend/ConnectionIndicator.js");
+ }
+
@Test // #9861
public void visitedExporter_previousEntryPointsNotOverridden()
throws InstantiationException, IllegalAccessException {
@@ -504,4 +524,9 @@ public static class ChildRoute extends ParentRoute {
public static class GrandChildRoute extends ChildRoute {
}
+ @Tag("div")
+ @Layout
+ @JsModule("reference.js")
+ public static class MainLayout extends Component implements RouterLayout {
+ }
}
diff --git a/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java b/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java
index b405003af20..dcfe0487253 100644
--- a/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/server/menu/MenuRegistryTest.java
@@ -21,7 +21,9 @@
import java.nio.file.Files;
import java.security.Principal;
import java.util.Arrays;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import jakarta.servlet.ServletContext;
import net.jcip.annotations.NotThreadSafe;
@@ -156,7 +158,7 @@ public void getMenuItemsNoFilteringContainsAllClientPaths()
Assert.assertEquals(5, menuItems.size());
// Validate as if logged in as all routes should be available
- assertClientRoutes(menuItems, true, true);
+ assertClientRoutes(menuItems, true, true, false);
}
@Test
@@ -221,7 +223,7 @@ public void getMenuItemsContainBothClientAndServerPaths()
}
@Test
- public void collectMenuItems_returnsCorrecPaths() throws IOException {
+ public void collectMenuItems_returnsCorrectPaths() throws IOException {
File generated = tmpDir.newFolder(GENERATED);
File clientFiles = new File(generated, FILE_ROUTES_JSON_NAME);
Files.writeString(clientFiles.toPath(), testClientRouteFile);
@@ -236,10 +238,10 @@ public void collectMenuItems_returnsCorrecPaths() throws IOException {
Map menuItems = MenuRegistry
.collectMenuItems();
- Assert.assertEquals(8, menuItems.size());
- assertClientRoutes(menuItems);
+ Assert.assertEquals(5, menuItems.size());
+ assertClientRoutes(menuItems, false, false, true);
assertServerRoutes(menuItems);
- assertServerRoutesWithParameters(menuItems);
+ assertServerRoutesWithParameters(menuItems, true);
}
@Test
@@ -257,7 +259,16 @@ public void testWithLoggedInUser_userHasRoles() throws IOException {
.getMenuItems(true);
Assert.assertEquals(5, menuItems.size());
- assertClientRoutes(menuItems, true, true);
+ assertClientRoutes(menuItems, true, true, false);
+
+ // Verify that getMenuItemsList returns the same data
+ List menuItemsList = MenuRegistry
+ .collectMenuItemsList();
+ Assert.assertEquals(
+ "List of menu items has incorrect size. Excluded menu item like /login is not expected.",
+ 4, menuItemsList.size());
+ assertOrder(menuItemsList,
+ new String[] { "", "/about", "/hilla", "/hilla/sub" });
}
@Test
@@ -275,15 +286,62 @@ public void testWithLoggedInUser_noMatchingRoles() throws IOException {
.getMenuItems(true);
Assert.assertEquals(3, menuItems.size());
- assertClientRoutes(menuItems, true, false);
+ assertClientRoutes(menuItems, true, false, false);
+ }
+
+ @Test
+ public void getMenuItemsList_returnsCorrectPaths() throws IOException {
+ File generated = tmpDir.newFolder(GENERATED);
+ File clientFiles = new File(generated, FILE_ROUTES_JSON_NAME);
+ Files.writeString(clientFiles.toPath(), testClientRouteFile);
+
+ RouteConfiguration routeConfiguration = RouteConfiguration
+ .forRegistry(registry);
+ Arrays.asList(MyRoute.class, MyInfo.class, MyRequiredParamRoute.class,
+ MyRequiredAndOptionalParamRoute.class,
+ MyOptionalParamRoute.class, MyVarargsParamRoute.class)
+ .forEach(routeConfiguration::setAnnotatedRoute);
+
+ List menuItems = MenuRegistry.collectMenuItemsList();
+ Assert.assertEquals(5, menuItems.size());
+ assertOrder(menuItems, new String[] { "", "/home", "/info", "/param",
+ "/param/varargs" });
+ // verifying that data is same as with collectMenuItems
+ Map mapMenuItems = menuItems.stream()
+ .collect(Collectors.toMap(AvailableViewInfo::route,
+ item -> item));
+ assertClientRoutes(mapMenuItems, false, false, true);
+ assertServerRoutes(mapMenuItems);
+ assertServerRoutesWithParameters(mapMenuItems, true);
+ }
+
+ @Test
+ public void getMenuItemsList_assertOrder() {
+ RouteConfiguration routeConfiguration = RouteConfiguration
+ .forRegistry(registry);
+ Arrays.asList(TestRouteA.class, TestRouteB.class, TestRouteC.class,
+ TestRouteD.class, TestRouteDA.class, TestRouteDB.class)
+ .forEach(routeConfiguration::setAnnotatedRoute);
+
+ List menuItems = MenuRegistry.collectMenuItemsList();
+ Assert.assertEquals(4, menuItems.size());
+ assertOrder(menuItems,
+ new String[] { "/d", "/c", "/a", "/b", "/d/a", "/d/b" });
+ }
+
+ private void assertOrder(List menuItems,
+ String[] expectedOrder) {
+ for (int i = 0; i < menuItems.size(); i++) {
+ Assert.assertEquals(expectedOrder[i], menuItems.get(i).route());
+ }
}
private void assertClientRoutes(Map menuItems) {
- assertClientRoutes(menuItems, false, false);
+ assertClientRoutes(menuItems, false, false, false);
}
private void assertClientRoutes(Map menuItems,
- boolean authenticated, boolean hasRole) {
+ boolean authenticated, boolean hasRole, boolean excludeExpected) {
Assert.assertTrue("Client route '' missing", menuItems.containsKey(""));
Assert.assertEquals("Public", menuItems.get("").title());
Assert.assertNull("Public doesn't contain specific menu data",
@@ -328,12 +386,17 @@ private void assertClientRoutes(Map menuItems,
menuItems.containsKey("/hilla"));
}
- Assert.assertTrue("Client route 'login' missing",
- menuItems.containsKey("/login"));
- Assert.assertEquals("Login", menuItems.get("/login").title());
- Assert.assertNull(menuItems.get("/login").menu().title());
- Assert.assertTrue("Login view should be excluded",
- menuItems.get("/login").menu().exclude());
+ if (excludeExpected) {
+ Assert.assertFalse("Client route 'login' should be excluded",
+ menuItems.containsKey("/login"));
+ } else {
+ Assert.assertTrue("Client route 'login' missing",
+ menuItems.containsKey("/login"));
+ Assert.assertEquals("Login", menuItems.get("/login").title());
+ Assert.assertNull(menuItems.get("/login").menu().title());
+ Assert.assertTrue("Login view should be excluded",
+ menuItems.get("/login").menu().exclude());
+ }
}
private void assertServerRoutes(Map menuItems) {
@@ -350,17 +413,31 @@ private void assertServerRoutes(Map menuItems) {
private void assertServerRoutesWithParameters(
Map menuItems) {
- Assert.assertTrue("Server route '/param/:param' missing",
- menuItems.containsKey("/param/:param"));
- Assert.assertTrue(
- "Server route '/param/:param' should be excluded from menu",
- menuItems.get("/param/:param").menu().exclude());
+ assertServerRoutesWithParameters(menuItems, false);
+ }
- Assert.assertTrue("Server route '/param/:param1' missing",
- menuItems.containsKey("/param/:param1"));
- Assert.assertTrue(
- "Server route '/param/:param1' should be excluded from menu",
- menuItems.get("/param/:param1").menu().exclude());
+ private void assertServerRoutesWithParameters(
+ Map menuItems, boolean excludeExpected) {
+ if (excludeExpected) {
+ Assert.assertFalse(
+ "Server route '/param/:param' should be excluded",
+ menuItems.containsKey("/param/:param"));
+ Assert.assertFalse(
+ "Server route '/param/:param1' should be excluded",
+ menuItems.containsKey("/param/:param1"));
+ } else {
+ Assert.assertTrue("Server route '/param/:param' missing",
+ menuItems.containsKey("/param/:param"));
+ Assert.assertTrue(
+ "Server route '/param/:param' should be excluded from menu",
+ menuItems.get("/param/:param").menu().exclude());
+
+ Assert.assertTrue("Server route '/param/:param1' missing",
+ menuItems.containsKey("/param/:param1"));
+ Assert.assertTrue(
+ "Server route '/param/:param1' should be excluded from menu",
+ menuItems.get("/param/:param1").menu().exclude());
+ }
Assert.assertTrue(
"Server route with optional parameters '/param' missing",
@@ -413,6 +490,41 @@ private static class MyOptionalParamRoute extends Component {
private static class MyVarargsParamRoute extends Component {
}
+ @Tag("div")
+ @Route("a")
+ @Menu(order = 1.1)
+ private static class TestRouteA extends Component {
+ }
+
+ @Tag("div")
+ @Route("b")
+ @Menu(order = 1.2)
+ private static class TestRouteB extends Component {
+ }
+
+ @Tag("div")
+ @Route("c")
+ @Menu(order = 0.1)
+ private static class TestRouteC extends Component {
+ }
+
+ @Tag("div")
+ @Route("d")
+ @Menu(order = 0)
+ private static class TestRouteD extends Component {
+ }
+
+ @Tag("div")
+ @Route("d/b")
+ private static class TestRouteDB extends Component {
+
+ }
+
+ @Tag("div")
+ @Route("d/a")
+ private static class TestRouteDA extends Component {
+ }
+
/**
* Extending class to let us mock the getRouteRegistry method for testing.
*/
diff --git a/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java b/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java
index 7d82f8d6034..8734d6ccf21 100644
--- a/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java
+++ b/flow-server/src/test/java/com/vaadin/flow/server/startup/AbstractRouteRegistryInitializerTest.java
@@ -25,7 +25,9 @@
import com.vaadin.flow.component.Tag;
import com.vaadin.flow.router.ParentLayout;
import com.vaadin.flow.router.Route;
+import com.vaadin.flow.router.RouteAlias;
import com.vaadin.flow.router.RouterLayout;
+import com.vaadin.flow.server.InvalidRouteConfigurationException;
import com.vaadin.flow.server.InvalidRouteLayoutConfigurationException;
public class AbstractRouteRegistryInitializerTest {
@@ -55,11 +57,59 @@ public static class RouteAndParentRouterLayout extends Component
}
+ @Tag(Tag.DIV)
+ @Route("foo")
+ @RouteAlias("foo")
+ public static class RouteAndAliasWithSamePath extends Component {
+
+ }
+
+ @Tag(Tag.DIV)
+ @Route("foo")
+ @RouteAlias("bar")
+ @RouteAlias("baz")
+ @RouteAlias("bar")
+ @RouteAlias("baz")
+ @RouteAlias("hey")
+ public static class AliasesWithSamePath extends Component {
+
+ }
+
@Test(expected = InvalidRouteLayoutConfigurationException.class)
public void routeAndParentLayout_notRouterLayout_throws() {
initializer.validateRouteClasses(null,
Stream.of(RouteAndParentLayout.class));
+ }
+
+ @Test
+ public void validateRouteClasses_samePathForRouteAndAlias_throws() {
+ InvalidRouteConfigurationException exception = Assert.assertThrows(
+ InvalidRouteConfigurationException.class,
+ () -> initializer.validateRouteClasses(null,
+ Stream.of(RouteAndAliasWithSamePath.class)));
+ Assert.assertTrue(containsQuotedAnnotationName(exception.getMessage(),
+ Route.class));
+ Assert.assertTrue(containsQuotedAnnotationName(exception.getMessage(),
+ RouteAlias.class));
+ Assert.assertTrue(exception.getMessage().contains("same path"));
+ Assert.assertTrue(exception.getMessage().contains("foo"));
+ }
+ @Test
+ public void validateRouteClasses_samePathForRepeatableAlias_throws() {
+ InvalidRouteConfigurationException exception = Assert.assertThrows(
+ InvalidRouteConfigurationException.class,
+ () -> initializer.validateRouteClasses(null,
+ Stream.of(AliasesWithSamePath.class)));
+ Assert.assertFalse(containsQuotedAnnotationName(exception.getMessage(),
+ Route.class));
+ Assert.assertTrue(containsQuotedAnnotationName(exception.getMessage(),
+ RouteAlias.class));
+ Assert.assertTrue(exception.getMessage().contains("same paths"));
+ Assert.assertTrue(exception.getMessage().contains("bar"));
+ Assert.assertTrue(exception.getMessage().contains("baz"));
+ Assert.assertFalse(exception.getMessage().contains("foo"));
+ Assert.assertFalse(exception.getMessage().contains("hey"));
}
@Test
@@ -72,4 +122,8 @@ public void routeAndParentLayout_routerLayout_returnsValidatedClass() {
classes.iterator().next());
}
+ private static boolean containsQuotedAnnotationName(String message,
+ Class> clazz) {
+ return message.contains("'@" + clazz.getSimpleName() + "'");
+ }
}
diff --git a/flow-test-generic/pom.xml b/flow-test-generic/pom.xml
index 26233c6bdfd..d05e4f29560 100644
--- a/flow-test-generic/pom.xml
+++ b/flow-test-generic/pom.xml
@@ -5,7 +5,7 @@
flow-project
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-test-util/pom.xml b/flow-test-util/pom.xml
index cabbea05cbe..709edaeec22 100644
--- a/flow-test-util/pom.xml
+++ b/flow-test-util/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-project
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-util
diff --git a/flow-tests/pom.xml b/flow-tests/pom.xml
index 0fe4eec3a7c..6d6038f5412 100644
--- a/flow-tests/pom.xml
+++ b/flow-tests/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-project
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-tests
Flow tests
diff --git a/flow-tests/servlet-containers/pom.xml b/flow-tests/servlet-containers/pom.xml
index 6f0cd8cdd6b..40106429f58 100644
--- a/flow-tests/servlet-containers/pom.xml
+++ b/flow-tests/servlet-containers/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-servlet-containers-test
flow-servlet-containers-test
@@ -27,7 +27,7 @@
org.codehaus.cargo
cargo-maven3-plugin
- 1.10.14
+ 1.10.15
standalone
diff --git a/flow-tests/servlet-containers/tomcat10/pom.xml b/flow-tests/servlet-containers/tomcat10/pom.xml
index 2e94b0a6251..87abc7aeba7 100644
--- a/flow-tests/servlet-containers/tomcat10/pom.xml
+++ b/flow-tests/servlet-containers/tomcat10/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-servlet-containers-test
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-tomcat10-server
Flow Tomcat 9 Test
diff --git a/flow-tests/test-application-theme/pom.xml b/flow-tests/test-application-theme/pom.xml
index 1673e1a7cfb..7b3565e3472 100644
--- a/flow-tests/test-application-theme/pom.xml
+++ b/flow-tests/test-application-theme/pom.xml
@@ -5,7 +5,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-application-theme/reusable-theme/pom.xml b/flow-tests/test-application-theme/reusable-theme/pom.xml
index d7b49287ae3..0c5128fc478 100644
--- a/flow-tests/test-application-theme/reusable-theme/pom.xml
+++ b/flow-tests/test-application-theme/reusable-theme/pom.xml
@@ -5,7 +5,7 @@
test-application-theme
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml b/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml
index 705a3745325..7ced91134fd 100644
--- a/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml
+++ b/flow-tests/test-application-theme/test-reusable-as-parent-vite/pom.xml
@@ -3,7 +3,7 @@
test-application-theme
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml b/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml
index af4524b0037..53a7ae1f19e 100644
--- a/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml
+++ b/flow-tests/test-application-theme/test-theme-component-live-reload/pom.xml
@@ -3,7 +3,7 @@
test-application-theme
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-application-theme-component-live-reload
diff --git a/flow-tests/test-application-theme/test-theme-live-reload/pom.xml b/flow-tests/test-application-theme/test-theme-live-reload/pom.xml
index ac615ec9080..4a0efa72acf 100644
--- a/flow-tests/test-application-theme/test-theme-live-reload/pom.xml
+++ b/flow-tests/test-application-theme/test-theme-live-reload/pom.xml
@@ -3,7 +3,7 @@
test-application-theme
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-application-theme-live-reload
diff --git a/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml b/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml
index f4fc586ffe2..3843a2cd4bd 100644
--- a/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml
+++ b/flow-tests/test-application-theme/test-theme-reusable-vite/pom.xml
@@ -3,7 +3,7 @@
test-application-theme
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-ccdm-flow-navigation/pom-production.xml b/flow-tests/test-ccdm-flow-navigation/pom-production.xml
index 4780222b5f1..b6994633276 100644
--- a/flow-tests/test-ccdm-flow-navigation/pom-production.xml
+++ b/flow-tests/test-ccdm-flow-navigation/pom-production.xml
@@ -3,7 +3,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-ccdm-flow-navigation/pom.xml b/flow-tests/test-ccdm-flow-navigation/pom.xml
index 76b6180f190..31e4f5e5a39 100644
--- a/flow-tests/test-ccdm-flow-navigation/pom.xml
+++ b/flow-tests/test-ccdm-flow-navigation/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-ccdm/pom-production.xml b/flow-tests/test-ccdm/pom-production.xml
index be333e73240..a7ccdfbf86a 100644
--- a/flow-tests/test-ccdm/pom-production.xml
+++ b/flow-tests/test-ccdm/pom-production.xml
@@ -3,7 +3,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-ccdm/pom.xml b/flow-tests/test-ccdm/pom.xml
index 37303342668..48e678f3644 100644
--- a/flow-tests/test-ccdm/pom.xml
+++ b/flow-tests/test-ccdm/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-common/pom.xml b/flow-tests/test-common/pom.xml
index bbdc8707175..cd499e87506 100644
--- a/flow-tests/test-common/pom.xml
+++ b/flow-tests/test-common/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-common
Flow common test UI classes
diff --git a/flow-tests/test-custom-frontend-directory/pom.xml b/flow-tests/test-custom-frontend-directory/pom.xml
index 67b31077f13..b2b7a592b35 100644
--- a/flow-tests/test-custom-frontend-directory/pom.xml
+++ b/flow-tests/test-custom-frontend-directory/pom.xml
@@ -5,7 +5,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml
index d2a10380f87..12fa9397f0d 100644
--- a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml
+++ b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom-generatedTsDir.xml
@@ -4,7 +4,7 @@
com.vaadin
test-custom-frontend-directory
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-themes-custom-generatedTs-directory
Flow themes tests in NPM mode with custom generatedTs directory
diff --git a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml
index 1a82ab75ca8..7bf61a77047 100644
--- a/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml
+++ b/flow-tests/test-custom-frontend-directory/test-themes-custom-frontend-directory/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
test-custom-frontend-directory
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-themes-custom-frontend-directory-vite
Flow themes tests in Vite with custom frontend directory
diff --git a/flow-tests/test-custom-route-registry/pom.xml b/flow-tests/test-custom-route-registry/pom.xml
index dfeffd7ced2..63b384cb89e 100644
--- a/flow-tests/test-custom-route-registry/pom.xml
+++ b/flow-tests/test-custom-route-registry/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-custom-route-registry
Test using Flow with a custom RouteRegistry implementation
diff --git a/flow-tests/test-dev-mode/pom.xml b/flow-tests/test-dev-mode/pom.xml
index 61e415b064b..7874ddb2cae 100644
--- a/flow-tests/test-dev-mode/pom.xml
+++ b/flow-tests/test-dev-mode/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-dev-mode
Flow tests for dev mode
diff --git a/flow-tests/test-eager-bootstrap/pom.xml b/flow-tests/test-eager-bootstrap/pom.xml
index c0ae4dc33e8..549bf704246 100644
--- a/flow-tests/test-eager-bootstrap/pom.xml
+++ b/flow-tests/test-eager-bootstrap/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-eager-bootstrap
Flow eager bootstrap (includes UIDL in first request) test
diff --git a/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml b/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml
index 911dd2306b2..f023a63f3aa 100644
--- a/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml
+++ b/flow-tests/test-embedding/embedding-reusable-custom-theme/pom.xml
@@ -21,7 +21,7 @@
test-embedding
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-embedding/embedding-test-assets/pom.xml b/flow-tests/test-embedding/embedding-test-assets/pom.xml
index e2ba8157d3a..247a344a4c3 100644
--- a/flow-tests/test-embedding/embedding-test-assets/pom.xml
+++ b/flow-tests/test-embedding/embedding-test-assets/pom.xml
@@ -21,7 +21,7 @@
test-embedding
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-embedding/pom.xml b/flow-tests/test-embedding/pom.xml
index 03552724321..d373ecdd7b4 100644
--- a/flow-tests/test-embedding/pom.xml
+++ b/flow-tests/test-embedding/pom.xml
@@ -21,7 +21,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-embedding/test-embedding-application-theme/pom.xml b/flow-tests/test-embedding/test-embedding-application-theme/pom.xml
index fc0b1a7684c..d765888521d 100644
--- a/flow-tests/test-embedding/test-embedding-application-theme/pom.xml
+++ b/flow-tests/test-embedding/test-embedding-application-theme/pom.xml
@@ -19,7 +19,7 @@
test-embedding
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-embedding/test-embedding-generic/pom.xml b/flow-tests/test-embedding/test-embedding-generic/pom.xml
index 31964ebc60d..13f941ccab9 100644
--- a/flow-tests/test-embedding/test-embedding-generic/pom.xml
+++ b/flow-tests/test-embedding/test-embedding-generic/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
test-embedding
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-embedding-generic
Flow Embedding, generic tests
diff --git a/flow-tests/test-embedding/test-embedding-production-mode/pom.xml b/flow-tests/test-embedding/test-embedding-production-mode/pom.xml
index 429b7e224a8..3118d23ddb3 100644
--- a/flow-tests/test-embedding/test-embedding-production-mode/pom.xml
+++ b/flow-tests/test-embedding/test-embedding-production-mode/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
test-embedding
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-embedding-production
Flow Embedding, production tests
diff --git a/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml b/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml
index ecf4d164762..eec399698cc 100644
--- a/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml
+++ b/flow-tests/test-embedding/test-embedding-reusable-theme/pom.xml
@@ -19,7 +19,7 @@
test-embedding
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml b/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml
index 6f1226b8159..fc0afece64b 100644
--- a/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml
+++ b/flow-tests/test-embedding/test-embedding-theme-variant/pom.xml
@@ -20,7 +20,7 @@
com.vaadin
test-embedding
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-embedding-theme-variant
Flow Embedding, theme variant
diff --git a/flow-tests/test-express-build/frontend-add-on/pom.xml b/flow-tests/test-express-build/frontend-add-on/pom.xml
index a5668955572..37bb0298f94 100644
--- a/flow-tests/test-express-build/frontend-add-on/pom.xml
+++ b/flow-tests/test-express-build/frontend-add-on/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
test-express-build
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
frontend-add-on
jar
diff --git a/flow-tests/test-express-build/java-add-on/pom.xml b/flow-tests/test-express-build/java-add-on/pom.xml
index cf53f338a80..bbc62da3dfd 100644
--- a/flow-tests/test-express-build/java-add-on/pom.xml
+++ b/flow-tests/test-express-build/java-add-on/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
test-express-build
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
java-add-on
jar
diff --git a/flow-tests/test-express-build/pom.xml b/flow-tests/test-express-build/pom.xml
index 90a48cb1552..3520ad6cfa2 100644
--- a/flow-tests/test-express-build/pom.xml
+++ b/flow-tests/test-express-build/pom.xml
@@ -5,7 +5,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml b/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml
index c3baf6b76f1..b5edddbdbed 100644
--- a/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml
+++ b/flow-tests/test-express-build/test-dev-bundle-frontend-add-on/pom.xml
@@ -19,7 +19,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml b/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml
index 1bc57b2fb0c..1c13b5e3c1c 100644
--- a/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml
+++ b/flow-tests/test-express-build/test-dev-bundle-java-add-on/pom.xml
@@ -19,7 +19,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml b/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml
index c7813dd1f5c..eacdb1dea06 100644
--- a/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml
+++ b/flow-tests/test-express-build/test-dev-bundle-no-plugin/pom.xml
@@ -19,7 +19,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-express-build/test-dev-bundle/pom.xml b/flow-tests/test-express-build/test-dev-bundle/pom.xml
index b74142a09c0..882d514c0e2 100644
--- a/flow-tests/test-express-build/test-dev-bundle/pom.xml
+++ b/flow-tests/test-express-build/test-dev-bundle/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
test-express-build
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-dev-bundle
jar
diff --git a/flow-tests/test-express-build/test-embedding-express-build/pom.xml b/flow-tests/test-express-build/test-embedding-express-build/pom.xml
index 7d2d7145378..d3fdb974fd5 100644
--- a/flow-tests/test-express-build/test-embedding-express-build/pom.xml
+++ b/flow-tests/test-express-build/test-embedding-express-build/pom.xml
@@ -19,7 +19,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml b/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml
index 2c773238db3..1ac9fa2e8fc 100644
--- a/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml
+++ b/flow-tests/test-express-build/test-flow-maven-plugin/pom.xml
@@ -4,7 +4,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-flow-maven-plugin
maven-plugin
diff --git a/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml b/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml
index f542f36098f..4b5ba41eee5 100644
--- a/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml
+++ b/flow-tests/test-express-build/test-parent-theme-express-build/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-parent-theme-express-bundle
diff --git a/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml b/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml
index 0f509f3b9d9..323199436a5 100644
--- a/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml
+++ b/flow-tests/test-express-build/test-parent-theme-in-frontend-prod/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-parent-theme-in-frontend-prod
diff --git a/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml b/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml
index 9cea82ea93b..35b6894c95f 100644
--- a/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml
+++ b/flow-tests/test-express-build/test-parent-theme-in-frontend/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-parent-theme-in-frontend
diff --git a/flow-tests/test-express-build/test-parent-theme-prod/pom.xml b/flow-tests/test-express-build/test-parent-theme-prod/pom.xml
index 5d038967108..1297e447288 100644
--- a/flow-tests/test-express-build/test-parent-theme-prod/pom.xml
+++ b/flow-tests/test-express-build/test-parent-theme-prod/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-parent-theme-prod
diff --git a/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml b/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml
index abeb293eb5f..54c380e88c9 100644
--- a/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml
+++ b/flow-tests/test-express-build/test-prod-bundle-no-plugin/pom.xml
@@ -19,7 +19,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-express-build/test-prod-bundle/pom.xml b/flow-tests/test-express-build/test-prod-bundle/pom.xml
index f1578a618b6..5fc3a1979c4 100644
--- a/flow-tests/test-express-build/test-prod-bundle/pom.xml
+++ b/flow-tests/test-express-build/test-prod-bundle/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
test-express-build
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-prod-bundle
jar
diff --git a/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml b/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml
index da105386274..6a0b0e04fe3 100644
--- a/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml
+++ b/flow-tests/test-express-build/test-reusable-theme-express-build/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-reusable-theme-express-build
diff --git a/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml b/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml
index e58c7f7192f..b7754ec7116 100644
--- a/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml
+++ b/flow-tests/test-express-build/test-reusable-theme-no-assets/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-reusable-theme-no-assets
diff --git a/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml b/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml
index a57c754985a..4a25dbc4d7f 100644
--- a/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml
+++ b/flow-tests/test-express-build/test-reusing-theme-express-build/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-reusing-theme-express-bundle
diff --git a/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml b/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml
index 4ff69bd785e..9f7914c1cc9 100644
--- a/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml
+++ b/flow-tests/test-express-build/test-theme-dev-bundle/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-theme-dev-bundle
diff --git a/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml b/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml
index 8353e88f200..922e6eee088 100644
--- a/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml
+++ b/flow-tests/test-express-build/test-theme-legacy-components-css-prod/pom.xml
@@ -3,7 +3,7 @@
test-express-build
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
flow-test-theme-legacy-components-css-prod
diff --git a/flow-tests/test-frontend/addon-with-templates/pom.xml b/flow-tests/test-frontend/addon-with-templates/pom.xml
index 7414bc3ccc5..5e1ee0cca9b 100644
--- a/flow-tests/test-frontend/addon-with-templates/pom.xml
+++ b/flow-tests/test-frontend/addon-with-templates/pom.xml
@@ -7,7 +7,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
addon-with-templates
diff --git a/flow-tests/test-frontend/pom.xml b/flow-tests/test-frontend/pom.xml
index bee3599b998..e3785a473aa 100644
--- a/flow-tests/test-frontend/pom.xml
+++ b/flow-tests/test-frontend/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-frontend
Frontend build (npm + Webpack + Vite)
diff --git a/flow-tests/test-frontend/test-bun/pom-production.xml b/flow-tests/test-frontend/test-bun/pom-production.xml
index 8dc89be9d2a..5f794b77174 100644
--- a/flow-tests/test-frontend/test-bun/pom-production.xml
+++ b/flow-tests/test-frontend/test-bun/pom-production.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-bun-production
Flow tests in bun and production mode
diff --git a/flow-tests/test-frontend/test-bun/pom.xml b/flow-tests/test-frontend/test-bun/pom.xml
index 92e0f7a5b01..fcff8756da5 100644
--- a/flow-tests/test-frontend/test-bun/pom.xml
+++ b/flow-tests/test-frontend/test-bun/pom.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-bun-dev-mode
Flow tests in bun and development mode
diff --git a/flow-tests/test-frontend/test-npm/package-lock.json b/flow-tests/test-frontend/test-npm/package-lock.json
index 2c642427e1f..918de5e54ed 100644
--- a/flow-tests/test-frontend/test-npm/package-lock.json
+++ b/flow-tests/test-frontend/test-npm/package-lock.json
@@ -9,30 +9,31 @@
"dependencies": {
"@polymer/polymer": "3.5.1",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/text-field": "24.3.2",
+ "@vaadin/text-field": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
- "lit": "3.1.3",
+ "lit": "3.2.0",
"react": "18.3.1",
"react-dom": "18.3.1",
- "react-router-dom": "6.23.1"
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@types/react": "18.3.2",
+ "@types/react": "18.3.6",
"@types/react-dom": "18.3.0",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.15",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.5",
- "vite": "5.2.11",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.1.0",
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
"workbox-core": "7.1.0",
"workbox-precaching": "7.1.0"
}
@@ -68,12 +69,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
- "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/highlight": "^7.24.2",
+ "@babel/highlight": "^7.24.7",
"picocolors": "^1.0.0"
},
"engines": {
@@ -120,12 +122,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz",
- "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz",
+ "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.5",
+ "@babel/types": "^7.25.6",
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
@@ -135,12 +138,13 @@
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
- "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz",
+ "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -277,12 +281,14 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.24.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
- "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.24.0"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -320,10 +326,11 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz",
- "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz",
+ "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -399,28 +406,31 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
- "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+ "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
- "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-option": {
- "version": "7.23.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
- "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
+ "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.9.0"
}
@@ -454,12 +464,13 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
- "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.24.5",
+ "@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
"js-tokens": "^4.0.0",
"picocolors": "^1.0.0"
@@ -469,10 +480,14 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz",
- "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz",
+ "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.25.6"
+ },
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -658,12 +673,13 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
- "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz",
+ "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1393,12 +1409,13 @@
}
},
"node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz",
- "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz",
+ "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1408,16 +1425,17 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.23.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz",
- "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==",
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz",
+ "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==",
"dev": true,
+ "license": "MIT",
"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.8",
+ "@babel/plugin-syntax-jsx": "^7.24.7",
+ "@babel/types": "^7.25.2"
},
"engines": {
"node": ">=6.9.0"
@@ -1427,12 +1445,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz",
- "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz",
+ "integrity": "sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.22.5"
+ "@babel/plugin-transform-react-jsx": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1442,12 +1461,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz",
- "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
+ "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1457,12 +1477,13 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.23.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz",
- "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
+ "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
+ "@babel/helper-plugin-utils": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1472,13 +1493,14 @@
}
},
"node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz",
- "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz",
+ "integrity": "sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==",
"dev": true,
+ "license": "MIT",
"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"
},
"engines": {
"node": ">=6.9.0"
@@ -1766,17 +1788,18 @@
}
},
"node_modules/@babel/preset-react": {
- "version": "7.24.1",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz",
- "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz",
+ "integrity": "sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==",
"dev": true,
+ "license": "MIT",
"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"
},
"engines": {
"node": ">=6.9.0"
@@ -1804,33 +1827,32 @@
}
},
"node_modules/@babel/template": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
- "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+ "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.24.0",
- "@babel/types": "^7.24.0"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz",
- "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz",
+ "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==",
"dev": true,
+ "license": "MIT",
"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/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.6",
+ "@babel/parser": "^7.25.6",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.6",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1839,13 +1861,14 @@
}
},
"node_modules/@babel/types": {
- "version": "7.24.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz",
- "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz",
+ "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.24.1",
- "@babel/helper-validator-identifier": "^7.24.5",
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -1853,13 +1876,14 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
- "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"aix"
@@ -1869,13 +1893,14 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
- "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -1885,13 +1910,14 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
- "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -1901,13 +1927,14 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
- "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
@@ -1917,13 +1944,14 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
- "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -1933,13 +1961,14 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
- "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -1949,13 +1978,14 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
- "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -1965,13 +1995,14 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
- "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"freebsd"
@@ -1981,13 +2012,14 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
- "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -1997,13 +2029,14 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
- "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2013,13 +2046,14 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
- "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2029,13 +2063,14 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
- "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
"cpu": [
"loong64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2045,13 +2080,14 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
- "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
"cpu": [
"mips64el"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2061,13 +2097,14 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
- "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2077,13 +2114,14 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
- "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2093,13 +2131,14 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
- "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
"cpu": [
"s390x"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2109,13 +2148,14 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
- "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -2125,13 +2165,14 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
- "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"netbsd"
@@ -2141,13 +2182,14 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
- "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"openbsd"
@@ -2157,13 +2199,14 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
- "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"sunos"
@@ -2173,13 +2216,14 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
- "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2189,13 +2233,14 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
- "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2205,13 +2250,14 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
- "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2225,6 +2271,7 @@
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
"integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -2296,14 +2343,16 @@
}
},
"node_modules/@lit-labs/ssr-dom-shim": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz",
- "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g=="
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz",
+ "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==",
+ "license": "BSD-3-Clause"
},
"node_modules/@lit/reactive-element": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
"integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
+ "license": "BSD-3-Clause",
"dependencies": {
"@lit-labs/ssr-dom-shim": "^1.2.0"
}
@@ -2346,13 +2395,15 @@
"node_modules/@open-wc/dedupe-mixin": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@open-wc/dedupe-mixin/-/dedupe-mixin-1.4.0.tgz",
- "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA=="
+ "integrity": "sha512-Sj7gKl1TLcDbF7B6KUhtvr+1UCxdhMbNY5KxdU5IfMFWqL8oy1ZeAcCANjoB1TL0AJTcPmcCFsCbHf8X2jGDUA==",
+ "license": "MIT"
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
"integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
@@ -2366,10 +2417,62 @@
"@webcomponents/shadycss": "^1.9.1"
}
},
+ "node_modules/@preact/signals-core": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.8.0.tgz",
+ "integrity": "sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/@preact/signals-react": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@preact/signals-react/-/signals-react-2.2.0.tgz",
+ "integrity": "sha512-EPYlhXqqcOUxz2gTQGt4rtK6X7Jr04517DcJVZ4I5a7Gxy39haK24uFeVWtiU/tnEReRFcxpQN6poYra1jf68A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@preact/signals-core": "^1.7.0",
+ "use-sync-external-store": "^1.2.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ },
+ "peerDependencies": {
+ "react": "^16.14.0 || 17.x || 18.x"
+ }
+ },
+ "node_modules/@preact/signals-react-transform": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@preact/signals-react-transform/-/signals-react-transform-0.4.0.tgz",
+ "integrity": "sha512-ZH8u5VrFPMmxggjAr7Rl9OLi3yvyDGi4lGQulftkszuiJB15jVy/MMraIfNvWKf2RfjtHLvp3K6Jk19xO/j7Tw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@preact/signals-react": "^2.1.0",
+ "debug": "^4.3.4",
+ "use-sync-external-store": "^1.2.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "react": "^16.14.0 || 17.x || 18.x"
+ }
+ },
"node_modules/@remix-run/router": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz",
- "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==",
+ "version": "1.19.2",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz",
+ "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==",
+ "license": "MIT",
"engines": {
"node": ">=14.0.0"
}
@@ -2400,10 +2503,11 @@
}
},
"node_modules/@rollup/plugin-replace": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz",
- "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==",
+ "version": "5.0.7",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz",
+ "integrity": "sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"magic-string": "^0.30.3"
@@ -2465,208 +2569,224 @@
}
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz",
- "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
+ "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz",
- "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
+ "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz",
- "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
+ "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz",
- "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
+ "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz",
- "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
+ "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz",
- "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
+ "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
"cpu": [
"arm"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.2.tgz",
- "integrity": "sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
+ "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.2.tgz",
- "integrity": "sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
+ "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz",
- "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
+ "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
"cpu": [
"ppc64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz",
- "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
+ "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz",
- "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
+ "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
"cpu": [
"s390x"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz",
- "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
+ "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz",
- "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
+ "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz",
- "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
+ "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz",
- "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
+ "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz",
- "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
+ "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
@@ -2758,10 +2878,11 @@
"dev": true
},
"node_modules/@types/react": {
- "version": "18.3.2",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz",
- "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==",
+ "version": "18.3.6",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.6.tgz",
+ "integrity": "sha512-CnGaRYNu2iZlkGXGrOYtdg5mLK8neySj0woZ4e2wF/eli2E6Sazmq5X+Nrj6OBrrFVQfJWTUFeqAzoRhWQXYvg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -2788,13 +2909,14 @@
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="
},
"node_modules/@vaadin/a11y-base": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.3.4.tgz",
- "integrity": "sha512-iMmHQmHItpyp+49K4GSQKOvF3z0OdU4Fov7mzaVzjbIWoMxHQzhOn7HOiyt4C3iW2GcoFdGbwanV1mn3tcmcbg==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.4.9.tgz",
+ "integrity": "sha512-LRCGppMNG9xGQaq8eA59WXJ8M5iaRb+GvU97UHrygtgUrbmlTSZ3qWDR42arhDy1DDNEZ/xiiRaG1fQGMyUzfw==",
+ "license": "Apache-2.0",
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.3.4",
+ "@vaadin/component-base": "~24.4.9",
"lit": "^3.0.0"
}
},
@@ -2810,9 +2932,10 @@
}
},
"node_modules/@vaadin/component-base": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.3.4.tgz",
- "integrity": "sha512-K7+rRMh5962O+0oJ/TE1Cnge5Ql5agCI/bPcpCH1RffGATK8eUcff17gbOGrxOY+S7TmsHuWyVg8YmssTch44w==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.4.9.tgz",
+ "integrity": "sha512-W0JxJyDUjA0DwjeqVcPtMJNdYBkaYHSuQY7IeMnlJC/mr88NOHb0DYX/SfbGr9ND1hwhmGbfY+dGPb4cQoR36w==",
+ "license": "Apache-2.0",
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
@@ -2822,100 +2945,109 @@
}
},
"node_modules/@vaadin/field-base": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.3.4.tgz",
- "integrity": "sha512-SzRrPyXdjFOsAkKPkO41mYfUNx34YqQLV2aNfWpfayeSaxzZbid5niKOYGpRQWukht+8icMmbfyJrFEmuBMkSw==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.4.9.tgz",
+ "integrity": "sha512-zvecoO0xtAMB0LHdUJ10hlVulnFB5F3qBwjGHS9nYNIt9jkylSmmlE4QTg7grEAWzkV85xfhrX7xGEwTT8/u0g==",
+ "license": "Apache-2.0",
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.3.4",
- "@vaadin/component-base": "~24.3.4",
+ "@vaadin/a11y-base": "~24.4.9",
+ "@vaadin/component-base": "~24.4.9",
"lit": "^3.0.0"
}
},
"node_modules/@vaadin/icon": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.3.4.tgz",
- "integrity": "sha512-SsiSfpIKoqHxpSSpLIr8fBdgOp3fLdjq2tji61WIrQVVYbbE3t7jJY03cJUDSvDlFAhVv4XkLeJVLAVNAbAkvg==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.4.9.tgz",
+ "integrity": "sha512-h3k0+/JY2cL4/6FFjwXIbpmtCbGY1CaPkuaxn6aEFD5I6LVpcWIfVZlvpUDMpjEgj1AGMgFp4GeJx3iPCh9phw==",
+ "license": "Apache-2.0",
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.3.4",
- "@vaadin/vaadin-lumo-styles": "~24.3.4",
- "@vaadin/vaadin-themable-mixin": "~24.3.4",
+ "@vaadin/component-base": "~24.4.9",
+ "@vaadin/vaadin-lumo-styles": "~24.4.9",
+ "@vaadin/vaadin-themable-mixin": "~24.4.9",
"lit": "^3.0.0"
}
},
"node_modules/@vaadin/input-container": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.3.4.tgz",
- "integrity": "sha512-izHc0Y5a0vr2X9Rkb6g6PhOBhWbOCd7AydbBOZBLmJWNVv/tavr8B3rqeAXDLS9yNz0XoIO5k95TUDtntF30GA==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.4.9.tgz",
+ "integrity": "sha512-lR5Mhp2hUrLnJDf9i96wS06WDYbqQrQz1ybf/Z+eLcxyElXvSUHpXJZFIYpNskYaFPxO9uHwyklXQtb8ZeEtaQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.3.4",
- "@vaadin/vaadin-lumo-styles": "~24.3.4",
- "@vaadin/vaadin-material-styles": "~24.3.4",
- "@vaadin/vaadin-themable-mixin": "~24.3.4",
+ "@vaadin/component-base": "~24.4.9",
+ "@vaadin/vaadin-lumo-styles": "~24.4.9",
+ "@vaadin/vaadin-material-styles": "~24.4.9",
+ "@vaadin/vaadin-themable-mixin": "~24.4.9",
"lit": "^3.0.0"
}
},
"node_modules/@vaadin/text-field": {
- "version": "24.3.2",
- "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.3.2.tgz",
- "integrity": "sha512-v+faXP3eyH6bESjgc9E01Rm1+PMgwVDjpIOZbClqeaehjtr6SqGPqeinXwTHslOV4m1UnyJ4PCFFdkpvlSWnZA==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.4.9.tgz",
+ "integrity": "sha512-kghQFvpLBNK3kvkOK1zeKRdWOfhek8lGd9xENPGbh6p1St+dXW3BQzfX10Xb+yVKzL7B3j7j6b/kTrTv+SZRIw==",
+ "license": "Apache-2.0",
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"@polymer/polymer": "^3.0.0",
- "@vaadin/a11y-base": "~24.3.2",
- "@vaadin/component-base": "~24.3.2",
- "@vaadin/field-base": "~24.3.2",
- "@vaadin/input-container": "~24.3.2",
- "@vaadin/vaadin-lumo-styles": "~24.3.2",
- "@vaadin/vaadin-material-styles": "~24.3.2",
- "@vaadin/vaadin-themable-mixin": "~24.3.2",
+ "@vaadin/a11y-base": "~24.4.9",
+ "@vaadin/component-base": "~24.4.9",
+ "@vaadin/field-base": "~24.4.9",
+ "@vaadin/input-container": "~24.4.9",
+ "@vaadin/vaadin-lumo-styles": "~24.4.9",
+ "@vaadin/vaadin-material-styles": "~24.4.9",
+ "@vaadin/vaadin-themable-mixin": "~24.4.9",
"lit": "^3.0.0"
}
},
"node_modules/@vaadin/vaadin-development-mode-detector": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.6.tgz",
- "integrity": "sha512-N6a5nLT/ytEUlpPo+nvdCKIGoyNjPsj3rzPGvGYK8x9Ceg76OTe1xI/GtN71mRW9e2HUScR0kCNOkl1Z63YDjw=="
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-development-mode-detector/-/vaadin-development-mode-detector-2.0.7.tgz",
+ "integrity": "sha512-9FhVhr0ynSR3X2ao+vaIEttcNU5XfzCbxtmYOV8uIRnUCtNgbvMOIcyGBvntsX9I5kvIP2dV3cFAOG9SILJzEA==",
+ "license": "Apache-2.0"
},
"node_modules/@vaadin/vaadin-lumo-styles": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.3.4.tgz",
- "integrity": "sha512-c5caOhH/8P1ZiHeUsH6dsxGf9wplTeI5RN0BjM1bdT4ziOt3CUY1OZ8VtINjUz7gE7+x4H+QtarTLjMvrWNB0g==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.4.9.tgz",
+ "integrity": "sha512-tQnbicQBIyvCsj21AHur/SmY+2fo1dKmNkgD/0aEWWjZpi1UcxHQpe8hXhyYVeY2g3hzfc/efXC9V/uLJKxUNA==",
+ "license": "Apache-2.0",
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.3.4",
- "@vaadin/icon": "~24.3.4",
- "@vaadin/vaadin-themable-mixin": "~24.3.4"
+ "@vaadin/component-base": "~24.4.9",
+ "@vaadin/icon": "~24.4.9",
+ "@vaadin/vaadin-themable-mixin": "~24.4.9"
}
},
"node_modules/@vaadin/vaadin-material-styles": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.3.4.tgz",
- "integrity": "sha512-xsiB34R/91VU/GUaym+QGu8T1dTOc3ZjN3qQMjkG8CcwCmNf9z/htXmJWsWDSu83gtFMW9mA1k0QFi5Bhoc1Vg==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.4.9.tgz",
+ "integrity": "sha512-trOv8L/7YnCIosLvfYR0HCFbEoQGA/FwHbBMl6n1mStikDLtoEEea6tIb2JSLcMTL2vuTUzmgzINKebEuaqgDQ==",
+ "license": "Apache-2.0",
"dependencies": {
"@polymer/polymer": "^3.0.0",
- "@vaadin/component-base": "~24.3.4",
- "@vaadin/vaadin-themable-mixin": "~24.3.4"
+ "@vaadin/component-base": "~24.4.9",
+ "@vaadin/vaadin-themable-mixin": "~24.4.9"
}
},
"node_modules/@vaadin/vaadin-themable-mixin": {
- "version": "24.3.4",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.3.4.tgz",
- "integrity": "sha512-4q9swB+THLbva6rwd95sWMQiNGvUjWltFnlH0GCY+KLuG0crQ1P4yGlIMK1GmzNjNGk6Q2qYpt05uMpk6EhJnw==",
+ "version": "24.4.9",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.4.9.tgz",
+ "integrity": "sha512-9fxQuRGJ5AqooHBeeTvFN3S7etqFj9uv/8gUXr6qHyHVaqRYrPqI+gdPR/K7Q8fVIpONz/FNo0kby8FAwrY7lw==",
+ "license": "Apache-2.0",
"dependencies": {
"@open-wc/dedupe-mixin": "^1.3.0",
"lit": "^3.0.0"
}
},
"node_modules/@vaadin/vaadin-usage-statistics": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@vaadin/vaadin-usage-statistics/-/vaadin-usage-statistics-2.1.2.tgz",
- "integrity": "sha512-xKs1PvRfTXsG0eWWcImLXWjv7D+f1vfoIvovppv6pZ5QX8xgcxWUdNgERlOOdGt3CTuxQXukTBW3+Qfva+OXSg==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@vaadin/vaadin-usage-statistics/-/vaadin-usage-statistics-2.1.3.tgz",
+ "integrity": "sha512-8r4TNknD7OJQADe3VygeofFR7UNAXZ2/jjBFP5dgI8+2uMfnuGYgbuHivasKr9WSQ64sPej6m8rDoM1uSllXjQ==",
"hasInstallScript": true,
+ "license": "Apache-2.0",
"dependencies": {
"@vaadin/vaadin-development-mode-detector": "^2.0.0"
},
@@ -2924,16 +3056,17 @@
}
},
"node_modules/@vitejs/plugin-react": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz",
- "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
+ "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@babel/core": "^7.23.5",
- "@babel/plugin-transform-react-jsx-self": "^7.23.3",
- "@babel/plugin-transform-react-jsx-source": "^7.23.3",
+ "@babel/core": "^7.24.5",
+ "@babel/plugin-transform-react-jsx-self": "^7.24.5",
+ "@babel/plugin-transform-react-jsx-source": "^7.24.1",
"@types/babel__core": "^7.20.5",
- "react-refresh": "^0.14.0"
+ "react-refresh": "^0.14.2"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -3011,10 +3144,11 @@
}
},
"node_modules/ansi-regex": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -3027,6 +3161,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -3082,10 +3217,11 @@
}
},
"node_modules/async": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
- "dev": true
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/at-least-node": {
"version": "1.0.0",
@@ -3294,6 +3430,7 @@
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -3440,6 +3577,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
@@ -3448,7 +3586,8 @@
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/commander": {
"version": "8.3.0",
@@ -3603,7 +3742,8 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ejs": {
"version": "3.1.9",
@@ -3630,7 +3770,8 @@
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
"integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/es-abstract": {
"version": "1.22.3",
@@ -3717,11 +3858,12 @@
}
},
"node_modules/esbuild": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
- "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
@@ -3729,29 +3871,29 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.20.2",
- "@esbuild/android-arm": "0.20.2",
- "@esbuild/android-arm64": "0.20.2",
- "@esbuild/android-x64": "0.20.2",
- "@esbuild/darwin-arm64": "0.20.2",
- "@esbuild/darwin-x64": "0.20.2",
- "@esbuild/freebsd-arm64": "0.20.2",
- "@esbuild/freebsd-x64": "0.20.2",
- "@esbuild/linux-arm": "0.20.2",
- "@esbuild/linux-arm64": "0.20.2",
- "@esbuild/linux-ia32": "0.20.2",
- "@esbuild/linux-loong64": "0.20.2",
- "@esbuild/linux-mips64el": "0.20.2",
- "@esbuild/linux-ppc64": "0.20.2",
- "@esbuild/linux-riscv64": "0.20.2",
- "@esbuild/linux-s390x": "0.20.2",
- "@esbuild/linux-x64": "0.20.2",
- "@esbuild/netbsd-x64": "0.20.2",
- "@esbuild/openbsd-x64": "0.20.2",
- "@esbuild/sunos-x64": "0.20.2",
- "@esbuild/win32-arm64": "0.20.2",
- "@esbuild/win32-ia32": "0.20.2",
- "@esbuild/win32-x64": "0.20.2"
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
}
},
"node_modules/escalade": {
@@ -4008,23 +4150,22 @@
}
},
"node_modules/glob": {
- "version": "10.3.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz",
- "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==",
+ "version": "10.4.5",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.11.0"
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
@@ -4118,6 +4259,7 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -4582,16 +4724,14 @@
"dev": true
},
"node_modules/jackspeak": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">=14"
- },
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
@@ -4781,29 +4921,32 @@
}
},
"node_modules/lit": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.1.3.tgz",
- "integrity": "sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.0.tgz",
+ "integrity": "sha512-s6tI33Lf6VpDu7u4YqsSX78D28bYQulM+VAzsGch4fx2H0eLZnJsUBsPWmGYSGoKDNbjtRv02rio1o+UdPVwvw==",
+ "license": "BSD-3-Clause",
"dependencies": {
"@lit/reactive-element": "^2.0.4",
- "lit-element": "^4.0.4",
- "lit-html": "^3.1.2"
+ "lit-element": "^4.1.0",
+ "lit-html": "^3.2.0"
}
},
"node_modules/lit-element": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.0.4.tgz",
- "integrity": "sha512-98CvgulX6eCPs6TyAIQoJZBCQPo80rgXR+dVBs61cstJXqtI+USQZAbA4gFHh6L/mxBx9MrgPLHLsUgDUHAcCQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.0.tgz",
+ "integrity": "sha512-gSejRUQJuMQjV2Z59KAS/D4iElUhwKpIyJvZ9w+DIagIQjfJnhR20h2Q5ddpzXGS+fF0tMZ/xEYGMnKmaI/iww==",
+ "license": "BSD-3-Clause",
"dependencies": {
"@lit-labs/ssr-dom-shim": "^1.2.0",
"@lit/reactive-element": "^2.0.4",
- "lit-html": "^3.1.2"
+ "lit-html": "^3.2.0"
}
},
"node_modules/lit-html": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.1.2.tgz",
- "integrity": "sha512-3OBZSUrPnAHoKJ9AMjRL/m01YJxQMf+TMHanNtTHG68ubjnZxK0RFl102DPzsw4mWnHibfZIBJm3LWCZ/LmMvg==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz",
+ "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==",
+ "license": "BSD-3-Clause",
"dependencies": {
"@types/trusted-types": "^2.0.2"
}
@@ -4899,10 +5042,11 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.3",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
- "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -4914,10 +5058,11 @@
}
},
"node_modules/minipass": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz",
- "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -5019,6 +5164,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -5115,6 +5261,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
+ "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -5165,10 +5318,11 @@
}
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -5183,9 +5337,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "version": "8.4.47",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+ "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
"dev": true,
"funding": [
{
@@ -5201,10 +5355,11 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
+ "picocolors": "^1.1.0",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -5299,20 +5454,22 @@
}
},
"node_modules/react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-router": {
- "version": "6.23.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz",
- "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==",
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz",
+ "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==",
+ "license": "MIT",
"dependencies": {
- "@remix-run/router": "1.16.1"
+ "@remix-run/router": "1.19.2"
},
"engines": {
"node": ">=14.0.0"
@@ -5322,12 +5479,13 @@
}
},
"node_modules/react-router-dom": {
- "version": "6.23.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz",
- "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==",
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz",
+ "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==",
+ "license": "MIT",
"dependencies": {
- "@remix-run/router": "1.16.1",
- "react-router": "6.23.1"
+ "@remix-run/router": "1.19.2",
+ "react-router": "6.26.2"
},
"engines": {
"node": ">=14.0.0"
@@ -5483,10 +5641,11 @@
}
},
"node_modules/rollup": {
- "version": "4.17.2",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz",
- "integrity": "sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==",
+ "version": "4.22.4",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
+ "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "1.0.5"
},
@@ -5498,22 +5657,22 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.17.2",
- "@rollup/rollup-android-arm64": "4.17.2",
- "@rollup/rollup-darwin-arm64": "4.17.2",
- "@rollup/rollup-darwin-x64": "4.17.2",
- "@rollup/rollup-linux-arm-gnueabihf": "4.17.2",
- "@rollup/rollup-linux-arm-musleabihf": "4.17.2",
- "@rollup/rollup-linux-arm64-gnu": "4.17.2",
- "@rollup/rollup-linux-arm64-musl": "4.17.2",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.17.2",
- "@rollup/rollup-linux-riscv64-gnu": "4.17.2",
- "@rollup/rollup-linux-s390x-gnu": "4.17.2",
- "@rollup/rollup-linux-x64-gnu": "4.17.2",
- "@rollup/rollup-linux-x64-musl": "4.17.2",
- "@rollup/rollup-win32-arm64-msvc": "4.17.2",
- "@rollup/rollup-win32-ia32-msvc": "4.17.2",
- "@rollup/rollup-win32-x64-msvc": "4.17.2",
+ "@rollup/rollup-android-arm-eabi": "4.22.4",
+ "@rollup/rollup-android-arm64": "4.22.4",
+ "@rollup/rollup-darwin-arm64": "4.22.4",
+ "@rollup/rollup-darwin-x64": "4.22.4",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
+ "@rollup/rollup-linux-arm-musleabihf": "4.22.4",
+ "@rollup/rollup-linux-arm64-gnu": "4.22.4",
+ "@rollup/rollup-linux-arm64-musl": "4.22.4",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
+ "@rollup/rollup-linux-riscv64-gnu": "4.22.4",
+ "@rollup/rollup-linux-s390x-gnu": "4.22.4",
+ "@rollup/rollup-linux-x64-gnu": "4.22.4",
+ "@rollup/rollup-linux-x64-musl": "4.22.4",
+ "@rollup/rollup-win32-arm64-msvc": "4.22.4",
+ "@rollup/rollup-win32-ia32-msvc": "4.22.4",
+ "@rollup/rollup-win32-x64-msvc": "4.22.4",
"fsevents": "~2.3.2"
}
},
@@ -5749,10 +5908,11 @@
}
},
"node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
@@ -5788,6 +5948,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
"integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -5806,6 +5967,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -5820,6 +5982,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -5828,13 +5991,15 @@
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/string-width-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -5935,6 +6100,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
"integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -5951,6 +6117,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -5963,6 +6130,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -5996,6 +6164,7 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -6239,10 +6408,11 @@
}
},
"node_modules/typescript": {
- "version": "5.4.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
- "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
+ "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -6384,15 +6554,26 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/vite": {
- "version": "5.2.11",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.11.tgz",
- "integrity": "sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==",
+ "version": "5.4.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz",
+ "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esbuild": "^0.20.1",
- "postcss": "^8.4.38",
- "rollup": "^4.13.0"
+ "esbuild": "^0.21.3",
+ "postcss": "^8.4.43",
+ "rollup": "^4.20.0"
},
"bin": {
"vite": "bin/vite.js"
@@ -6411,6 +6592,7 @@
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
+ "sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
@@ -6428,6 +6610,9 @@
"sass": {
"optional": true
},
+ "sass-embedded": {
+ "optional": true
+ },
"stylus": {
"optional": true
},
@@ -6440,10 +6625,11 @@
}
},
"node_modules/vite-plugin-checker": {
- "version": "0.6.4",
- "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.4.tgz",
- "integrity": "sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.8.0.tgz",
+ "integrity": "sha512-UA5uzOGm97UvZRTdZHiQVYFnd86AVn8EVaD4L3PoVzxH+IZSfaAw14WGFwX9QS23UW3lV/5bVKZn6l0w+q9P0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.12.13",
"ansi-escapes": "^4.3.0",
@@ -6453,7 +6639,6 @@
"fast-glob": "^3.2.7",
"fs-extra": "^11.1.0",
"npm-run-path": "^4.0.1",
- "semver": "^7.5.0",
"strip-ansi": "^6.0.0",
"tiny-invariant": "^1.1.0",
"vscode-languageclient": "^7.0.0",
@@ -6465,6 +6650,7 @@
"node": ">=14.16"
},
"peerDependencies": {
+ "@biomejs/biome": ">=1.7",
"eslint": ">=7",
"meow": "^9.0.0",
"optionator": "^0.9.1",
@@ -6473,9 +6659,12 @@
"vite": ">=2.0.0",
"vls": "*",
"vti": "*",
- "vue-tsc": ">=1.3.9"
+ "vue-tsc": "~2.1.6"
},
"peerDependenciesMeta": {
+ "@biomejs/biome": {
+ "optional": true
+ },
"eslint": {
"optional": true
},
@@ -6569,33 +6758,6 @@
"node": ">=8"
}
},
- "node_modules/vite-plugin-checker/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/vite-plugin-checker/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/vite-plugin-checker/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@@ -6620,12 +6782,6 @@
"node": ">=8"
}
},
- "node_modules/vite-plugin-checker/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/vscode-jsonrpc": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
@@ -6831,10 +6987,11 @@
}
},
"node_modules/workbox-build": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.1.0.tgz",
- "integrity": "sha512-F6R94XAxjB2j4ETMkP1EXKfjECOtDmyvt0vz3BzgWJMI68TNSXIVNkgatwUKBlPGOfy9n2F/4voYRNAhEvPJNg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.1.1.tgz",
+ "integrity": "sha512-WdkVdC70VMpf5NBCtNbiwdSZeKVuhTEd5PV3mAwpTQCGAB5XbOny1P9egEgNdetv4srAMmMKjvBk4RD58LpooA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@apideck/better-ajv-errors": "^0.3.1",
"@babel/core": "^7.24.4",
@@ -7165,6 +7322,7 @@
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
"integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -7183,6 +7341,7 @@
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -7200,6 +7359,7 @@
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -7209,6 +7369,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -7224,6 +7385,7 @@
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -7235,19 +7397,22 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/wrap-ansi-cjs/node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -7262,6 +7427,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -7274,6 +7440,7 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
"integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
diff --git a/flow-tests/test-frontend/test-npm/pom-production.xml b/flow-tests/test-frontend/test-npm/pom-production.xml
index f16d7876c0f..292c3bee64e 100644
--- a/flow-tests/test-frontend/test-npm/pom-production.xml
+++ b/flow-tests/test-frontend/test-npm/pom-production.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-npm-production
Flow tests in npm and production mode
diff --git a/flow-tests/test-frontend/test-npm/pom.xml b/flow-tests/test-frontend/test-npm/pom.xml
index e22aa24ce2e..14b7483808f 100644
--- a/flow-tests/test-frontend/test-npm/pom.xml
+++ b/flow-tests/test-frontend/test-npm/pom.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-npm-dev-mode
Flow tests in npm and development mode
diff --git a/flow-tests/test-frontend/test-pnpm/pom-production.xml b/flow-tests/test-frontend/test-pnpm/pom-production.xml
index 763c46d3760..ffcddef88dc 100644
--- a/flow-tests/test-frontend/test-pnpm/pom-production.xml
+++ b/flow-tests/test-frontend/test-pnpm/pom-production.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-pnpm-production
Flow tests in pnpm and production mode
diff --git a/flow-tests/test-frontend/test-pnpm/pom.xml b/flow-tests/test-frontend/test-pnpm/pom.xml
index f969f76524a..538602647b5 100644
--- a/flow-tests/test-frontend/test-pnpm/pom.xml
+++ b/flow-tests/test-frontend/test-pnpm/pom.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-pnpm-dev-mode
Flow tests in pnpm and development mode
diff --git a/flow-tests/test-frontend/vite-basics/package.json b/flow-tests/test-frontend/vite-basics/package.json
index 8d4b3bb354d..a739f2f1974 100644
--- a/flow-tests/test-frontend/vite-basics/package.json
+++ b/flow-tests/test-frontend/vite-basics/package.json
@@ -10,42 +10,41 @@
"@testscope/all": "../vite-test-assets/packages/@testscope/all",
"@testscope/button": "../vite-test-assets/packages/@testscope/button",
"@testscope/map": "../vite-test-assets/packages/@testscope/map",
- "@types/react": "18.2.50",
- "@types/react-dom": "18.2.18",
"@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/polymer-legacy-adapter": "24.3.2",
- "@vaadin/text-field": "24.3.2",
- "@vaadin/vaadin-lumo-styles": "24.3.2",
- "@vaadin/vaadin-themable-mixin": "24.3.2",
+ "@vaadin/polymer-legacy-adapter": "24.4.9",
+ "@vaadin/text-field": "24.4.9",
+ "@vaadin/vaadin-lumo-styles": "24.4.9",
+ "@vaadin/vaadin-themable-mixin": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
"copy-to-clipboard": "^3.3.1",
- "lit": "3.1.2",
+ "lit": "3.2.0",
"package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm",
"package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-router-dom": "6.22.3"
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.12",
+ "@types/react": "18.3.6",
+ "@types/react-dom": "18.3.0",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.5",
- "vite": "5.2.8",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.0.0",
- "workbox-core": "7.0.0",
- "workbox-precaching": "7.0.0",
- "@types/react-dom": "18.2.24",
- "@types/react": "18.2.75"
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
+ "workbox-core": "7.1.0",
+ "workbox-precaching": "7.1.0"
},
"overrides": {
"@testscope/all": "$@testscope/all",
@@ -80,39 +79,38 @@
"vaadin": {
"dependencies": {
"@polymer/polymer": "3.5.1",
- "@types/react": "18.2.50",
- "@types/react-dom": "18.2.18",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/polymer-legacy-adapter": "24.3.2",
- "@vaadin/text-field": "24.3.2",
- "@vaadin/vaadin-lumo-styles": "24.3.2",
- "@vaadin/vaadin-themable-mixin": "24.3.2",
+ "@vaadin/polymer-legacy-adapter": "24.4.9",
+ "@vaadin/text-field": "24.4.9",
+ "@vaadin/vaadin-lumo-styles": "24.4.9",
+ "@vaadin/vaadin-themable-mixin": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
- "lit": "3.1.2",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-router-dom": "6.22.3"
+ "lit": "3.2.0",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.12",
+ "@types/react": "18.3.6",
+ "@types/react-dom": "18.3.0",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.5",
- "vite": "5.2.8",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.0.0",
- "workbox-core": "7.0.0",
- "workbox-precaching": "7.0.0",
- "@types/react-dom": "18.2.24",
- "@types/react": "18.2.75"
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
+ "workbox-core": "7.1.0",
+ "workbox-precaching": "7.1.0"
},
- "hash": "e90bc4a4ce1033473f055c0de880879f451c8c914377d7161e427eabede4c550"
+ "hash": "33293ce958b1055dda23f1f84cb691c7a7bb69dfd56804d54cc3cedf8d422ebd"
}
}
diff --git a/flow-tests/test-frontend/vite-basics/pom.xml b/flow-tests/test-frontend/vite-basics/pom.xml
index c2e4b51acfd..f9d84923740 100644
--- a/flow-tests/test-frontend/vite-basics/pom.xml
+++ b/flow-tests/test-frontend/vite-basics/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-basics
Vite dev mode functionality
diff --git a/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java b/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java
index 86e56451a80..dc5b10301cc 100644
--- a/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java
+++ b/flow-tests/test-frontend/vite-basics/src/main/java/com/vaadin/viteapp/views/empty/MainView.java
@@ -20,7 +20,6 @@
@JsModule("./importdir.js")
@JsModule("./bad.ts")
@JsModule("./testfile.css.js")
-@JsModule("./toplevelawait-main.js")
@CssImport(value = "./cssimport-textfield.css", themeFor = "vaadin-text-field")
@CssImport(value = "./cssimport.css")
public class MainView extends Div {
diff --git a/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java b/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java
index fe045717fd7..0359e7d8f13 100644
--- a/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java
+++ b/flow-tests/test-frontend/vite-basics/src/test/java/com/vaadin/viteapp/BasicsIT.java
@@ -63,10 +63,4 @@ public void importFromDirectoryWorks() {
public void bootstrapTsCanBeModified() {
Assert.assertEquals(1L, executeScript("return window.bootstrapMod"));
}
-
- @Test
- public void toplevelAwaitWorks() {
- Assert.assertEquals("This is the value set in other.js",
- executeScript("return window.topLevelAwaitValue"));
- }
}
diff --git a/flow-tests/test-frontend/vite-context-path/package.json b/flow-tests/test-frontend/vite-context-path/package.json
index 002ff3725ae..2e493b8da78 100644
--- a/flow-tests/test-frontend/vite-context-path/package.json
+++ b/flow-tests/test-frontend/vite-context-path/package.json
@@ -7,77 +7,75 @@
"@testscope/all": "../vite-test-assets/packages/@testscope/all",
"@testscope/button": "../vite-test-assets/packages/@testscope/button",
"@testscope/map": "../vite-test-assets/packages/@testscope/map",
- "@types/react": "18.2.50",
- "@types/react-dom": "18.2.18",
"@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles-old",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/polymer-legacy-adapter": "24.3.2",
- "@vaadin/text-field": "24.3.2",
- "@vaadin/vaadin-lumo-styles": "24.3.2",
- "@vaadin/vaadin-themable-mixin": "24.3.2",
+ "@vaadin/polymer-legacy-adapter": "24.4.9",
+ "@vaadin/text-field": "24.4.9",
+ "@vaadin/vaadin-lumo-styles": "24.4.9",
+ "@vaadin/vaadin-themable-mixin": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
- "lit": "3.1.2",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-router-dom": "6.22.3"
+ "lit": "3.2.0",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.12",
+ "@types/react": "18.3.6",
+ "@types/react-dom": "18.3.0",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.3",
- "vite": "5.2.7",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.0.0",
- "workbox-core": "7.0.0",
- "workbox-precaching": "7.0.0",
- "@types/react-dom": "18.2.23",
- "@types/react": "18.2.73"
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
+ "workbox-core": "7.1.0",
+ "workbox-precaching": "7.1.0"
},
"vaadin": {
"dependencies": {
"@polymer/polymer": "3.5.1",
- "@types/react": "18.2.50",
- "@types/react-dom": "18.2.18",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/polymer-legacy-adapter": "24.3.2",
- "@vaadin/text-field": "24.3.2",
- "@vaadin/vaadin-lumo-styles": "24.3.2",
- "@vaadin/vaadin-themable-mixin": "24.3.2",
+ "@vaadin/polymer-legacy-adapter": "24.4.9",
+ "@vaadin/text-field": "24.4.9",
+ "@vaadin/vaadin-lumo-styles": "24.4.9",
+ "@vaadin/vaadin-themable-mixin": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
- "lit": "3.1.2",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-router-dom": "6.22.3"
+ "lit": "3.2.0",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.12",
+ "@types/react": "18.3.6",
+ "@types/react-dom": "18.3.0",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.3",
- "vite": "5.2.7",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.0.0",
- "workbox-core": "7.0.0",
- "workbox-precaching": "7.0.0",
- "@types/react-dom": "18.2.23",
- "@types/react": "18.2.73"
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
+ "workbox-core": "7.1.0",
+ "workbox-precaching": "7.1.0"
},
- "hash": "42b329c0496d035ac665b14342e70adcabb9da860f090fd050d89d40d2dc672d"
+ "hash": "40d6c597777a52f9e2889724347641d5be02fd06c9a1ae15479d6ebcf12bec2b"
},
"overrides": {
"@polymer/polymer": "$@polymer/polymer",
diff --git a/flow-tests/test-frontend/vite-context-path/pom-production.xml b/flow-tests/test-frontend/vite-context-path/pom-production.xml
index 9b95d1445f1..454696bcd37 100644
--- a/flow-tests/test-frontend/vite-context-path/pom-production.xml
+++ b/flow-tests/test-frontend/vite-context-path/pom-production.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-context-path-production
Vite with a context path (production mode)
diff --git a/flow-tests/test-frontend/vite-context-path/pom.xml b/flow-tests/test-frontend/vite-context-path/pom.xml
index 80ac113b3f2..751eaa80cc8 100644
--- a/flow-tests/test-frontend/vite-context-path/pom.xml
+++ b/flow-tests/test-frontend/vite-context-path/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-context-path
Vite with a context path
diff --git a/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml b/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml
index 1fdc5750d2b..fbbb51ae3e4 100644
--- a/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml
+++ b/flow-tests/test-frontend/vite-embedded-webcomponent-resync/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-embedded-webcomponent-resync
Vite embedded app - session resync
diff --git a/flow-tests/test-frontend/vite-embedded/pom-production.xml b/flow-tests/test-frontend/vite-embedded/pom-production.xml
index d5109e9d79f..cd55c0fdb0d 100644
--- a/flow-tests/test-frontend/vite-embedded/pom-production.xml
+++ b/flow-tests/test-frontend/vite-embedded/pom-production.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-embedded-production
Vite embedded app (production mode)
diff --git a/flow-tests/test-frontend/vite-embedded/pom.xml b/flow-tests/test-frontend/vite-embedded/pom.xml
index 0f629b96f30..d9ff636c788 100644
--- a/flow-tests/test-frontend/vite-embedded/pom.xml
+++ b/flow-tests/test-frontend/vite-embedded/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-embedded
Vite embedded app
diff --git a/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml b/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml
index 80a0d62a997..e2bf2a8118a 100644
--- a/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml
+++ b/flow-tests/test-frontend/vite-production-custom-frontend/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-production-custom-frontend
Vite production mode functionality (custom frontend directory)
diff --git a/flow-tests/test-frontend/vite-production/package.json b/flow-tests/test-frontend/vite-production/package.json
index 85c91283123..e9f645ee2e5 100644
--- a/flow-tests/test-frontend/vite-production/package.json
+++ b/flow-tests/test-frontend/vite-production/package.json
@@ -9,75 +9,75 @@
"@testscope/map": "../vite-test-assets/packages/@testscope/map",
"@vaadin/bundles": "../vite-test-assets/packages/@vaadin/bundles",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/polymer-legacy-adapter": "24.3.2",
- "@vaadin/text-field": "24.3.2",
- "@vaadin/vaadin-lumo-styles": "24.3.2",
- "@vaadin/vaadin-themable-mixin": "24.3.2",
+ "@vaadin/polymer-legacy-adapter": "24.4.9",
+ "@vaadin/text-field": "24.4.9",
+ "@vaadin/vaadin-lumo-styles": "24.4.9",
+ "@vaadin/vaadin-themable-mixin": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
- "lit": "3.1.2",
+ "lit": "3.2.0",
"package-outside-npm": "file:../vite-test-assets/packages/package-outside-npm",
"package2-outside-npm": "../vite-test-assets/packages/package2-outside-npm",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-router-dom": "6.22.3"
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@types/react": "18.2.73",
- "@types/react-dom": "18.2.23",
- "@vaadin/hilla-file-router": "24.4.0-alpha10",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.12",
+ "@types/react": "18.3.6",
+ "@types/react-dom": "18.3.0",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.3",
- "vite": "5.2.7",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.0.0",
- "workbox-core": "7.0.0",
- "workbox-precaching": "7.0.0"
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
+ "workbox-core": "7.1.0",
+ "workbox-precaching": "7.1.0"
},
"vaadin": {
"dependencies": {
"@polymer/polymer": "3.5.1",
"@vaadin/common-frontend": "0.0.19",
- "@vaadin/polymer-legacy-adapter": "24.3.2",
- "@vaadin/text-field": "24.3.2",
- "@vaadin/vaadin-lumo-styles": "24.3.2",
- "@vaadin/vaadin-themable-mixin": "24.3.2",
+ "@vaadin/polymer-legacy-adapter": "24.4.9",
+ "@vaadin/text-field": "24.4.9",
+ "@vaadin/vaadin-lumo-styles": "24.4.9",
+ "@vaadin/vaadin-themable-mixin": "24.4.9",
"construct-style-sheets-polyfill": "3.1.0",
- "lit": "3.1.2",
- "react": "18.2.0",
- "react-dom": "18.2.0",
- "react-router-dom": "6.22.3"
+ "lit": "3.2.0",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-router-dom": "6.26.2"
},
"devDependencies": {
- "@babel/preset-react": "7.24.1",
- "@rollup/plugin-replace": "5.0.5",
+ "@babel/preset-react": "7.24.7",
+ "@preact/signals-react-transform": "0.4.0",
+ "@rollup/plugin-replace": "5.0.7",
"@rollup/pluginutils": "5.1.0",
- "@types/react": "18.2.73",
- "@types/react-dom": "18.2.23",
- "@vaadin/hilla-file-router": "24.4.0-alpha10",
- "@vitejs/plugin-react": "4.2.1",
- "async": "3.2.5",
- "glob": "10.3.12",
+ "@types/react": "18.3.6",
+ "@types/react-dom": "18.3.0",
+ "@vitejs/plugin-react": "4.3.1",
+ "async": "3.2.6",
+ "glob": "10.4.5",
"rollup-plugin-brotli": "3.1.0",
"rollup-plugin-visualizer": "5.12.0",
"strip-css-comments": "5.0.0",
"transform-ast": "2.4.4",
- "typescript": "5.4.3",
- "vite": "5.2.7",
- "vite-plugin-checker": "0.6.4",
- "workbox-build": "7.0.0",
- "workbox-core": "7.0.0",
- "workbox-precaching": "7.0.0"
+ "typescript": "5.6.2",
+ "vite": "5.4.6",
+ "vite-plugin-checker": "0.8.0",
+ "workbox-build": "7.1.1",
+ "workbox-core": "7.1.0",
+ "workbox-precaching": "7.1.0"
},
- "hash": "3e6f5eb375e26456a9dd6ef61bb3b9cd65d133ad45ee8e1c5bc98cfef2de0dfa"
+ "hash": "9b9b16ace160b5a4c78b6bad7c1d56b4e004e91e796a1cc1c90073ab8c15742f"
},
"overrides": {
"@polymer/polymer": "$@polymer/polymer",
diff --git a/flow-tests/test-frontend/vite-production/pom.xml b/flow-tests/test-frontend/vite-production/pom.xml
index df0f1471b4a..e1e740db379 100644
--- a/flow-tests/test-frontend/vite-production/pom.xml
+++ b/flow-tests/test-frontend/vite-production/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-production
Vite production mode functionality
diff --git a/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java b/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java
index 5dd028b33f6..4be45d9da48 100644
--- a/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java
+++ b/flow-tests/test-frontend/vite-production/src/main/java/com/vaadin/viteapp/views/empty/MainView.java
@@ -15,7 +15,6 @@
@JsModule("@testscope/map")
@JsModule("package-outside-npm/index.js")
@JsModule("package2-outside-npm/index.js")
-@JsModule("./toplevelawait-main.js")
@CssImport("./image.css")
public class MainView extends Div {
diff --git a/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java b/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java
index 79e53feae38..f762854846b 100644
--- a/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java
+++ b/flow-tests/test-frontend/vite-production/src/test/java/com/vaadin/viteapp/ProductionBasicsIT.java
@@ -57,15 +57,4 @@ public void applicationHasThemeAndAssets() {
Assert.assertEquals(200, size.getWidth());
Assert.assertEquals(200, size.getHeight());
}
-
- @Test
- public void toplevelAwaitWorks() {
- getDriver().get(getRootURL());
- waitForDevServer();
- String value = waitUntil(driver -> (String) executeScript(
- "return window.topLevelAwaitValue"));
-
- Assert.assertEquals("This is the value set in other.js", value);
- }
-
}
diff --git a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml
index 8091f873564..464120fa7bf 100644
--- a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml
+++ b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom-production.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-pwa-custom-offline-path-production
Vite PWA app with a custom offline path (production mode)
diff --git a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml
index c6f2a4ca087..c863453177e 100644
--- a/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml
+++ b/flow-tests/test-frontend/vite-pwa-custom-offline-path/pom.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-pwa-custom-offline-path
Vite PWA app with a custom offline path
diff --git a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml
index d7961b8b0b7..30626a13fdc 100644
--- a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml
+++ b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom-production.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-pwa-disabled-offline-production
Vite PWA app with disabled offline (production mode)
diff --git a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml
index 5882ef8ca96..846edade1a0 100644
--- a/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml
+++ b/flow-tests/test-frontend/vite-pwa-disabled-offline/pom.xml
@@ -4,7 +4,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-pwa-disabled-offline
Vite PWA app with disabled offline
diff --git a/flow-tests/test-frontend/vite-pwa-production/pom.xml b/flow-tests/test-frontend/vite-pwa-production/pom.xml
index a8401c683ae..16a504ca768 100644
--- a/flow-tests/test-frontend/vite-pwa-production/pom.xml
+++ b/flow-tests/test-frontend/vite-pwa-production/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-pwa-production
Vite PWA app (production mode)
diff --git a/flow-tests/test-frontend/vite-pwa/pom.xml b/flow-tests/test-frontend/vite-pwa/pom.xml
index b8f00f883bc..2334c2b0e95 100644
--- a/flow-tests/test-frontend/vite-pwa/pom.xml
+++ b/flow-tests/test-frontend/vite-pwa/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-frontend
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vite-pwa
Vite PWA app
diff --git a/flow-tests/test-frontend/vite-test-assets/pom.xml b/flow-tests/test-frontend/vite-test-assets/pom.xml
index 9310e041806..5766dbb45d9 100644
--- a/flow-tests/test-frontend/vite-test-assets/pom.xml
+++ b/flow-tests/test-frontend/vite-test-assets/pom.xml
@@ -21,7 +21,7 @@
test-frontend
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-main.js b/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-main.js
deleted file mode 100644
index be133d5e2f6..00000000000
--- a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-main.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import './toplevelawait-other.js';
-
-window.topLevelAwaitValue = window.othervalue;
-console.log('The value set in other is: ' + window.topLevelAwaitValue);
diff --git a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-other.js b/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-other.js
deleted file mode 100644
index 03cc1a606aa..00000000000
--- a/flow-tests/test-frontend/vite-test-assets/src/main/resources/META-INF/frontend/toplevelawait-other.js
+++ /dev/null
@@ -1,13 +0,0 @@
-
-let res;
-const promise = new Promise((resolve, reject) => {
- res = resolve;
-});
-
-setTimeout(() => {
- window.othervalue = "This is the value set in other.js";
- res();
-}, 500);
-
-
-await promise;
diff --git a/flow-tests/test-legacy-frontend/pom.xml b/flow-tests/test-legacy-frontend/pom.xml
index cf7e1f94ee0..ae082d2e636 100644
--- a/flow-tests/test-legacy-frontend/pom.xml
+++ b/flow-tests/test-legacy-frontend/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-legacy-frontend
Flow custom theme in legacy frontend folder
diff --git a/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml
index 38252a7f7e7..e5529a5e0b6 100644
--- a/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml
+++ b/flow-tests/test-live-reload-multimodule/library/pom-devbundle.xml
@@ -6,7 +6,7 @@
flow-test-live-reload-multimodule-devbundle
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
../pom-devbundle.xml
flow-test-live-reload-multimodule-library-devbundle
diff --git a/flow-tests/test-live-reload-multimodule/library/pom.xml b/flow-tests/test-live-reload-multimodule/library/pom.xml
index fa45c2d4b2d..e7fbd31a670 100644
--- a/flow-tests/test-live-reload-multimodule/library/pom.xml
+++ b/flow-tests/test-live-reload-multimodule/library/pom.xml
@@ -6,7 +6,7 @@
flow-test-live-reload-multimodule-hotdeploy
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-live-reload-multimodule-library-hotdeploy
The frontend library module for a live reload multi module project (hotdeploy)
diff --git a/flow-tests/test-live-reload-multimodule/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/pom-devbundle.xml
index 5f6945f8a61..63cd03a0c8b 100644
--- a/flow-tests/test-live-reload-multimodule/pom-devbundle.xml
+++ b/flow-tests/test-live-reload-multimodule/pom-devbundle.xml
@@ -6,7 +6,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-live-reload-multimodule-devbundle
The main module for a live reload multi module project (dev bundle)
diff --git a/flow-tests/test-live-reload-multimodule/pom.xml b/flow-tests/test-live-reload-multimodule/pom.xml
index 6495bb93d23..97442236172 100644
--- a/flow-tests/test-live-reload-multimodule/pom.xml
+++ b/flow-tests/test-live-reload-multimodule/pom.xml
@@ -6,7 +6,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-live-reload-multimodule-hotdeploy
The main module for a live reload multi module project (hotdeploy)
diff --git a/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml
index 00135cc0566..a6ac3acc992 100644
--- a/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml
+++ b/flow-tests/test-live-reload-multimodule/theme/pom-devbundle.xml
@@ -6,7 +6,7 @@
flow-test-live-reload-multimodule-devbundle
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
../pom-devbundle.xml
flow-test-live-reload-multimodule-theme-devbundle
diff --git a/flow-tests/test-live-reload-multimodule/theme/pom.xml b/flow-tests/test-live-reload-multimodule/theme/pom.xml
index a4b257c494a..f8da160b2cf 100644
--- a/flow-tests/test-live-reload-multimodule/theme/pom.xml
+++ b/flow-tests/test-live-reload-multimodule/theme/pom.xml
@@ -6,7 +6,7 @@
flow-test-live-reload-multimodule-hotdeploy
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-live-reload-multimodule-theme-hotdeploy
The theme module for a live reload multi module project (hotdeploy)
diff --git a/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml b/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml
index 30c2296ffa4..52fd786f81d 100644
--- a/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml
+++ b/flow-tests/test-live-reload-multimodule/ui/pom-devbundle.xml
@@ -6,7 +6,7 @@
flow-test-live-reload-multimodule-devbundle
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
../pom-devbundle.xml
flow-test-live-reload-multimodule-ui-devbundle
diff --git a/flow-tests/test-live-reload-multimodule/ui/pom.xml b/flow-tests/test-live-reload-multimodule/ui/pom.xml
index df700e483d7..165d7068150 100644
--- a/flow-tests/test-live-reload-multimodule/ui/pom.xml
+++ b/flow-tests/test-live-reload-multimodule/ui/pom.xml
@@ -6,7 +6,7 @@
flow-test-live-reload-multimodule-hotdeploy
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-live-reload-multimodule-ui-hotdeploy
The UI module for a live reload multi module project (hotdeploy)
diff --git a/flow-tests/test-live-reload/pom.xml b/flow-tests/test-live-reload/pom.xml
index 5b107c2252a..fb50378e540 100644
--- a/flow-tests/test-live-reload/pom.xml
+++ b/flow-tests/test-live-reload/pom.xml
@@ -6,7 +6,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-live-reload-mode
Flow tests for live reload in dev mode
diff --git a/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java b/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java
index f203b59eace..e72cb89312a 100644
--- a/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java
+++ b/flow-tests/test-live-reload/src/test/java/com/vaadin/flow/uitest/ui/JavaLiveReloadIT.java
@@ -15,45 +15,17 @@
*/
package com.vaadin.flow.uitest.ui;
-import com.vaadin.flow.testutil.DevToolsElement;
-import com.vaadin.testbench.TestBenchElement;
-
import net.jcip.annotations.NotThreadSafe;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
+import com.vaadin.flow.testutil.DevToolsElement;
+
@NotThreadSafe
public class JavaLiveReloadIT extends AbstractLiveReloadIT {
- @Test
- public void splashMessageShownOnAutoReloadAndClosedOnBodyClick() {
- open();
-
- WebElement liveReloadTrigger = findElement(
- By.id(JavaLiveReloadView.JAVA_LIVE_RELOAD_TRIGGER_BUTTON));
- liveReloadTrigger.click();
-
- waitForLiveReload();
-
- DevToolsElement liveReload = $(DevToolsElement.class).waitForFirst();
- WebElement devTools1 = liveReload.$("*")
- .attributeContains("class", "dev-tools").first();
-
- Assert.assertTrue(devTools1.getAttribute("class").contains("active"));
-
- findElement(By.tagName("body")).click();
-
- DevToolsElement liveReload2 = $(DevToolsElement.class).waitForFirst();
- Assert.assertNotNull(liveReload2);
- WebElement devTools2 = liveReload2.$("*")
- .attributeContains("class", "dev-tools").first();
- Assert.assertFalse(devTools2.getAttribute("class").contains("active"));
- Assert.assertTrue(
- devTools2.getAttribute("class").contains("dev-tools"));
- }
-
@Test
public void deactivateLiveReload() {
open();
@@ -71,8 +43,7 @@ public void deactivateLiveReload() {
// then: page is not reloaded
DevToolsElement liveReload2 = $(DevToolsElement.class).waitForFirst();
WebElement devTools2 = liveReload2.$("*")
- .attributeContains("class", "dev-tools").first();
- Assert.assertFalse(devTools2.getAttribute("class").contains("active"));
+ .withAttributeContainingWord("class", "dev-tools").first();
Assert.assertTrue(
devTools2.getAttribute("class").contains("dev-tools"));
}
diff --git a/flow-tests/test-lumo/pom.xml b/flow-tests/test-lumo/pom.xml
index 5efb1bf66a7..71b46623822 100644
--- a/flow-tests/test-lumo/pom.xml
+++ b/flow-tests/test-lumo/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-lumo
Lumo class for use in test modules requiring LUMO
diff --git a/flow-tests/test-misc/pom.xml b/flow-tests/test-misc/pom.xml
index c713a9a4fd0..5c84e6bf6bf 100644
--- a/flow-tests/test-misc/pom.xml
+++ b/flow-tests/test-misc/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-misc-test
Flow Miscelaneous tests in npm
diff --git a/flow-tests/test-multi-war/deployment/pom.xml b/flow-tests/test-multi-war/deployment/pom.xml
index 277f1204484..7b0369929c6 100644
--- a/flow-tests/test-multi-war/deployment/pom.xml
+++ b/flow-tests/test-multi-war/deployment/pom.xml
@@ -4,7 +4,7 @@
flow-test-multi-war
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-multi-war-bundle
Bundle testing multiple war deployment
diff --git a/flow-tests/test-multi-war/pom.xml b/flow-tests/test-multi-war/pom.xml
index 8fedb09b593..0c922d6b05f 100644
--- a/flow-tests/test-multi-war/pom.xml
+++ b/flow-tests/test-multi-war/pom.xml
@@ -6,7 +6,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-multi-war
Flow tests with more than one war deployed at the same time
diff --git a/flow-tests/test-multi-war/test-war1/pom.xml b/flow-tests/test-multi-war/test-war1/pom.xml
index 253958a14e0..b70503157fd 100644
--- a/flow-tests/test-multi-war/test-war1/pom.xml
+++ b/flow-tests/test-multi-war/test-war1/pom.xml
@@ -6,7 +6,7 @@
flow-test-multi-war
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-multi-war1
First war for multi war tests
diff --git a/flow-tests/test-multi-war/test-war2/pom.xml b/flow-tests/test-multi-war/test-war2/pom.xml
index 7039ef54814..96441f8fbf2 100644
--- a/flow-tests/test-multi-war/test-war2/pom.xml
+++ b/flow-tests/test-multi-war/test-war2/pom.xml
@@ -6,7 +6,7 @@
flow-test-multi-war
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-multi-war2
Second war for multi war tests
diff --git a/flow-tests/test-no-theme/pom.xml b/flow-tests/test-no-theme/pom.xml
index a6a49bb0897..b9b1f314758 100644
--- a/flow-tests/test-no-theme/pom.xml
+++ b/flow-tests/test-no-theme/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-no-theme
Flow tests for no theme in NPM mode
diff --git a/flow-tests/test-npm-only-features/pom.xml b/flow-tests/test-npm-only-features/pom.xml
index f333e5e46d0..d98ac547833 100644
--- a/flow-tests/test-npm-only-features/pom.xml
+++ b/flow-tests/test-npm-only-features/pom.xml
@@ -21,7 +21,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml
index c550167c87c..a27e52e040b 100644
--- a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml
+++ b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-devmode.xml
@@ -19,7 +19,7 @@
flow-test-npm-only-features
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml
index 7d8eaa7a5c5..99482029874 100644
--- a/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml
+++ b/flow-tests/test-npm-only-features/test-npm-bytecode-scanning/pom-production.xml
@@ -19,7 +19,7 @@
flow-test-npm-only-features
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml b/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml
index d8858f99fac..02d14f95b1e 100644
--- a/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml
+++ b/flow-tests/test-npm-only-features/test-npm-custom-frontend-directory/pom.xml
@@ -19,7 +19,7 @@
flow-test-npm-only-features
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-npm-only-features/test-npm-general/pom.xml b/flow-tests/test-npm-only-features/test-npm-general/pom.xml
index 2037600e06e..130826e623a 100644
--- a/flow-tests/test-npm-only-features/test-npm-general/pom.xml
+++ b/flow-tests/test-npm-only-features/test-npm-general/pom.xml
@@ -19,7 +19,7 @@
com.vaadin
flow-test-npm-only-features
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml b/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml
index 52fa653b30c..49ed6bc90bf 100644
--- a/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml
+++ b/flow-tests/test-npm-only-features/test-npm-no-buildmojo/pom.xml
@@ -19,7 +19,7 @@
flow-test-npm-only-features
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml b/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml
index 7bf159278a3..8908c80ec98 100644
--- a/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml
+++ b/flow-tests/test-npm-only-features/test-npm-performance-regression/pom.xml
@@ -3,7 +3,7 @@
flow-test-npm-only-features
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
4.0.0
diff --git a/flow-tests/test-pwa-disabled-offline/pom-production.xml b/flow-tests/test-pwa-disabled-offline/pom-production.xml
index fc0182a71b2..d7ec76bd493 100644
--- a/flow-tests/test-pwa-disabled-offline/pom-production.xml
+++ b/flow-tests/test-pwa-disabled-offline/pom-production.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-pwa-disabled-offline-prod
Flow tests for PWA annotation with disabled offline (production mode)
diff --git a/flow-tests/test-pwa-disabled-offline/pom.xml b/flow-tests/test-pwa-disabled-offline/pom.xml
index 91cfd3aeab1..f4f727cad86 100644
--- a/flow-tests/test-pwa-disabled-offline/pom.xml
+++ b/flow-tests/test-pwa-disabled-offline/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-pwa-disabled-offline
Flow tests for PWA annotation with disabled offline
diff --git a/flow-tests/test-pwa/pom-production.xml b/flow-tests/test-pwa/pom-production.xml
index a11da8d05d0..6a44449009f 100644
--- a/flow-tests/test-pwa/pom-production.xml
+++ b/flow-tests/test-pwa/pom-production.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-pwa-prod
Flow tests for PWA annotation (production mode)
diff --git a/flow-tests/test-pwa/pom.xml b/flow-tests/test-pwa/pom.xml
index 54371cdde34..59747ccf2d9 100644
--- a/flow-tests/test-pwa/pom.xml
+++ b/flow-tests/test-pwa/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-pwa
Flow tests for PWA annotation
diff --git a/flow-tests/test-react-adapter/pom-production.xml b/flow-tests/test-react-adapter/pom-production.xml
index b36f82350c0..de2c9fb4fd7 100644
--- a/flow-tests/test-react-adapter/pom-production.xml
+++ b/flow-tests/test-react-adapter/pom-production.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-react-adapter-prod
Flow tests for React adapter in production mode
diff --git a/flow-tests/test-react-adapter/pom.xml b/flow-tests/test-react-adapter/pom.xml
index 7d6ee80fe92..c0cafea45cc 100644
--- a/flow-tests/test-react-adapter/pom.xml
+++ b/flow-tests/test-react-adapter/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-react-adapter
Flow tests for React adapter
diff --git a/flow-tests/test-react-router/pom-production.xml b/flow-tests/test-react-router/pom-production.xml
index fd9017894b7..c67e975dc33 100644
--- a/flow-tests/test-react-router/pom-production.xml
+++ b/flow-tests/test-react-router/pom-production.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-react-router-prod
Flow tests for routing using react-router in production mode
diff --git a/flow-tests/test-react-router/pom.xml b/flow-tests/test-react-router/pom.xml
index 02c2380fdd2..de1d0bb234a 100644
--- a/flow-tests/test-react-router/pom.xml
+++ b/flow-tests/test-react-router/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-react-router
Flow tests for routing using react-router
diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavFirstView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavFirstView.java
new file mode 100644
index 00000000000..93d47748d8d
--- /dev/null
+++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavFirstView.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2000-2024 Vaadin Ltd.
+ *
+ * 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
+ *
+ * http://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 com.vaadin.flow;
+
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.NativeButton;
+import com.vaadin.flow.router.Route;
+
+@Route("com.vaadin.flow.BackNavFirstView")
+public class BackNavFirstView extends Div {
+
+ public BackNavFirstView() {
+ add(new NativeButton("Navigate", event -> getUI()
+ .ifPresent(ui -> ui.navigate(BackNavSecondView.class))));
+ }
+}
diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavSecondView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavSecondView.java
new file mode 100644
index 00000000000..88b76d16cdd
--- /dev/null
+++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/BackNavSecondView.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2000-2024 Vaadin Ltd.
+ *
+ * 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
+ *
+ * http://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 com.vaadin.flow;
+
+import com.vaadin.flow.component.UI;
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.router.AfterNavigationEvent;
+import com.vaadin.flow.router.AfterNavigationObserver;
+import com.vaadin.flow.router.Route;
+
+@Route("com.vaadin.flow.BackNavSecondView")
+public class BackNavSecondView extends Div implements AfterNavigationObserver {
+
+ public static final String CALLS = "calls";
+ private int count = 0;
+ Span text = new Span("Second view: " + count);
+
+ public BackNavSecondView() {
+ text.setId(CALLS);
+ add(text);
+ }
+
+ @Override
+ public void afterNavigation(AfterNavigationEvent event) {
+ count++;
+ text.setText("Second view: " + count);
+ UI.getCurrent().getPage().getHistory().replaceState(null,
+ "com.vaadin.flow.BackNavSecondView?param");
+ }
+}
diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetView.java
new file mode 100644
index 00000000000..8eb9893e40c
--- /dev/null
+++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetView.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2000-2024 Vaadin Ltd.
+ *
+ * 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
+ *
+ * http://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 com.vaadin.flow;
+
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.router.Route;
+
+@Route("com.vaadin.flow.ForwardTargetView")
+public class ForwardTargetView extends Div {
+
+}
diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetWithParametersView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetWithParametersView.java
new file mode 100644
index 00000000000..1fac454f4ea
--- /dev/null
+++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardTargetWithParametersView.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2000-2024 Vaadin Ltd.
+ *
+ * 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
+ *
+ * http://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 com.vaadin.flow;
+
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.component.html.Span;
+import com.vaadin.flow.router.BeforeEvent;
+import com.vaadin.flow.router.HasUrlParameter;
+import com.vaadin.flow.router.OptionalParameter;
+import com.vaadin.flow.router.Route;
+
+@Route("com.vaadin.flow.ForwardTargetWithParametersView")
+public class ForwardTargetWithParametersView extends Div
+ implements HasUrlParameter {
+
+ @Override
+ public void setParameter(BeforeEvent event,
+ @OptionalParameter String parameter) {
+ add(new Span("setParameter"));
+ }
+}
diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingToParametersView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingToParametersView.java
new file mode 100644
index 00000000000..f2e253a7935
--- /dev/null
+++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingToParametersView.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2000-2024 Vaadin Ltd.
+ *
+ * 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
+ *
+ * http://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 com.vaadin.flow;
+
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.router.BeforeEnterEvent;
+import com.vaadin.flow.router.BeforeEnterObserver;
+import com.vaadin.flow.router.Route;
+
+@Route("com.vaadin.flow.ForwardingToParametersView")
+public class ForwardingToParametersView extends Div
+ implements BeforeEnterObserver {
+ @Override
+ public void beforeEnter(BeforeEnterEvent event) {
+ event.forwardTo(ForwardTargetWithParametersView.class);
+ }
+}
diff --git a/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingView.java b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingView.java
new file mode 100644
index 00000000000..c94c4d31872
--- /dev/null
+++ b/flow-tests/test-react-router/src/main/java/com/vaadin/flow/ForwardingView.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2000-2024 Vaadin Ltd.
+ *
+ * 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
+ *
+ * http://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 com.vaadin.flow;
+
+import com.vaadin.flow.component.html.Div;
+import com.vaadin.flow.router.BeforeEnterEvent;
+import com.vaadin.flow.router.BeforeEnterObserver;
+import com.vaadin.flow.router.Route;
+
+@Route("com.vaadin.flow.ForwardingView")
+public class ForwardingView extends Div implements BeforeEnterObserver {
+ @Override
+ public void beforeEnter(BeforeEnterEvent event) {
+ event.forwardTo(ForwardTargetView.class);
+ }
+}
diff --git a/flow-tests/test-react-router/src/test/java/com/vaadin/flow/BackNavIT.java b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/BackNavIT.java
new file mode 100644
index 00000000000..35717877ce1
--- /dev/null
+++ b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/BackNavIT.java
@@ -0,0 +1,121 @@
+package com.vaadin.flow;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.TimeoutException;
+
+import com.vaadin.flow.component.html.testbench.NativeButtonElement;
+import com.vaadin.flow.component.html.testbench.SpanElement;
+import com.vaadin.flow.testutil.ChromeBrowserTest;
+
+public class BackNavIT extends ChromeBrowserTest {
+
+ public static final String BACK_NAV_FIRST_VIEW = "/view/com.vaadin.flow.BackNavFirstView";
+ public static final String BACK_NAV_SECOND_VIEW = "/view/com.vaadin.flow.BackNavSecondView?param";
+
+ // Test for https://github.com/vaadin/flow/issues/19839
+ @Test
+ public void testBackButtonAfterHistoryStateChange() {
+ getDriver().get(getTestURL(getRootURL(), BACK_NAV_FIRST_VIEW, null));
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_FIRST_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_FIRST_VIEW);
+ }
+
+ $(NativeButtonElement.class).first().click();
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_SECOND_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_SECOND_VIEW);
+ }
+
+ // Navigate back; ensure we get the first URL again
+ getDriver().navigate().back();
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_FIRST_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_FIRST_VIEW);
+ }
+
+ Assert.assertTrue("Expected button is not available.",
+ $(NativeButtonElement.class).first().isDisplayed());
+ }
+
+ @Test
+ public void backButtonWorksAndContentUpdatesAfterPageRefresh() {
+ getDriver().get(getTestURL(getRootURL(), BACK_NAV_FIRST_VIEW, null));
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_FIRST_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_FIRST_VIEW);
+ }
+
+ $(NativeButtonElement.class).first().click();
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_SECOND_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_SECOND_VIEW);
+ }
+ // Refresh page
+ getDriver().navigate().refresh();
+
+ waitUntil(driver -> $(SpanElement.class).id(BackNavSecondView.CALLS)
+ .isDisplayed());
+
+ // Navigate back; ensure we get the first URL again
+ getDriver().navigate().back();
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_FIRST_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_FIRST_VIEW);
+ }
+
+ Assert.assertTrue("Expected button is not available.",
+ $(NativeButtonElement.class).first().isDisplayed());
+ }
+
+ @Test
+ public void validateNoAfterNavigationForReplaceState() {
+ getDriver().get(getTestURL(getRootURL(), BACK_NAV_FIRST_VIEW, null));
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_FIRST_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_FIRST_VIEW);
+ }
+
+ $(NativeButtonElement.class).first().click();
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(BACK_NAV_SECOND_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + BACK_NAV_SECOND_VIEW);
+ }
+
+ Assert.assertEquals("Second view: 1",
+ $(SpanElement.class).id(BackNavSecondView.CALLS).getText());
+ }
+
+}
diff --git a/flow-tests/test-react-router/src/test/java/com/vaadin/flow/ForwardTargetIT.java b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/ForwardTargetIT.java
new file mode 100644
index 00000000000..332462847c0
--- /dev/null
+++ b/flow-tests/test-react-router/src/test/java/com/vaadin/flow/ForwardTargetIT.java
@@ -0,0 +1,61 @@
+package com.vaadin.flow;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.TimeoutException;
+
+import com.vaadin.flow.component.html.testbench.SpanElement;
+import com.vaadin.flow.testutil.ChromeBrowserTest;
+
+public class ForwardTargetIT extends ChromeBrowserTest {
+
+ public static final String FORWARD_TARGET_VIEW = "/view/com.vaadin.flow.ForwardTargetView";
+
+ // Test for https://github.com/vaadin/flow/issues/19794
+ @Test
+ public void testUrlIsCorrectAfterForward() {
+ getDriver().get(getTestURL(getRootURL(), FORWARD_TARGET_VIEW, null));
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(FORWARD_TARGET_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + FORWARD_TARGET_VIEW);
+ }
+
+ getDriver().get(getTestURL(getRootURL(),
+ "/view/com.vaadin.flow.ForwardingView", null));
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl()
+ .endsWith(FORWARD_TARGET_VIEW));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + FORWARD_TARGET_VIEW);
+ }
+
+ Assert.assertTrue("URL was not the expected one after forward call",
+ driver.getCurrentUrl().endsWith(FORWARD_TARGET_VIEW));
+ }
+
+ // Test for https://github.com/vaadin/flow/issues/19822
+ @Test
+ public void testSetParameterCalledOnlyOnceAfterForward() {
+ getDriver().get(getTestURL(getRootURL(),
+ "/view/com.vaadin.flow.ForwardingToParametersView", null));
+
+ try {
+ waitUntil(arg -> driver.getCurrentUrl().endsWith(
+ "/view/com.vaadin.flow.ForwardTargetWithParametersView"));
+ } catch (TimeoutException e) {
+ Assert.fail("URL wasn't updated to expected one: "
+ + "/view/com.vaadin.flow.ForwardTargetWithParametersView");
+ }
+
+ Assert.assertEquals("setParameter was called more than once", 1,
+ $(SpanElement.class).all().stream()
+ .filter(span -> span.getText().equals("setParameter"))
+ .count());
+ }
+}
diff --git a/flow-tests/test-redeployment-no-cache/pom.xml b/flow-tests/test-redeployment-no-cache/pom.xml
index a5c50b6ce7e..383763ae9b3 100644
--- a/flow-tests/test-redeployment-no-cache/pom.xml
+++ b/flow-tests/test-redeployment-no-cache/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-redeployment-no-cache
Test to ensure dev mode caching is not used when it's disabled
diff --git a/flow-tests/test-redeployment/pom.xml b/flow-tests/test-redeployment/pom.xml
index a09f314d5f5..1efd99e1d7a 100644
--- a/flow-tests/test-redeployment/pom.xml
+++ b/flow-tests/test-redeployment/pom.xml
@@ -4,7 +4,7 @@
flow-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-redeployment
Flow tests that require redeployment during the test
diff --git a/flow-tests/test-resources/pom.xml b/flow-tests/test-resources/pom.xml
index 9ffde258203..087efcfbc52 100644
--- a/flow-tests/test-resources/pom.xml
+++ b/flow-tests/test-resources/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-resources
Flow Test Resources
diff --git a/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java b/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java
index b61503a8dc1..c60aa52a674 100644
--- a/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java
+++ b/flow-tests/test-resources/src/main/java/com/vaadin/flow/uitest/ui/dependencies/TestVersion.java
@@ -2,7 +2,7 @@
public class TestVersion {
- public static final String VAADIN = "24.3.12";
+ public static final String VAADIN = "24.4.9";
public static final String FONTAWESOME = "5.15.1";
}
diff --git a/flow-tests/test-root-context/pom.xml b/flow-tests/test-root-context/pom.xml
index 2365d3c010f..941ced753cd 100644
--- a/flow-tests/test-root-context/pom.xml
+++ b/flow-tests/test-root-context/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-root-context-npm
Flow root context tests in NPM dev mode
diff --git a/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java b/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java
index d430936a813..adf95eeaf07 100644
--- a/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java
+++ b/flow-tests/test-root-context/src/test/java/com/vaadin/flow/uitest/ui/PageIT.java
@@ -9,6 +9,7 @@
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
+import org.openqa.selenium.TimeoutException;
import com.vaadin.flow.component.html.testbench.DivElement;
import com.vaadin.flow.component.html.testbench.InputTextElement;
@@ -52,8 +53,12 @@ public void testPageTitleClears() {
}
private void verifyTitle(String title) {
- Assert.assertEquals("Page title does not match", title,
- getDriver().getTitle());
+ try {
+ waitUntil(driver -> driver.getTitle().equals(title));
+ } catch (TimeoutException te) {
+ Assert.fail("Page title does not match. Expected: " + title
+ + ", Actual: " + driver.getTitle());
+ }
}
private void updateTitle(String title) {
diff --git a/flow-tests/test-router-custom-context/pom.xml b/flow-tests/test-router-custom-context/pom.xml
index 1c1afadf8fa..a2c42996bf0 100644
--- a/flow-tests/test-router-custom-context/pom.xml
+++ b/flow-tests/test-router-custom-context/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-router-custom-context
Flow Router on custom context test
diff --git a/flow-tests/test-servlet/pom.xml b/flow-tests/test-servlet/pom.xml
index 9cc7f77217b..313755d431f 100644
--- a/flow-tests/test-servlet/pom.xml
+++ b/flow-tests/test-servlet/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-servlet
Flow servlet registration test
diff --git a/flow-tests/test-theme-no-polymer/pom.xml b/flow-tests/test-theme-no-polymer/pom.xml
index 9d842f477a9..1055788054c 100644
--- a/flow-tests/test-theme-no-polymer/pom.xml
+++ b/flow-tests/test-theme-no-polymer/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-theme-no-polymer
Flow custom theme test without polymer components
diff --git a/flow-tests/test-themes/pom-devbundle.xml b/flow-tests/test-themes/pom-devbundle.xml
index 55852bfdcaf..a3d4a6ad8be 100644
--- a/flow-tests/test-themes/pom-devbundle.xml
+++ b/flow-tests/test-themes/pom-devbundle.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-themes-devbundle
Flow themes tests, dev bundle
diff --git a/flow-tests/test-themes/pom-production.xml b/flow-tests/test-themes/pom-production.xml
index 4751d500d79..55818e6e0ac 100644
--- a/flow-tests/test-themes/pom-production.xml
+++ b/flow-tests/test-themes/pom-production.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-themes-production
Flow themes tests, production
diff --git a/flow-tests/test-themes/pom.xml b/flow-tests/test-themes/pom.xml
index 483c1cb2a56..949f67c4cfd 100644
--- a/flow-tests/test-themes/pom.xml
+++ b/flow-tests/test-themes/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-themes-hotdeploy
Flow themes tests, dev hotdeploy
diff --git a/flow-tests/test-webpush/pom.xml b/flow-tests/test-webpush/pom.xml
index 14f007e340b..8646e5e0223 100644
--- a/flow-tests/test-webpush/pom.xml
+++ b/flow-tests/test-webpush/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-test-webpush
Flow webpush integration test
diff --git a/flow-tests/vaadin-spring-tests/pom.xml b/flow-tests/vaadin-spring-tests/pom.xml
index 644883e2591..6e6a0e43af9 100644
--- a/flow-tests/vaadin-spring-tests/pom.xml
+++ b/flow-tests/vaadin-spring-tests/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-spring-tests
Vaadin Spring tests
@@ -16,8 +16,8 @@
true
- 24.4.11
- 9.41
+ 24.4.12
+ 9.41.1
@@ -177,7 +177,7 @@
de.skuzzle.enforcer
restrict-imports-enforcer-rule
- 2.5.0
+ 2.6.0
diff --git a/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml b/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml
index e1c829390f8..92f64b87f11 100644
--- a/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-mvc-without-endpoints/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-ts-mvc-without-endpoints
Integration tests for a Spring MVC project without using endpoints
diff --git a/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml b/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml
index d3f452b1daf..9e276b5c8c7 100644
--- a/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-plain-spring-boot-reload-time/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-plain-spring-boot-reload-time
Testing reload time of a plain Spring boot project
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml
index ad9d4c09be6..1eafaecb891 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-contextpath/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot-contextpath
Vaadin Spring Boot integration tests when deployed using a context path
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml
index 701ffabc0a3..55b13240722 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-jar/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot-jar
Vaadin Spring Boot executable Jar integration tests
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml
index 1e230da30f7..f46a2a9051e 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/generator/pom.xml
@@ -6,7 +6,7 @@
test-spring-boot-multimodule-reload-time
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-boot-multimodule-reload-time-generator
The code generator Maven plugin for a Spring boot multimodule reload
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml
index b9911871ec5..2c43d8481b1 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/library/pom.xml
@@ -6,7 +6,7 @@
test-spring-boot-multimodule-reload-time
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-boot-multimodule-reload-time-library
The frontend library module for a Spring boot multimodule reload time
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml
index 3cf709f06bb..772344c7eaa 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/pom.xml
@@ -6,7 +6,7 @@
vaadin-spring-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-boot-multimodule-reload-time
The main module for a Spring boot multimodule reload time project
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml
index 039b3e5e979..922885b67ab 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/theme/pom.xml
@@ -6,7 +6,7 @@
test-spring-boot-multimodule-reload-time
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-boot-multimodule-reload-time-theme
The theme module for a Spring boot multimodule reload time project
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml
index fb500fd6199..ac1d95106a9 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-multimodule-reload-time/ui/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
test-spring-boot-multimodule-reload-time
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-boot-multimodule-reload-time-ui
The UI module for a Spring boot multimodule reload time project
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml
index c38e52514f6..a75a61795de 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-only-prepare/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot-prepare
Vaadin Spring Boot integration tests with only prepare goal
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml
index 9dfb0b930f5..2349d018294 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-reload-time/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-boot-reload-time
Testing reload time of a Vaadin Spring boot project
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml
index 5acc82c40f8..b714dc0fb48 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-reverseproxy/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot-reverseproxy
Vaadin Spring Boot integration tests when deployed behind a reverse proxy
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml
index 9f5518c0b62..af044a074dc 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-scan/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot-scan
Vaadin Spring Boot integration tests with custom packages to scan
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml
index 51c4d2ad752..22dc87c0169 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot-undertow/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot-undertow
Vaadin Spring Boot integration tests when running on Undertow
@@ -165,4 +165,4 @@
-
\ No newline at end of file
+
diff --git a/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml
index 43ec782e803..70b8801f68c 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-boot/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-boot
Vaadin Spring Boot integration tests
diff --git a/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml
index 45bb34dfbd5..5159ad5efb1 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-common/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-common
Flow Spring Common UI components
diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml
index 05073878f71..260c641307b 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/allowed-ui/pom.xml
@@ -21,7 +21,7 @@
vaadin-test-spring-filter-packages
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-filter-packages-allowed-ui
Test UI with allowed-packages properties
diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml
index 4bfc2a17e1a..5cffb8ecd04 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-allowed/pom.xml
@@ -21,7 +21,7 @@
vaadin-test-spring-filter-packages
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-filter-packages-lib-allowed
Library with vaadin.allowed-packages property
diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml
index 15a6afbb362..79b42eedcfb 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-blocked/pom.xml
@@ -21,7 +21,7 @@
vaadin-test-spring-filter-packages
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-filter-packages-lib-blocked
Library with vaadin.blocked-packages property
diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml
index 71fb3f7a0ce..981e4474394 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/lib-exclude/pom.xml
@@ -21,7 +21,7 @@
vaadin-test-spring-filter-packages
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-filter-packages-lib-exclude
Library with vaadin.blocked-jar property
diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml
index 5337212328b..f24fd53e5be 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/pom.xml
@@ -21,7 +21,7 @@
vaadin-spring-tests
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-filter-packages
The main module for a Spring boot package filter tests
diff --git a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml
index 9d62193152c..294f79898ca 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-filter-packages/ui/pom.xml
@@ -21,7 +21,7 @@
vaadin-test-spring-filter-packages
com.vaadin
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-filter-packages-ui
jar
diff --git a/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml
index 32300f56b6c..81f35ee595f 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-helpers/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-helpers
Flow Spring test helpers
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml
index e8ad2cb6ee8..810c51cb697 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-contextpath/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow-contextpath
Integration tests for Vaadin Spring Security and Flow With Context Path
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml
index a42cd318ae5..62ff20c1619 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-methodsecurity/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow-methodsecurity
Vaadin Spring Security test for Enabled Method Security
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml
index 5cd44a54ed3..c0e5d04e3ff 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-reverseproxy/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow-revereproxy
Integration tests for Vaadin Spring Security and Flow when using a reverse proxy
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml
index 68c22a60453..ee54f6ab2f2 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-routepathaccesschecker/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow-routepathaccesscheker
Integration tests for Vaadin Spring Security and Flow secured by RoutePathAccessChecker
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml
index 2073170ca29..3f076046370 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-standalone-routepathaccesschecker/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow-standalone-routepathaccesscheker
Integration tests for Spring Security with standalone RoutePathAccessChecker
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml
index 2d01480996f..224430765f6 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow-urlmapping/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow-urlmapping
Integration tests for Vaadin Spring Security and Flow With Vaadin URL mapping
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml
index fc3efee7d18..b48ffaa7c3f 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-flow/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-flow
Integration tests for Vaadin Spring Security and Flow
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml
index 6c05c8c7e11..d5873153c66 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-webicons-urlmapping/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-webicons-urlmapping
Integration tests for Vaadin Spring Security and Custom PWA icon, Favicon paths and URL mapping
diff --git a/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml
index 742e4a2ac23..70e13a468b0 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-security-webicons/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
test-spring-security-webicons
Integration tests for Vaadin Spring Security and Custom PWA icon and Favicon paths
diff --git a/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml
index 8f1b5f05cd6..062e5ded05e 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-war/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-war
Vaadin Spring Boot deployable integration tests
diff --git a/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml b/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml
index 8a079dac912..31259769363 100644
--- a/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring-white-list/pom.xml
@@ -22,7 +22,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring-white-list
diff --git a/flow-tests/vaadin-spring-tests/test-spring/pom.xml b/flow-tests/vaadin-spring-tests/test-spring/pom.xml
index d88c9f6027f..ddadde35e38 100644
--- a/flow-tests/vaadin-spring-tests/test-spring/pom.xml
+++ b/flow-tests/vaadin-spring-tests/test-spring/pom.xml
@@ -4,7 +4,7 @@
com.vaadin
vaadin-spring-tests
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-test-spring
Flow Spring deployable integration tests
diff --git a/flow-webpush/pom.xml b/flow-webpush/pom.xml
index 710c869f7e5..ba7d9c2d032 100644
--- a/flow-webpush/pom.xml
+++ b/flow-webpush/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-project
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow-webpush
diff --git a/flow/pom.xml b/flow/pom.xml
index e7631b2bd2a..29cc4acd204 100644
--- a/flow/pom.xml
+++ b/flow/pom.xml
@@ -5,7 +5,7 @@
com.vaadin
flow-project
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
flow
pom
diff --git a/pom.xml b/pom.xml
index 26276002e89..ce56cc9c0c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
flow-project
Flow
pom
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
com.vaadin
@@ -85,17 +85,17 @@
false
- 3.3.3
+ 3.4.0-M3
2.9.0
8.0.1.Final
2.0.16
2.6.1
- 2.17.2
+ 2.18.0
${jackson.version}
3.0.2
2.1.1
4.0.5
- 33.3.0-jre
+ 33.3.1-jre
2.1.1
@@ -106,7 +106,7 @@
3.0.2
3.4.0
1.6.0
- 9.3.4
+ 9.3.5
12.0.13
1.2.1
3.6.0
@@ -172,6 +172,14 @@
false
+
+ repository.spring.milestone
+ Spring Milestone Repository
+ https://repo.spring.io/milestone
+
+ true
+
+
@@ -191,6 +199,14 @@
true
+
+ repository.spring.milestone
+ Spring Milestone Repository
+ https://repo.spring.io/milestone
+
+ true
+
+
@@ -212,7 +228,7 @@
commons-io
commons-io
- 2.16.1
+ 2.17.0
org.apache.commons
@@ -241,7 +257,7 @@
net.bytebuddy
byte-buddy
- 1.15.1
+ 1.15.3
org.ow2.asm
@@ -251,7 +267,7 @@
com.vaadin
license-checker
- 1.13.0.alpha5
+ 1.13.0.rc1
@@ -268,7 +284,7 @@
org.mockito
mockito-core
- 5.13.0
+ 5.14.1
org.mockito
@@ -472,7 +488,7 @@
de.skuzzle.enforcer
restrict-imports-enforcer-rule
- 2.5.0
+ 2.6.0
diff --git a/vaadin-dev-server/pom.xml b/vaadin-dev-server/pom.xml
index 99ac111efa2..57c97308037 100644
--- a/vaadin-dev-server/pom.xml
+++ b/vaadin-dev-server/pom.xml
@@ -6,7 +6,7 @@
com.vaadin
flow-project
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-dev-server
Vaadin Development Mode Server
@@ -36,7 +36,7 @@
com.vaadin
open
- 8.5.0.2
+ 8.5.0.3
diff --git a/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts b/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts
index 1baaaf47944..c2fca024438 100644
--- a/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts
+++ b/vaadin-dev-server/src/main/frontend/vaadin-dev-tools.ts
@@ -589,9 +589,6 @@ export class VaadinDevTools extends LitElement {
return active === null || active !== 'false';
}
- @property({ type: String, attribute: false })
- splashMessage?: string;
-
@property({ type: String, attribute: false })
frontendStatus: ConnectionStatus = ConnectionStatus.UNAVAILABLE;
@@ -609,8 +606,6 @@ export class VaadinDevTools extends LitElement {
private nextMessageId: number = 1;
- private disableEventListener?: EventListener;
-
private transitionDuration: number = 0;
elementTelemetry() {
@@ -662,7 +657,6 @@ export class VaadinDevTools extends LitElement {
})
});
} else {
- this.showSplashMessage('Reloading…');
const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE);
const nextReload = lastReload ? parseInt(lastReload, 10) + 1 : 1;
window.sessionStorage.setItem(VaadinDevTools.TRIGGERED_COUNT_KEY_IN_SESSION_STORAGE, nextReload.toString());
@@ -759,10 +753,6 @@ export class VaadinDevTools extends LitElement {
super.connectedCallback();
this.conf = (window.Vaadin as any).devToolsConf || this.conf;
- // when focus or clicking anywhere, move the splash message to the message tray
- this.disableEventListener = (_: any) => this.demoteSplashMessage();
- document.body.addEventListener('focus', this.disableEventListener);
- document.body.addEventListener('click', this.disableEventListener);
const lastReload = window.sessionStorage.getItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE);
if (lastReload) {
@@ -770,7 +760,6 @@ export class VaadinDevTools extends LitElement {
const reloaded = `${`0${now.getHours()}`.slice(-2)}:${`0${now.getMinutes()}`.slice(
-2
)}:${`0${now.getSeconds()}`.slice(-2)}`;
- this.showSplashMessage(`Page reloaded at ${reloaded}`);
window.sessionStorage.removeItem(VaadinDevTools.TRIGGERED_KEY_IN_SESSION_STORAGE);
}
@@ -806,29 +795,6 @@ export class VaadinDevTools extends LitElement {
return o.toString();
}
- disconnectedCallback() {
- if (this.disableEventListener) {
- document.body.removeEventListener('focus', this.disableEventListener!);
- document.body.removeEventListener('click', this.disableEventListener!);
- }
- super.disconnectedCallback();
- }
-
-
- showSplashMessage(msg: string | undefined) {
- this.splashMessage = msg;
- if (this.splashMessage) {
- // automatically move notification to message tray after a certain amount of time
- setTimeout(() => {
- this.demoteSplashMessage();
- }, VaadinDevTools.AUTO_DEMOTE_NOTIFICATION_DELAY);
- }
- }
-
- demoteSplashMessage() {
- this.showSplashMessage(undefined);
- }
-
checkLicense(productInfo: Product) {
if (this.frontendConnection) {
this.frontendConnection.send('checkLicense', productInfo);
@@ -848,9 +814,8 @@ export class VaadinDevTools extends LitElement {
return html`
- ${this.splashMessage ? html`${this.splashMessage}
` : nothing}
`;
}
diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java
index 6764c3e9d6a..71c5dbafa91 100644
--- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java
+++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DebugWindowConnection.java
@@ -250,7 +250,13 @@ public boolean isLiveReload(AtmosphereResource resource) {
return getRef(resource) != null;
}
- private void send(JsonObject msg) {
+ /**
+ * Broadcasts the given message to all connected clients.
+ *
+ * @param msg
+ * the message to broadcast
+ */
+ public void broadcast(JsonObject msg) {
resources.keySet().forEach(resourceRef -> {
AtmosphereResource resource = resourceRef.get();
if (resource != null) {
@@ -264,7 +270,7 @@ private void send(JsonObject msg) {
public void reload() {
JsonObject msg = Json.createObject();
msg.put("command", "reload");
- send(msg);
+ broadcast(msg);
}
@Override
@@ -272,7 +278,7 @@ public void refresh(boolean refreshLayouts) {
JsonObject msg = Json.createObject();
msg.put("command", "reload");
msg.put("strategy", refreshLayouts ? "full-refresh" : "refresh");
- send(msg);
+ broadcast(msg);
}
@Override
@@ -281,7 +287,7 @@ public void update(String path, String content) {
msg.put("command", "update");
msg.put("path", path);
msg.put("content", content);
- send(msg);
+ broadcast(msg);
}
@SuppressWarnings("FutureReturnValueIgnored")
diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java
index c9b80950cf5..cde5c77efcd 100644
--- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java
+++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java
@@ -15,6 +15,7 @@
*/
package com.vaadin.base.devserver;
+import com.vaadin.flow.server.Command;
import jakarta.servlet.annotation.HandlesTypes;
import java.io.Closeable;
@@ -66,7 +67,10 @@ private static final class DevModeHandlerAlreadyStartedAttribute
private DevModeHandler devModeHandler;
private BrowserLauncher browserLauncher;
- final private Set watchers = new HashSet<>();
+ private final Set shutdownCommands = new HashSet<>();
+
+ private String applicationUrl;
+ private boolean fullyStarted = false;
@Override
public Class>[] getHandlesTypes() {
@@ -104,9 +108,9 @@ public void initDevModeHandler(Set> classes, VaadinContext context)
ApplicationConfiguration config = ApplicationConfiguration
.get(context);
-
startWatchingThemeFolder(context, config);
watchExternalDependencies(context, config);
+ setFullyStarted(true);
});
setDevModeStarted(context);
this.browserLauncher = new BrowserLauncher(context);
@@ -117,7 +121,7 @@ private void watchExternalDependencies(VaadinContext context,
File frontendFolder = FrontendUtils.getProjectFrontendDir(config);
File jarFrontendResourcesFolder = FrontendUtils
.getJarResourcesFolder(frontendFolder);
- watchers.add(new ExternalDependencyWatcher(context,
+ registerWatcherShutdownCommand(new ExternalDependencyWatcher(context,
jarFrontendResourcesFolder));
}
@@ -142,7 +146,8 @@ private void startWatchingThemeFolder(VaadinContext context,
for (String themeName : activeThemes) {
File themeFolder = ThemeUtils.getThemeFolder(
FrontendUtils.getProjectFrontendDir(config), themeName);
- watchers.add(new ThemeLiveUpdater(themeFolder, context));
+ registerWatcherShutdownCommand(
+ new ThemeLiveUpdater(themeFolder, context));
}
} catch (Exception e) {
getLogger().error("Failed to start live-reload for theme files", e);
@@ -154,15 +159,16 @@ public void stopDevModeHandler() {
devModeHandler.stop();
devModeHandler = null;
}
- for (Closeable watcher : watchers) {
+ for (Command shutdownCommand : shutdownCommands) {
try {
- watcher.close();
- } catch (IOException e) {
- getLogger().error("Failed to stop watcher "
- + watcher.getClass().getName(), e);
+ shutdownCommand.execute();
+ } catch (Exception e) {
+ getLogger().error("Failed to execute shut down command {}",
+ shutdownCommand.getClass().getName(), e);
}
}
- watchers.clear();
+ shutdownCommands.clear();
+
}
@Override
@@ -170,11 +176,44 @@ public void launchBrowserInDevelopmentMode(String url) {
browserLauncher.launchBrowserInDevelopmentMode(url);
}
+ @Override
+ public void setApplicationUrl(String applicationUrl) {
+ this.applicationUrl = applicationUrl;
+ reportApplicationUrl();
+ }
+
+ private void setFullyStarted(boolean fullyStarted) {
+ this.fullyStarted = fullyStarted;
+ reportApplicationUrl();
+ }
+
+ private void reportApplicationUrl() {
+ if (fullyStarted && applicationUrl != null) {
+ getLogger().info("Application running at {}", applicationUrl);
+ }
+ }
+
private void setDevModeStarted(VaadinContext context) {
context.setAttribute(DevModeHandlerAlreadyStartedAttribute.class,
new DevModeHandlerAlreadyStartedAttribute());
}
+ private void registerWatcherShutdownCommand(Closeable watcher) {
+ registerShutdownCommand(() -> {
+ try {
+ watcher.close();
+ } catch (Exception e) {
+ getLogger().error("Failed to stop watcher {}",
+ watcher.getClass().getName(), e);
+ }
+ });
+ }
+
+ @Override
+ public void registerShutdownCommand(Command command) {
+ shutdownCommands.add(command);
+ }
+
/**
* Shows whether {@link DevModeHandler} has been already started or not.
*
diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java
index 7a792bd19f5..4c48660db85 100644
--- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java
+++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/startup/DevModeStartupListener.java
@@ -39,6 +39,7 @@
import com.vaadin.flow.internal.DevModeHandlerManager;
import com.vaadin.flow.internal.Template;
import com.vaadin.flow.router.HasErrorParameter;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.LoadDependenciesOnStartup;
import com.vaadin.flow.server.PWA;
@@ -68,7 +69,7 @@
JavaScript.Container.class, Theme.class, NoTheme.class,
HasErrorParameter.class, PWA.class, AppShellConfigurator.class,
Template.class, LoadDependenciesOnStartup.class,
- TypeScriptBootstrapModifier.class, Component.class })
+ TypeScriptBootstrapModifier.class, Component.class, Layout.class })
@WebListener
public class DevModeStartupListener
implements VaadinServletContextStartupInitializer, Serializable,
diff --git a/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java b/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java
index 0cdf55312fe..b0d3ab49511 100644
--- a/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java
+++ b/vaadin-dev-server/src/test/java/com/vaadin/base/devserver/startup/DevModeClassFinderTest.java
@@ -37,6 +37,7 @@
import com.vaadin.flow.component.page.AppShellConfigurator;
import com.vaadin.flow.internal.Template;
import com.vaadin.flow.router.HasErrorParameter;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.LoadDependenciesOnStartup;
import com.vaadin.flow.server.PWA;
@@ -69,7 +70,8 @@ public void applicableClasses_knownClasses() {
CssImport.Container.class, Theme.class, NoTheme.class,
HasErrorParameter.class, PWA.class, AppShellConfigurator.class,
Template.class, LoadDependenciesOnStartup.class,
- Component.class, TypeScriptBootstrapModifier.class);
+ Component.class, TypeScriptBootstrapModifier.class,
+ Layout.class);
for (Class> clz : classes) {
assertTrue("should be a known class " + clz.getName(),
diff --git a/vaadin-spring/pom.xml b/vaadin-spring/pom.xml
index ffdfd50f498..1e5c1215687 100644
--- a/vaadin-spring/pom.xml
+++ b/vaadin-spring/pom.xml
@@ -7,7 +7,7 @@
com.vaadin
flow-project
- 24.5-SNAPSHOT
+ 24.6-SNAPSHOT
vaadin-spring
diff --git a/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java b/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java
index 3b6dce95a80..66ab4045576 100644
--- a/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java
+++ b/vaadin-spring/src/main/java/com/vaadin/flow/spring/DevModeBrowserLauncher.java
@@ -50,9 +50,8 @@ public void ready(ConfigurableApplicationContext context,
VaadinConfigurationProperties properties = context
.getBean(VaadinConfigurationProperties.class);
- if (properties.isLaunchBrowser()) {
- launchBrowserInDevelopmentMode(context);
- }
+ maybeLaunchBrowserInDevelopmentMode(context,
+ properties.isLaunchBrowser());
} catch (Exception e) {
getLogger().debug("Failed to launch browser", e);
}
@@ -66,8 +65,11 @@ public void ready(ConfigurableApplicationContext context,
*
* @param appContext
* the application context
+ * @param launch
+ * true to launch the browser, false to only report the url
*/
- private void launchBrowserInDevelopmentMode(ApplicationContext appContext) {
+ private void maybeLaunchBrowserInDevelopmentMode(
+ ApplicationContext appContext, boolean launch) {
if (!(appContext instanceof GenericWebApplicationContext)) {
getLogger().warn(
"Unable to determine production mode for an Spring Boot application context of type "
@@ -82,8 +84,11 @@ private void launchBrowserInDevelopmentMode(ApplicationContext appContext) {
DevModeHandlerManager devModeHandlerManager = lookup
.lookup(DevModeHandlerManager.class);
if (devModeHandlerManager != null) {
- devModeHandlerManager
- .launchBrowserInDevelopmentMode(getUrl(webAppContext));
+ String url = getUrl(webAppContext);
+ devModeHandlerManager.setApplicationUrl(url);
+ if (launch) {
+ devModeHandlerManager.launchBrowserInDevelopmentMode(url);
+ }
}
}
diff --git a/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java b/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java
index 273a0cd0bb3..40446a3ecb8 100644
--- a/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java
+++ b/vaadin-spring/src/main/java/com/vaadin/flow/spring/ReloadCache.java
@@ -29,6 +29,7 @@ class ReloadCache implements Serializable {
static Set skippedResources = new HashSet<>();
static Set dynamicWhiteList;
static Set routePackages;
+ static Set layoutPackages;
static Set jarClassNames = new HashSet<>();
static Set> jarClasses = new HashSet<>();
}
\ No newline at end of file
diff --git a/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java b/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java
index 52cd193c24a..3f32b6e0dac 100644
--- a/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java
+++ b/vaadin-spring/src/main/java/com/vaadin/flow/spring/VaadinServletContextInitializer.java
@@ -21,7 +21,6 @@
import jakarta.servlet.ServletContextListener;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.HandlesTypes;
-
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
@@ -65,6 +64,7 @@
import com.vaadin.flow.di.LookupInitializer;
import com.vaadin.flow.internal.DevModeHandlerManager;
import com.vaadin.flow.router.HasErrorParameter;
+import com.vaadin.flow.router.Layout;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.router.RouteAlias;
import com.vaadin.flow.router.RouteConfiguration;
@@ -75,7 +75,6 @@
import com.vaadin.flow.server.RouteRegistry;
import com.vaadin.flow.server.VaadinServletContext;
import com.vaadin.flow.server.communication.IndexHtmlRequestHandler;
-import com.vaadin.flow.router.Layout;
import com.vaadin.flow.server.startup.AbstractRouteRegistryInitializer;
import com.vaadin.flow.server.startup.AnnotationValidator;
import com.vaadin.flow.server.startup.ApplicationConfiguration;
@@ -327,7 +326,7 @@ public void failFastContextInitialized(ServletContextEvent event) {
getLogger().debug("There are no discovered routes yet. "
+ "Start to collect all routes from the classpath...");
try {
- Collection routePackages = null;
+ Collection routePackages;
if (devModeCachingEnabled
&& ReloadCache.routePackages != null) {
routePackages = ReloadCache.routePackages;
@@ -356,11 +355,27 @@ public void failFastContextInitialized(ServletContextEvent event) {
"There are {} navigation targets after filtering route classes: {}",
navigationTargets.size(), navigationTargets);
+ Collection layoutPackages;
+ if (devModeCachingEnabled
+ && ReloadCache.layoutPackages != null) {
+ layoutPackages = ReloadCache.layoutPackages;
+ } else {
+ layoutPackages = getDefaultPackages();
+ }
+
Set> layoutClasses = findByAnnotation(
- routePackages, Layout.class)
+ layoutPackages, Layout.class)
.collect(Collectors.toSet());
+
+ if (devModeCachingEnabled) {
+ ReloadCache.layoutPackages = layoutClasses.stream()
+ .map(Class::getPackageName)
+ .collect(Collectors.toSet());
+ }
+
RouteRegistryInitializer
.validateLayoutAnnotations(layoutClasses);
+
// Collect all layouts to use with Hilla as a main layout
layoutClasses.stream().filter(
clazz -> RouterLayout.class.isAssignableFrom(clazz))
@@ -1070,7 +1085,7 @@ private Resource[] collectResources(String locationPattern)
AtomicBoolean parentIsAllowedByPackageProperties = new AtomicBoolean(
true);
if (parents.stream()
- .anyMatch(parent -> shouldPathBeScanned(
+ .allMatch(parent -> shouldPathBeScanned(
path.substring(parent.length()),
parent,
parentIsAllowedByPackageProperties))) {
diff --git a/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java b/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java
index 9cd2a6fe2b9..36db79851be 100644
--- a/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java
+++ b/vaadin-spring/src/test/java/com/vaadin/flow/spring/DevModeHandlerStopTest.java
@@ -16,9 +16,14 @@
package com.vaadin.flow.spring;
+import com.vaadin.base.devserver.DevModeHandlerManagerImpl;
+import com.vaadin.flow.server.Command;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletContextEvent;
+import java.io.Closeable;
+import java.io.IOException;
+import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
@@ -78,6 +83,23 @@ void devModeStartupListener_contextDestroyAfterSpringContextClosed_shouldNotThro
"Expecting DevModeHandler to be stopped by DevModeHandlerManager, but it was not");
}
+ @Test
+ void shutdownCommandsShouldBeExecutedOnStoppingDevModeHandlerManager() {
+ AtomicReference watcherClosed = new AtomicReference<>(false);
+ DevModeHandlerManager devModeHandlerManager = new DevModeHandlerManagerImpl();
+
+ Closeable mockWatcher = () -> watcherClosed.set(true);
+ devModeHandlerManager.registerShutdownCommand(() -> {
+ try {
+ mockWatcher.close();
+ } catch (Exception ex) {
+ throw new IllegalStateException(ex);
+ }
+ });
+ devModeHandlerManager.stopDevModeHandler();
+ Assertions.assertTrue(watcherClosed.get());
+ }
+
private static class MockDevModeHandlerManager
implements DevModeHandlerManager {
@@ -113,6 +135,15 @@ public DevModeHandler getDevModeHandler() {
public void launchBrowserInDevelopmentMode(String url) {
}
+
+ @Override
+ public void setApplicationUrl(String applicationUrl) {
+ }
+
+ @Override
+ public void registerShutdownCommand(Command command) {
+
+ }
}
@TestConfiguration
diff --git a/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java b/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java
index fe0ea15bad9..3d4a2dd39c4 100644
--- a/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java
+++ b/vaadin-spring/src/test/java/com/vaadin/flow/spring/security/stateless/JwtStatelessAuthenticationTest.java
@@ -80,8 +80,7 @@
@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@WebMvcTest
-@ContextConfiguration(classes = { SecurityAutoConfiguration.class,
- SpringBootAutoConfiguration.class,
+@ContextConfiguration(classes = { SpringBootAutoConfiguration.class,
SpringSecurityAutoConfiguration.class,
JwtStatelessAuthenticationTest.WorkaroundConfig.class,
JwtStatelessAuthenticationTest.SecurityConfig.class })