diff --git a/apps/link/app/(main)/_components/Home.tsx b/apps/link/app/(main)/_components/Home.tsx
index 1a404ae..44332f1 100644
--- a/apps/link/app/(main)/_components/Home.tsx
+++ b/apps/link/app/(main)/_components/Home.tsx
@@ -3,9 +3,10 @@
import { FC } from "react";
import { OpenSearchWrapper } from "@link-stack/leafcutter-ui";
-export const Home: FC = () => (
-
+type HomeProps = {
+ url: string;
+};
+
+export const Home: FC = ({ url }) => (
+
);
diff --git a/apps/link/app/(main)/_components/Sidebar.tsx b/apps/link/app/(main)/_components/Sidebar.tsx
index 44c5468..e5aa6f5 100644
--- a/apps/link/app/(main)/_components/Sidebar.tsx
+++ b/apps/link/app/(main)/_components/Sidebar.tsx
@@ -501,7 +501,17 @@ export const Sidebar: FC = ({
selected={pathname.endsWith("/reporting")}
open={open}
/>
- {leafcutterEnabled && (
+ {roles.includes("admin") && leafcutterEnabled && (
+
+ )}
+ {false && leafcutterEnabled && (
;
+}
diff --git a/apps/link/app/(main)/page.tsx b/apps/link/app/(main)/page.tsx
index 3a74410..cd667fb 100644
--- a/apps/link/app/(main)/page.tsx
+++ b/apps/link/app/(main)/page.tsx
@@ -1,9 +1,10 @@
import { Metadata } from "next";
import { redirect } from "next/navigation";
-import { getServerSession } from "app/_lib/authentication";
-import { Home } from "@link-stack/leafcutter-ui";
-import { getUserVisualizations } from "@link-stack/opensearch-common";
-import { LeafcutterWrapper } from "@link-stack/leafcutter-ui";
+import { Home } from "./_components/Home";
+// import { getServerSession } from "app/_lib/authentication";
+// import { Home } from "@link-stack/leafcutter-ui";
+// import { getUserVisualizations } from "@link-stack/opensearch-common";
+// import { LeafcutterWrapper } from "@link-stack/leafcutter-ui";
export const metadata: Metadata = {
title: "CDR Link - Home",
@@ -11,21 +12,31 @@ export const metadata: Metadata = {
export default async function Page() {
const leafcutterEnabled = process.env.LEAFCUTTER_ENABLED === "true";
+ const dashboardURL = process.env.LEAFCUTTER_DEFAULT_DASHBOARD_URL;
if (!leafcutterEnabled) {
redirect("/overview/recent");
}
-
+ /*
const session = await getServerSession();
const {
user: { email },
}: any = session;
-
- const visualizations = await getUserVisualizations(email ?? "none", 20);
+ */
+ let visualizations = [];
+ /*
+ try {
+ visualizations = await getUserVisualizations(email ?? "none", 20);
+ } catch (e) {
+ console.error(e.meta);
+ }
return (
);
+ */
+
+ return ;
}
diff --git a/apps/link/middleware.ts b/apps/link/middleware.ts
index e5e37f6..e0273e0 100644
--- a/apps/link/middleware.ts
+++ b/apps/link/middleware.ts
@@ -15,6 +15,7 @@ const rewriteURL = (
console.log(`Rewriting ${request.url} to ${destinationURL}`);
const requestHeaders = new Headers(request.headers);
requestHeaders.delete("x-forwarded-user");
+ requestHeaders.delete("x-forwarded-roles");
requestHeaders.delete("connection");
for (const [key, value] of Object.entries(headers)) {
@@ -29,6 +30,9 @@ const rewriteURL = (
const checkRewrites = async (request: NextRequestWithAuth) => {
const linkBaseURL = process.env.LINK_URL ?? "http://localhost:3000";
const zammadURL = process.env.ZAMMAD_URL ?? "http://zammad-nginx:8080";
+ const opensearchBaseURL =
+ process.env.OPENSEARCH_DASHBOARDS_URL ??
+ "http://opensearch-dashboards:5601";
const zammadPaths = [
"/zammad",
@@ -40,9 +44,20 @@ const checkRewrites = async (request: NextRequestWithAuth) => {
];
const { token } = request.nextauth;
const email = token?.email?.toLowerCase() ?? "unknown";
- let headers = { "x-forwarded-user": email };
+ const roles = (token?.roles as string[]) ?? [];
+ let headers = {
+ "x-forwarded-user": email,
+ "x-forwarded-roles": roles.join(","),
+ };
- if (request.nextUrl.pathname.startsWith("/zammad")) {
+ if (request.nextUrl.pathname.startsWith("/dashboards")) {
+ return rewriteURL(
+ request,
+ `${linkBaseURL}/dashboards`,
+ opensearchBaseURL,
+ headers,
+ );
+ } else if (request.nextUrl.pathname.startsWith("/zammad")) {
return rewriteURL(request, `${linkBaseURL}/zammad`, zammadURL, headers);
} else if (zammadPaths.some((p) => request.nextUrl.pathname.startsWith(p))) {
return rewriteURL(request, linkBaseURL, zammadURL, headers);
@@ -51,6 +66,7 @@ const checkRewrites = async (request: NextRequestWithAuth) => {
const nonce = Buffer.from(crypto.randomUUID()).toString("base64");
const cspHeader = `
default-src 'self';
+ frame-src 'self' https://digiresilience.org;
connect-src 'self';
script-src 'self' 'nonce-${nonce}' 'strict-dynamic' ${isDev ? "'unsafe-eval'" : ""};
style-src 'self' 'unsafe-inline';
diff --git a/apps/link/next.config.js b/apps/link/next.config.js
index e9fa845..6ae857a 100644
--- a/apps/link/next.config.js
+++ b/apps/link/next.config.js
@@ -20,7 +20,7 @@ const nextConfig = {
},
{
key: "X-Frame-Options",
- value: "DENY",
+ value: "SAMEORIGIN",
},
{
key: "X-Content-Type-Options",
diff --git a/docker/compose/opensearch.yml b/docker/compose/opensearch.yml
index b8f0039..aaf2f05 100644
--- a/docker/compose/opensearch.yml
+++ b/docker/compose/opensearch.yml
@@ -6,8 +6,8 @@ services:
restart: ${RESTART}
environment:
- discovery.type=single-node
- # - plugins.security.ssl.transport.enforce_hostname_verification=false
- # - plugins.security.ssl.transport.resolve_hostname=false
+ - plugins.security.ssl.transport.enforce_hostname_verification=false
+ - plugins.security.ssl.transport.resolve_hostname=false
- cluster.routing.allocation.disk.watermark.low=3gb
- cluster.routing.allocation.disk.watermark.high=2gb
- cluster.routing.allocation.disk.watermark.flood_stage=500mb
@@ -47,10 +47,10 @@ services:
- ../opensearch-dashboards/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
environment:
OPENSEARCH_HOSTS: '["https://opensearch:9200"]'
- # OPENSEARCH_SECURITY_AUTH_TYPE: "proxy"
- # OPENSEARCH_SECURITY_PROXYCACHE_USER_HEADER: "x-proxy-user"
- # OPENSEARCH_SECURITY_PROXYCACHE_ROLES_HEADER: "x-proxy-roles"
- # OPENSEARCH_REQUESTHEADERSALLOWLIST: '["securitytenant","Authorization","x-forwarded-for","x-proxy-user","x-proxy-roles"]'
+ OPENSEARCH_SECURITY_AUTH_TYPE: "proxy"
+ OPENSEARCH_SECURITY_PROXYCACHE_USER_HEADER: "x-proxy-user"
+ OPENSEARCH_SECURITY_PROXYCACHE_ROLES_HEADER: "x-proxy-roles"
+ OPENSEARCH_REQUESTHEADERSALLOWLIST: '["securitytenant","Authorization","x-forwarded-for","x-proxy-user","x-proxy-roles"]'
volumes:
opensearch-data:
diff --git a/package-lock.json b/package-lock.json
index 8f0e11b..efc61e1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3314,9 +3314,9 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.8.tgz",
- "integrity": "sha512-TGAvzwUg9hybDacwfIGFjI2bXYXrIqky+vMfaeay8rvT56/PNAlvIDUJ54kpT5KRc9AWAihOvtDI7/LJOThOmQ==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.9.tgz",
+ "integrity": "sha512-TWqj7b1w5cmSz4H/uf+y2AHxAH4ldPR7D2bz0XVyn60GCAo/zRbRPx7cF8gTs/i7CiYeHzV6dtat0VpMwOtolw==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -3324,9 +3324,9 @@
}
},
"node_modules/@mui/icons-material": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.8.tgz",
- "integrity": "sha512-6frsXcf1TcJKWevWwRup6V4L8lzI33cbHcAjT83YLgKw0vYRZKY0kjMI9fhrJZdRWXgFFgKKvEv3GjoxbqFF7A==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.9.tgz",
+ "integrity": "sha512-AzlhIT51rdjkZ/EcUV2dbhNkNSUHIqCnNoUxodpiTw8buyAUBd+qnxg5OBSuPpun/ZEdSSB8Q7Uyh6zqjiMsEQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0"
@@ -3339,7 +3339,7 @@
"url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@mui/material": "^6.1.8",
+ "@mui/material": "^6.1.9",
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
@@ -3350,16 +3350,16 @@
}
},
"node_modules/@mui/material": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.8.tgz",
- "integrity": "sha512-QZdQFnXct+7NXIzHgT3qt+sQiO7HYGZU2vymP9Xl9tUMXEOA/S1mZMMb7+WGZrk5TzNlU/kP/85K0da5V1jXoQ==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.9.tgz",
+ "integrity": "sha512-NwqIN0bdsgzSbZd5JFcC+2ez0XW/XNs8uiV2PDHrqQ4qf/FEasFJG1z6g8JbCN0YlTrHZekVb17X0Fv0qcYJfQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0",
- "@mui/core-downloads-tracker": "^6.1.8",
- "@mui/system": "^6.1.8",
+ "@mui/core-downloads-tracker": "^6.1.9",
+ "@mui/system": "^6.1.9",
"@mui/types": "^7.2.19",
- "@mui/utils": "^6.1.8",
+ "@mui/utils": "^6.1.9",
"@popperjs/core": "^2.11.8",
"@types/react-transition-group": "^4.4.11",
"clsx": "^2.1.1",
@@ -3378,7 +3378,7 @@
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@mui/material-pigment-css": "^6.1.8",
+ "@mui/material-pigment-css": "^6.1.9",
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -3399,9 +3399,9 @@
}
},
"node_modules/@mui/material-nextjs": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-6.1.8.tgz",
- "integrity": "sha512-gSNZ+wCq38eX0rcIpsDCwUbWR2+z8/5mVv6+piwJc+ZByLFF8Xuq59vKx3m4IF8+AR8VIYzmfEzKOYxzS7p1aw==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-6.1.9.tgz",
+ "integrity": "sha512-QIJANZt6tkRLoeRsIa0KoC4+MMywTIPQbthL2U2VXHLyrRan00+Yc2M+NFP85/EnPxNEUCRf19l4WKNaPtyetQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0"
@@ -3434,13 +3434,13 @@
}
},
"node_modules/@mui/private-theming": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.8.tgz",
- "integrity": "sha512-TuKl7msynCNCVvhX3c0ef1sF0Qb3VHcPs8XOGB/8bdOGBr/ynmIG1yTMjZeiFQXk8yN9fzK/FDEKMFxILNn3wg==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.9.tgz",
+ "integrity": "sha512-7aum/O1RquBYhfwL/7egDyl9GqJgPM6hoJDFFBbhF6Sgv9yI9v4w3ArKUkuVvR0CtVj4NXRVMKEioh1bjUzvuA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0",
- "@mui/utils": "^6.1.8",
+ "@mui/utils": "^6.1.9",
"prop-types": "^15.8.1"
},
"engines": {
@@ -3461,14 +3461,14 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.8.tgz",
- "integrity": "sha512-ZvEoT0U2nPLSLI+B4by4cVjaZnPT2f20f4JUPkyHdwLv65ZzuoHiTlwyhqX1Ch63p8bcJzKTHQVGisEoMK6PGA==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.9.tgz",
+ "integrity": "sha512-xynSLlJRxHLzSfQaiDjkaTx8LiFb9ByVa7aOdwFnTxGWFMY1F+mkXwAUY4jDDE+MAxkWxlzzQE0wOohnsxhdQg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0",
- "@emotion/cache": "^11.13.1",
- "@emotion/serialize": "^1.3.2",
+ "@emotion/cache": "^11.13.5",
+ "@emotion/serialize": "^1.3.3",
"@emotion/sheet": "^1.4.0",
"csstype": "^3.1.3",
"prop-types": "^15.8.1"
@@ -3495,16 +3495,16 @@
}
},
"node_modules/@mui/system": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.8.tgz",
- "integrity": "sha512-i1kLfQoWxzFpXTBQIuPoA3xKnAnP3en4I2T8xIolovSolGQX5k8vGjw1JaydQS40td++cFsgCdEU458HDNTGUA==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.9.tgz",
+ "integrity": "sha512-8x+RucnNp21gfFYsklCaZf0COXbv3+v0lrVuXONxvPEkESi2rwLlOi8UPJfcz6LxZOAX3v3oQ7qw18vnpgueRg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0",
- "@mui/private-theming": "^6.1.8",
- "@mui/styled-engine": "^6.1.8",
+ "@mui/private-theming": "^6.1.9",
+ "@mui/styled-engine": "^6.1.9",
"@mui/types": "^7.2.19",
- "@mui/utils": "^6.1.8",
+ "@mui/utils": "^6.1.9",
"clsx": "^2.1.1",
"csstype": "^3.1.3",
"prop-types": "^15.8.1"
@@ -3549,9 +3549,9 @@
}
},
"node_modules/@mui/utils": {
- "version": "6.1.8",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.8.tgz",
- "integrity": "sha512-O2DWb1kz8hiANVcR7Z4gOB3SvPPsSQGUmStpyBDzde6dJIfBzgV9PbEQOBZd3EBsd1pB+Uv1z5LAJAbymmawrA==",
+ "version": "6.1.9",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.9.tgz",
+ "integrity": "sha512-N7uzBp7p2or+xanXn3aH2OTINC6F/Ru/U8h6amhRZEev8bJhKN86rIDIoxZZ902tj+09LXtH83iLxFMjMHyqNA==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0",
@@ -4168,6 +4168,18 @@
"url": "https://opencollective.com/openapi_generator"
}
},
+ "node_modules/@openapitools/openapi-generator-cli/node_modules/axios": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/@openapitools/openapi-generator-cli/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -4658,12 +4670,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.9.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
- "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
+ "version": "22.10.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz",
+ "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==",
"license": "MIT",
"dependencies": {
- "undici-types": "~6.19.8"
+ "undici-types": "~6.20.0"
}
},
"node_modules/@types/normalize-package-data": {
@@ -4765,16 +4777,16 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz",
- "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz",
+ "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==",
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "8.15.0",
- "@typescript-eslint/type-utils": "8.15.0",
- "@typescript-eslint/utils": "8.15.0",
- "@typescript-eslint/visitor-keys": "8.15.0",
+ "@typescript-eslint/scope-manager": "8.16.0",
+ "@typescript-eslint/type-utils": "8.16.0",
+ "@typescript-eslint/utils": "8.16.0",
+ "@typescript-eslint/visitor-keys": "8.16.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
@@ -4798,15 +4810,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz",
- "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz",
+ "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==",
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.15.0",
- "@typescript-eslint/types": "8.15.0",
- "@typescript-eslint/typescript-estree": "8.15.0",
- "@typescript-eslint/visitor-keys": "8.15.0",
+ "@typescript-eslint/scope-manager": "8.16.0",
+ "@typescript-eslint/types": "8.16.0",
+ "@typescript-eslint/typescript-estree": "8.16.0",
+ "@typescript-eslint/visitor-keys": "8.16.0",
"debug": "^4.3.4"
},
"engines": {
@@ -4826,13 +4838,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz",
- "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz",
+ "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==",
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.15.0",
- "@typescript-eslint/visitor-keys": "8.15.0"
+ "@typescript-eslint/types": "8.16.0",
+ "@typescript-eslint/visitor-keys": "8.16.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4843,13 +4855,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz",
- "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz",
+ "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==",
"license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "8.15.0",
- "@typescript-eslint/utils": "8.15.0",
+ "@typescript-eslint/typescript-estree": "8.16.0",
+ "@typescript-eslint/utils": "8.16.0",
"debug": "^4.3.4",
"ts-api-utils": "^1.3.0"
},
@@ -4870,9 +4882,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz",
- "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz",
+ "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==",
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4883,13 +4895,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz",
- "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz",
+ "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==",
"license": "BSD-2-Clause",
"dependencies": {
- "@typescript-eslint/types": "8.15.0",
- "@typescript-eslint/visitor-keys": "8.15.0",
+ "@typescript-eslint/types": "8.16.0",
+ "@typescript-eslint/visitor-keys": "8.16.0",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
@@ -4935,15 +4947,15 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz",
- "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz",
+ "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==",
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@typescript-eslint/scope-manager": "8.15.0",
- "@typescript-eslint/types": "8.15.0",
- "@typescript-eslint/typescript-estree": "8.15.0"
+ "@typescript-eslint/scope-manager": "8.16.0",
+ "@typescript-eslint/types": "8.16.0",
+ "@typescript-eslint/typescript-estree": "8.16.0"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4962,12 +4974,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz",
- "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz",
+ "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==",
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.15.0",
+ "@typescript-eslint/types": "8.16.0",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
@@ -5609,9 +5621,9 @@
"license": "MIT"
},
"node_modules/axios": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
- "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "version": "1.7.8",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz",
+ "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
@@ -7291,9 +7303,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.64",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.64.tgz",
- "integrity": "sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==",
+ "version": "1.5.66",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.66.tgz",
+ "integrity": "sha512-pI2QF6+i+zjPbqRzJwkMvtvkdI7MjVbSh2g8dlMguDJIXEPw+kwasS1Jl+YGPEBfGVxsVgGUratAKymPdPo2vQ==",
"license": "ISC"
},
"node_modules/emittery": {
@@ -7461,14 +7473,14 @@
}
},
"node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
"license": "MIT",
"dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
},
"engines": {
"node": ">= 0.4"
@@ -7837,10 +7849,13 @@
}
},
"node_modules/eslint-plugin-promise": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz",
- "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==",
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz",
+ "integrity": "sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==",
"license": "ISC",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0"
+ },
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -8748,9 +8763,9 @@
}
},
"node_modules/graphile-config/node_modules/@types/node": {
- "version": "20.17.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.7.tgz",
- "integrity": "sha512-sZXXnpBFMKbao30dUAvzKbdwA2JM1fwUtVEq/kxKuPI5mMwZiRElCpTXb0Biq/LMEVpXDZL5G5V0RPnxKeyaYg==",
+ "version": "20.17.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
+ "integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.19.2"
@@ -8790,6 +8805,12 @@
"node": ">=8"
}
},
+ "node_modules/graphile-config/node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
"node_modules/graphile-config/node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -12194,9 +12215,9 @@
"license": "ISC"
},
"node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"funding": [
{
"type": "github",
@@ -14246,18 +14267,18 @@
}
},
"node_modules/remeda": {
- "version": "2.17.3",
- "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.17.3.tgz",
- "integrity": "sha512-xyi2rCQkz2j4BEWbWxPw6JCapv1yBuSwr4Uf9BX00AkesAJaiKvc6Il6thsBidwVZAtNiSaCIXvslkKL0ybz8w==",
+ "version": "2.17.4",
+ "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.17.4.tgz",
+ "integrity": "sha512-pviU2Ag7Qx9mOCAKO4voxDx/scfLzdhp3v85qDO4xxntQsU76uE9sgrAAdK1ATn4zzaOJqCXYMMNRP+O9F4Wiw==",
"license": "MIT",
"dependencies": {
"type-fest": "^4.27.0"
}
},
"node_modules/remeda/node_modules/type-fest": {
- "version": "4.28.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.28.0.tgz",
- "integrity": "sha512-jXMwges/FVbFRe5lTMJZVEZCrO9kI9c8k0PA/z7nF3bo0JSCCLysvokFjNPIUK/itEMas10MQM+AiHoHt/T/XA==",
+ "version": "4.29.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.0.tgz",
+ "integrity": "sha512-RPYt6dKyemXJe7I6oNstcH24myUGSReicxcHTvCLgzm4e0n8y05dGvcGB15/SoPRBmhlMthWQ9pvKyL81ko8nQ==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -15431,9 +15452,9 @@
}
},
"node_modules/ts-api-utils": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.1.tgz",
- "integrity": "sha512-5RU2/lxTA3YUZxju61HO2U6EoZLvBLtmV2mbTvqyu4a/7s7RmJPT+1YekhMVsQhznRWk/czIwDUg+V8Q9ZuG4w==",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz",
+ "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==",
"license": "MIT",
"engines": {
"node": ">=16"
@@ -15515,27 +15536,27 @@
}
},
"node_modules/turbo": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.1.tgz",
- "integrity": "sha512-vHZe/e6k1HZVKiMQPQ1BWFn53vjVQDFKdkjUq/pBKlRWi1gw9LQO6ntH4qZCcHY1rH6TXgsRmexXdgWl96YvVQ==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.3.tgz",
+ "integrity": "sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==",
"dev": true,
"license": "MIT",
"bin": {
"turbo": "bin/turbo"
},
"optionalDependencies": {
- "turbo-darwin-64": "2.3.1",
- "turbo-darwin-arm64": "2.3.1",
- "turbo-linux-64": "2.3.1",
- "turbo-linux-arm64": "2.3.1",
- "turbo-windows-64": "2.3.1",
- "turbo-windows-arm64": "2.3.1"
+ "turbo-darwin-64": "2.3.3",
+ "turbo-darwin-arm64": "2.3.3",
+ "turbo-linux-64": "2.3.3",
+ "turbo-linux-arm64": "2.3.3",
+ "turbo-windows-64": "2.3.3",
+ "turbo-windows-arm64": "2.3.3"
}
},
"node_modules/turbo-darwin-64": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.1.tgz",
- "integrity": "sha512-tjHfjW/Gs8Q9IO+9gPdIsSStZ8I09QYDRT/SyhFTPLnc7O2ZlxHPBVFfjUkHUjanHNYO8CpRGt+zdp1PaMCruw==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.3.tgz",
+ "integrity": "sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==",
"cpu": [
"x64"
],
@@ -15547,9 +15568,9 @@
]
},
"node_modules/turbo-darwin-arm64": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.1.tgz",
- "integrity": "sha512-At1WStnxCfrBQ4M2g6ynre8WsusGwA11okhVolBxyFUemYozDTtbZwelr+IqNggjT251vviokxOkcFzzogbiFw==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.3.tgz",
+ "integrity": "sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==",
"cpu": [
"arm64"
],
@@ -15561,9 +15582,9 @@
]
},
"node_modules/turbo-linux-64": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.1.tgz",
- "integrity": "sha512-COwEev7s9fsxLM2eoRCyRLPj+BXvZjFIS+GxzdAubYhoSoZit8B8QGKczyDl6448xhuFEWKrpHhcR9aBuwB4ag==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.3.tgz",
+ "integrity": "sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==",
"cpu": [
"x64"
],
@@ -15575,9 +15596,9 @@
]
},
"node_modules/turbo-linux-arm64": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.1.tgz",
- "integrity": "sha512-AP0uE15Rhxza2Jl+Q3gxdXRA92IIeFAYaufz6CMcZuGy9yZsBlLt9w6T47H6g7XQPzWuw8pzfjM1omcTKkkDpQ==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.3.tgz",
+ "integrity": "sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==",
"cpu": [
"arm64"
],
@@ -15589,9 +15610,9 @@
]
},
"node_modules/turbo-windows-64": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.1.tgz",
- "integrity": "sha512-HDSneq0dNZYZch74c2eygq+OiJE/JYDs7OsGM0yRYVj336383xkUnxz6W2I7qiyMCQXzp4UVUDZXvZhUYcX3BA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.3.tgz",
+ "integrity": "sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==",
"cpu": [
"x64"
],
@@ -15603,9 +15624,9 @@
]
},
"node_modules/turbo-windows-arm64": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.1.tgz",
- "integrity": "sha512-7/2/sJZiquwoT/jWBCfV0qKq4NarsJPmDRjMcR9dDMIwCYsGM8ljomkDRTCtkNeFcUvYw54MiRWHehWgbcRPsw==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.3.tgz",
+ "integrity": "sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==",
"cpu": [
"arm64"
],
@@ -15808,9 +15829,9 @@
}
},
"node_modules/undici-types": {
- "version": "6.19.8",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
- "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"license": "MIT"
},
"node_modules/unified": {
@@ -16174,9 +16195,9 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.16.tgz",
+ "integrity": "sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==",
"license": "MIT",
"dependencies": {
"available-typed-arrays": "^1.0.7",
diff --git a/packages/leafcutter-ui/components/OpenSearchWrapper.tsx b/packages/leafcutter-ui/components/OpenSearchWrapper.tsx
index 2df7608..f3de21a 100644
--- a/packages/leafcutter-ui/components/OpenSearchWrapper.tsx
+++ b/packages/leafcutter-ui/components/OpenSearchWrapper.tsx
@@ -6,12 +6,12 @@ import { Box } from "@mui/material";
interface OpenSearchWrapperProps {
url: string;
- marginTop: string;
+ margin: number;
}
export const OpenSearchWrapper: FC = ({
url,
- marginTop,
+ margin,
}) => (
= ({
/>