+
### Supported Integrations
-
+
### Adding the widget
@@ -59,4 +71,4 @@ import { truenasIntegration } from '@site/docs/integrations/truenas';
### Configuration
-
\ No newline at end of file
+
diff --git a/apps/docs/docs/widgets/traefik/index.mdx b/apps/docs/docs/widgets/traefik/index.mdx
new file mode 100644
index 000000000..dc9f6a6c4
--- /dev/null
+++ b/apps/docs/docs/widgets/traefik/index.mdx
@@ -0,0 +1,35 @@
+---
+title: "Traefik"
+description: "Displays Traefik router, service, middleware, and entry point counts."
+hide_title: true
+---
+
+import { WidgetHeader } from "@site/src/components/widgets/header";
+import { AddingWidget } from "@site/src/components/widgets/adding";
+import { WidgetConfig } from "@site/src/components/widgets/configuration";
+import { WidgetIntegrations } from "@site/src/components/widgets/integrations";
+import { traefikWidget } from ".";
+import { traefikIntegration } from "@site/docs/integrations/traefik";
+
+
+
+This widget displays a compact overview of your Traefik instance, including total routers, entry points, protocol-specific router/service/middleware counts, and warning or error totals when Traefik reports them.
+
+### Supported Integrations
+
+
+
+### Adding the widget
+
+
+
+### Configuration
+
+
diff --git a/apps/docs/docs/widgets/traefik/index.ts b/apps/docs/docs/widgets/traefik/index.ts
new file mode 100644
index 000000000..d55216eef
--- /dev/null
+++ b/apps/docs/docs/widgets/traefik/index.ts
@@ -0,0 +1,31 @@
+import { WidgetDefinition } from "@site/src/types";
+import { IconRoute } from "@tabler/icons-react";
+
+export const traefikWidget: WidgetDefinition = {
+ icon: IconRoute,
+ name: "Traefik",
+ description: "Overview of Traefik routers, services, middlewares, and entry points.",
+ path: "../../widgets/traefik",
+ configuration: {
+ items: [
+ {
+ name: "Show TCP",
+ description: "Display TCP routers, services, and middlewares.",
+ values: { type: "boolean" },
+ defaultValue: "yes",
+ },
+ {
+ name: "Show UDP",
+ description: "Display UDP routers and services.",
+ values: { type: "boolean" },
+ defaultValue: "yes",
+ },
+ {
+ name: "Show entry points",
+ description: "Display the configured Traefik entry point names.",
+ values: { type: "boolean" },
+ defaultValue: "yes",
+ },
+ ],
+ },
+};
diff --git a/apps/docs/docsearch.config.js b/apps/docs/docsearch.config.js
index 0af932a97..2cf493485 100644
--- a/apps/docs/docsearch.config.js
+++ b/apps/docs/docsearch.config.js
@@ -1,18 +1,25 @@
// Algolia DocSearch crawler for homarr.dev
// Crawler ID: cd77a285-2756-4557-bf21-ee703748df15
-// DocSearch-managed crawlers: paste this in the Algolia crawler editor or send to DocSearch support.
-// Template: https://docsearch.algolia.com/docs/templates/#docusaurus-v3-template
-// Markdown indexing: https://www.algolia.com/doc/guides/algolia-ai/askai/guides/markdown-indexing
+// Paste this in the Algolia crawler editor.
new Crawler({
appId: "N69WSPZTID",
apiKey: "YOUR_CRAWLER_ADMIN_API_KEY",
- rateLimit: 8,
- maxDepth: 10,
+ indexPrefix: "",
+ rateLimit: 32,
+ maxDepth: 4,
startUrls: ["https://homarr.dev/"],
sitemaps: ["https://homarr.dev/sitemap.xml"],
ignoreCanonicalTo: true,
discoveryPatterns: ["https://homarr.dev/**"],
+ exclusionPatterns: [
+ "https://homarr.dev/docs/tags/**",
+ "https://homarr.dev/blog/tags/**",
+ "https://homarr.dev/blog/authors/**",
+ "https://homarr.dev/blog/archive/**",
+ "https://homarr.dev/search/**",
+ "https://homarr.dev/docs/category/**",
+ ],
actions: [
{
indexName: "Docusaurus",
@@ -105,7 +112,6 @@ new Crawler({
advancedSyntax: true,
attributeCriteriaComputedByMinProximity: true,
removeWordsIfNoResults: "allOptional",
- separatorsToIndex: "_",
},
markdown: {
attributesForFaceting: ["lang", "language", "version", "docusaurus_tag"],
@@ -119,4 +125,10 @@ new Crawler({
advancedSyntax: false,
},
},
+ apiKey: "YOUR_CRAWLER_ADMIN_API_KEY",
+ schedule: "on saturday",
+ renderJavaScript: false,
+ maxUrls: null,
+ cache: { enabled: false },
+ safetyChecks: { beforeIndexPublishing: { maxLostRecordsPercentage: 99 } },
});
diff --git a/apps/docs/docusaurus.config.ts b/apps/docs/docusaurus.config.ts
index 816f25726..62384c741 100644
--- a/apps/docs/docusaurus.config.ts
+++ b/apps/docs/docusaurus.config.ts
@@ -8,7 +8,7 @@ const config: Config = {
tagline: "A simple yet powerful dashboard for your server.",
url: "https://homarr.dev",
baseUrl: "/",
- trailingSlash: true,
+ trailingSlash: undefined,
favicon: "img/logo.png",
organizationName: "homarr-labs",
projectName: "homarr",
@@ -84,8 +84,27 @@ const config: Config = {
sitemap: {
changefreq: "weekly",
priority: 0.5,
- ignorePatterns: ["/tags/**"],
+ ignorePatterns: ["/tags/**", "/docs/category/**"],
filename: "sitemap.xml",
+ createSitemapItems: async ({ routes, siteConfig, defaultCreateSitemapItems }) => {
+ const items = await defaultCreateSitemapItems({ routes, siteConfig });
+ return items.map((item) => {
+ const path = new URL(item.url).pathname;
+ if (path === "/" || path === "") {
+ return { ...item, priority: 1.0, changefreq: "weekly" };
+ }
+ if (path.startsWith("/docs/")) {
+ return { ...item, priority: 0.7, changefreq: "monthly" };
+ }
+ if (path.startsWith("/blog/")) {
+ return { ...item, priority: 0.3, changefreq: "never" };
+ }
+ if (path.startsWith("/about-us")) {
+ return { ...item, priority: 0.4, changefreq: "yearly" };
+ }
+ return item;
+ });
+ },
},
} satisfies Preset.Options,
],
diff --git a/apps/docs/package.json b/apps/docs/package.json
index e38a9bdb5..b5b359b80 100644
--- a/apps/docs/package.json
+++ b/apps/docs/package.json
@@ -46,7 +46,7 @@
"random-word-slugs": "^0.1.7",
"react": "catalog:",
"react-dom": "catalog:",
- "swiper": "^14.0.1",
+ "swiper": "^14.0.2",
"tailwind-merge": "catalog:",
"tailwindcss": "^4.3.2",
"zod": "catalog:"
diff --git a/apps/docs/src/components/integrations/secrets.tsx b/apps/docs/src/components/integrations/secrets.tsx
index 2fc09fc6d..e03e59430 100644
--- a/apps/docs/src/components/integrations/secrets.tsx
+++ b/apps/docs/src/components/integrations/secrets.tsx
@@ -47,6 +47,16 @@ const secretKinds = {
description: "The Secret part of the API Key for authentication.",
icon: IconPassword,
},
+ patchmonApiKey: {
+ name: "API Key",
+ description: "The API key from PatchMon's GetHomepage integration.",
+ icon: IconKey,
+ },
+ patchmonApiSecret: {
+ name: "API Secret",
+ description: "The API secret from PatchMon's GetHomepage integration.",
+ icon: IconPassword,
+ },
githubAppId: { name: "App ID", description: "The ID of the GitHub App", icon: IconCode },
githubInstallationId: {
name: "Installation ID",
diff --git a/apps/docs/static/api/open-api-schema.json b/apps/docs/static/api/open-api-schema.json
index 50384fba1..ca2f93d64 100644
--- a/apps/docs/static/api/open-api-schema.json
+++ b/apps/docs/static/api/open-api-schema.json
@@ -1 +1 @@
-{"openapi":"3.1.0","info":{"title":"Homarr API documentation","version":"1.0.0"},"servers":[{"url":"http://localhost:3000"}],"externalDocs":{"url":"https://homarr.dev"},"paths":{"/api/apps/paginated":{"get":{"operationId":"appRouter-getPaginated","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"in":"query","name":"page","schema":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}},"totalCount":{"type":"number"}},"required":["items","totalCount"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps":{"get":{"operationId":"appRouter-all","tags":["apps"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"appRouter-create","tags":["apps"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"description":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}]},"iconUrl":{"type":"string","minLength":1},"href":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^(?!javascript)[a-zA-Z]*:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]},"pingUrl":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^https?:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]}},"required":["name","description","iconUrl","href","pingUrl"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"appId":{"type":"string"}},"required":["appId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}]}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps/search":{"get":{"operationId":"appRouter-search","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"query","name":"query","schema":{"type":"string"},"required":true},{"in":"query","name":"limit","schema":{"default":10,"type":"number","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps/selectable":{"get":{"operationId":"appRouter-selectable","tags":["apps"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","iconUrl","href","pingUrl","description"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps/{id}":{"get":{"operationId":"appRouter-byId","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"patch":{"operationId":"appRouter-update","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"description":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}]},"iconUrl":{"type":"string","minLength":1},"href":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^(?!javascript)[a-zA-Z]*:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]},"pingUrl":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^https?:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]}},"required":["name","description","iconUrl","href","pingUrl"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"appRouter-delete","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/info":{"get":{"operationId":"infoRouter-getInfo","tags":["info"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/invites":{"get":{"operationId":"inviteRouter-getAll","tags":["invites"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"expirationDate":{"type":"string"},"creator":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string"}},"required":["name","id"],"additionalProperties":false}},"required":["id","expirationDate","creator"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"inviteRouter-createInvite","tags":["invites"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expirationDate":{"type":"string"}},"required":["expirationDate"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/invites/{id}":{"delete":{"operationId":"inviteRouter-deleteInvite","tags":["invites"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"not":{}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users":{"post":{"operationId":"userRouter-create","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","minLength":3,"maxLength":255},"password":{"type":"string","minLength":8,"maxLength":255},"confirmPassword":{"type":"string"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"string","minLength":0,"maxLength":0}]},"groupIds":{"type":"array","items":{"type":"string"}}},"required":["username","password","confirmPassword","groupIds"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"get":{"operationId":"userRouter-getAll","tags":["users"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailVerified":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","emailVerified","image"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/profileImage":{"put":{"operationId":"userRouter-setProfileImage","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"image":{"anyOf":[{"type":"string","maxLength":350000,"pattern":"^data:image\\/(png|jpeg|gif|webp);base64,[A-Za-z0-9/+]+=*$"},{"type":"null"}]}},"required":["userId","image"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/selectable":{"get":{"operationId":"userRouter-selectable","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"query","name":"excludeExternalProviders","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image","email"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/search":{"post":{"operationId":"userRouter-search","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"default":10,"type":"number","minimum":1,"maximum":100}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image","email"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/{userId}":{"get":{"operationId":"userRouter-getById","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"userId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailVerified":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider":{"type":"string"},"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstDayOfWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pingIconsEnabled":{"type":"boolean"},"defaultSearchEngineId":{"anyOf":[{"type":"string"},{"type":"null"}]},"openSearchInNewTab":{"type":"boolean"},"ddgBangs":{"type":"boolean"},"completedManageTour":{"type":"boolean"},"completedBoardTour":{"type":"boolean"}},"required":["id","name","email","emailVerified","image","provider","homeBoardId","mobileHomeBoardId","firstDayOfWeek","pingIconsEnabled","defaultSearchEngineId","openSearchInNewTab","ddgBangs","completedManageTour","completedBoardTour"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"userRouter-delete","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"userId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/profile":{"put":{"operationId":"userRouter-editProfile","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":3,"maxLength":255},"email":{"anyOf":[{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"string","const":""}]},{"type":"null"}]}},"required":["id","name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/{userId}/changePassword":{"patch":{"operationId":"userRouter-changePassword","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"userId","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"previousPassword":{"type":"string","minLength":1},"password":{"type":"string","minLength":8,"maxLength":255},"confirmPassword":{"type":"string"}},"required":["previousPassword","password","confirmPassword"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/changeHome":{"patch":{"operationId":"userRouter-changeHomeBoards","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"}},"required":["homeBoardId","mobileHomeBoardId","userId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/changeSearchEngine":{"patch":{"operationId":"userRouter-changeDefaultSearchEngine","tags":["users"],"security":[{"apikey":[]}],"deprecated":true,"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultSearchEngineId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"ddgBangsEnabled":{"type":"boolean"},"userId":{"type":"string"}},"required":["defaultSearchEngineId","ddgBangsEnabled","userId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/search-preferences":{"patch":{"operationId":"userRouter-changeSearchPreferences","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultSearchEngineId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"openInNewTab":{"type":"boolean"},"ddgBangsEnabled":{"type":"boolean"},"userId":{"type":"string"}},"required":["defaultSearchEngineId","openInNewTab","ddgBangsEnabled","userId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/changeScheme":{"patch":{"operationId":"userRouter-changeColorScheme","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"colorScheme":{"type":"string","enum":["auto","light","dark"]}},"required":["colorScheme"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/ddg-bangs":{"patch":{"operationId":"userRouter-changeDdgBangs","tags":["users"],"security":[{"apikey":[]}],"deprecated":true,"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ddgBangs":{"type":"boolean"},"id":{"type":"string"}},"required":["ddgBangs","id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/firstDayOfWeek":{"patch":{"operationId":"userRouter-changeFirstDayOfWeek","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstDayOfWeek":{"type":"number","minimum":0,"maximum":6},"id":{"type":"string"}},"required":["firstDayOfWeek","id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}},"components":{"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Invalid input data"},"code":{"type":"string","description":"The error code","example":"BAD_REQUEST"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information","example":{"code":"BAD_REQUEST","message":"Invalid input data","issues":[]}},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Authorization not provided"},"code":{"type":"string","description":"The error code","example":"UNAUTHORIZED"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information","example":{"code":"UNAUTHORIZED","message":"Authorization not provided","issues":[]}},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Insufficient access"},"code":{"type":"string","description":"The error code","example":"FORBIDDEN"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information","example":{"code":"FORBIDDEN","message":"Insufficient access","issues":[]}},"error.NOT_FOUND":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Not found"},"code":{"type":"string","description":"The error code","example":"NOT_FOUND"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Not found error (404)","description":"The error information","example":{"code":"NOT_FOUND","message":"Not found","issues":[]}},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Internal server error"},"code":{"type":"string","description":"The error code","example":"INTERNAL_SERVER_ERROR"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information","example":{"code":"INTERNAL_SERVER_ERROR","message":"Internal server error","issues":[]}}},"securitySchemes":{"apikey":{"type":"apiKey","name":"ApiKey","description":"API key which can be obtained in the Homarr administration dashboard","in":"header"}}}}
\ No newline at end of file
+{"openapi":"3.1.0","info":{"title":"Homarr API documentation","version":"1.1.0"},"servers":[{"url":"http://localhost:3000"}],"externalDocs":{"url":"https://homarr.dev"},"paths":{"/api/apps/paginated":{"get":{"operationId":"appRouter-getPaginated","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"pageSize","schema":{"default":10,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},{"in":"query","name":"page","schema":{"default":1,"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}},"totalCount":{"type":"number"}},"required":["items","totalCount"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps":{"get":{"operationId":"appRouter-all","tags":["apps"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"appRouter-create","tags":["apps"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"description":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}]},"iconUrl":{"type":"string","minLength":1},"href":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^(?!javascript)[a-zA-Z]*:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]},"pingUrl":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^https?:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]}},"required":["name","description","iconUrl","href","pingUrl"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"appId":{"type":"string"}},"required":["appId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}]}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps/search":{"get":{"operationId":"appRouter-search","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"query","name":"query","schema":{"type":"string"},"required":true},{"in":"query","name":"limit","schema":{"default":10,"type":"number","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps/selectable":{"get":{"operationId":"appRouter-selectable","tags":["apps"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","iconUrl","href","pingUrl","description"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/apps/{id}":{"get":{"operationId":"appRouter-byId","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"iconUrl":{"type":"string"},"href":{"anyOf":[{"type":"string"},{"type":"null"}]},"pingUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","description","iconUrl","href","pingUrl"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"patch":{"operationId":"appRouter-update","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64},"description":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}]},"iconUrl":{"type":"string","minLength":1},"href":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^(?!javascript)[a-zA-Z]*:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]},"pingUrl":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^https?:\\/\\/"},{"type":"string","const":""}]},{"type":"null"}]}},"required":["name","description","iconUrl","href","pingUrl"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"appRouter-delete","tags":["apps"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards":{"get":{"operationId":"boardRouter-getAllBoards","tags":["boards"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"logoImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"isPublic":{"type":"boolean"},"creator":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image","email"],"additionalProperties":false},{"type":"null"}]},"isHome":{"type":"boolean"},"isMobileHome":{"type":"boolean"},"userPermissions":{"type":"array","items":{"type":"object","properties":{"permission":{"type":"string","enum":["view","modify","full"]}},"required":["permission"],"additionalProperties":false}},"groupPermissions":{"type":"array","items":{"type":"object","properties":{"permission":{"type":"string","enum":["view","modify","full"]}},"required":["permission"],"additionalProperties":false}}},"required":["id","name","logoImageUrl","isPublic","creator","isHome","isMobileHome","userPermissions","groupPermissions"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"boardRouter-createBoard","tags":["boards"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9-_]*$"},"columnCount":{"type":"number","minimum":1,"maximum":24},"isPublic":{"type":"boolean"}},"required":["name","columnCount","isPublic"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"boardId":{"type":"string"}},"required":["boardId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}/duplicate":{"post":{"operationId":"boardRouter-duplicateBoard","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9-_]*$"}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"boardId":{"type":"string"}},"required":["boardId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}/name":{"patch":{"operationId":"boardRouter-renameBoard","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9-_]*$"}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}/visibility":{"patch":{"operationId":"boardRouter-changeBoardVisibility","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"visibility":{"type":"string","enum":["public","private"]}},"required":["visibility"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}":{"delete":{"operationId":"boardRouter-deleteBoard","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}/home":{"patch":{"operationId":"boardRouter-setHomeBoard","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}/mobile-home":{"patch":{"operationId":"boardRouter-setMobileHomeBoard","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/{id}/settings":{"patch":{"operationId":"boardRouter-savePartialBoardSettings","tags":["boards"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pageTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"metaTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"logoImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"faviconImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"backgroundImageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"backgroundImageAttachment":{"type":"string","enum":["fixed","scroll"]},"backgroundImageRepeat":{"type":"string","enum":["repeat","repeat-x","repeat-y","no-repeat"]},"backgroundImageSize":{"type":"string","enum":["cover","contain"]},"primaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"secondaryColor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"opacity":{"type":"number","minimum":0,"maximum":100},"customCss":{"type":"string","maxLength":16384},"iconColor":{"anyOf":[{"anyOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},{"type":"string","const":""}]},{"type":"null"}]},"itemRadius":{"anyOf":[{"type":"string","const":"xs"},{"type":"string","const":"sm"},{"type":"string","const":"md"},{"type":"string","const":"lg"},{"type":"string","const":"xl"}]},"disableStatus":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/boards/items":{"post":{"operationId":"boardRouter-addItem","tags":["boards"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"boardId":{"type":"string"},"kind":{"type":"string","enum":["clock","weather","app","iframe","video","notebook","anchorNote","dnsHoleSummary","dnsHoleControls","smartHome-entityState","smartHome-executeAutomation","stockPrice","mediaServer","calendar","downloads","mediaRequests-requestList","mediaRequests-requestStats","mediaTranscoding","minecraftServerStatus","networkControllerSummary","networkControllerStatus","rssFeed","bookmarks","indexerManager","healthMonitoring","releases","mediaReleases","dockerContainers","firewall","notifications","systemResources","coolify","systemDisks","timetable","immich-serverStats","immich-albumCarousel","paperlessNgx","tracearr","speedtestTracker","uptimeKuma","audioStats","umami","vpn","archiveTeamWarrior","ups","beszelSystemTable","beszelSystemGrid","beszelAlerts","beszelSystemStats","customApi"]},"options":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"integrationIds":{"default":[],"type":"array","items":{"type":"string"}}},"required":["boardId","kind"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string"}},"required":["itemId"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/info":{"get":{"operationId":"infoRouter-getInfo","tags":["info"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"type":"string"}},"required":["version"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/invites":{"get":{"operationId":"inviteRouter-getAll","tags":["invites"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"expirationDate":{"type":"string"},"creator":{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"id":{"type":"string"}},"required":["name","id"],"additionalProperties":false}},"required":["id","expirationDate","creator"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"post":{"operationId":"inviteRouter-createInvite","tags":["invites"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expirationDate":{"type":"string"}},"required":["expirationDate"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"token":{"type":"string"}},"required":["id","token"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/invites/{id}":{"delete":{"operationId":"inviteRouter-deleteInvite","tags":["invites"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"id","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"not":{}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/settings/board":{"get":{"operationId":"serverSettingsRouter-getBoardSettings","tags":["settings"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"enableStatusByDefault":{"type":"boolean"},"forceDisableStatus":{"type":"boolean"}},"required":["homeBoardId","mobileHomeBoardId","enableStatusByDefault","forceDisableStatus"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"patch":{"operationId":"serverSettingsRouter-updateBoardSettings","tags":["settings"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"enableStatusByDefault":{"type":"boolean"},"forceDisableStatus":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"enableStatusByDefault":{"type":"boolean"},"forceDisableStatus":{"type":"boolean"}},"required":["homeBoardId","mobileHomeBoardId","enableStatusByDefault","forceDisableStatus"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users":{"post":{"operationId":"userRouter-create","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","minLength":3,"maxLength":255},"password":{"type":"string","minLength":8,"maxLength":255},"confirmPassword":{"type":"string"},"email":{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"string","minLength":0,"maxLength":0}]},"groupIds":{"type":"array","items":{"type":"string"}}},"required":["username","password","confirmPassword","groupIds"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"get":{"operationId":"userRouter-getAll","tags":["users"],"security":[{"apikey":[]}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailVerified":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","email","emailVerified","image"],"additionalProperties":false}}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/profileImage":{"put":{"operationId":"userRouter-setProfileImage","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string"},"image":{"anyOf":[{"type":"string","maxLength":350000,"pattern":"^data:image\\/(png|jpeg|gif|webp);base64,[A-Za-z0-9/+]+=*$"},{"type":"null"}]}},"required":["userId","image"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/selectable":{"get":{"operationId":"userRouter-selectable","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"query","name":"providers","schema":{"type":"array","items":{"type":"string","enum":["credentials","oidc","ldap"]}}}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image","email"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/search":{"post":{"operationId":"userRouter-search","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"default":10,"type":"number","minimum":1,"maximum":100}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","image","email"],"additionalProperties":false}}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/{userId}":{"get":{"operationId":"userRouter-getById","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"userId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"emailVerified":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"string"},{"type":"null"}]},"provider":{"type":"string"},"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"firstDayOfWeek":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pingIconsEnabled":{"type":"boolean"},"defaultSearchEngineId":{"anyOf":[{"type":"string"},{"type":"null"}]},"openSearchInNewTab":{"type":"boolean"},"ddgBangs":{"type":"boolean"},"completedManageTour":{"type":"boolean"},"completedBoardTour":{"type":"boolean"}},"required":["id","name","email","emailVerified","image","provider","homeBoardId","mobileHomeBoardId","firstDayOfWeek","pingIconsEnabled","defaultSearchEngineId","openSearchInNewTab","ddgBangs","completedManageTour","completedBoardTour"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}},"delete":{"operationId":"userRouter-delete","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"userId","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/profile":{"put":{"operationId":"userRouter-editProfile","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":3,"maxLength":255},"email":{"anyOf":[{"anyOf":[{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"string","const":""}]},{"type":"null"}]}},"required":["id","name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/{userId}/changePassword":{"patch":{"operationId":"userRouter-changePassword","tags":["users"],"security":[{"apikey":[]}],"parameters":[{"in":"path","name":"userId","schema":{"type":"string"},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"previousPassword":{"type":"string","minLength":1},"password":{"type":"string","minLength":8,"maxLength":255},"confirmPassword":{"type":"string"}},"required":["previousPassword","password","confirmPassword"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/changeHome":{"patch":{"operationId":"userRouter-changeHomeBoards","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"homeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"mobileHomeBoardId":{"anyOf":[{"type":"string"},{"type":"null"}]},"userId":{"type":"string"}},"required":["homeBoardId","mobileHomeBoardId","userId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/changeSearchEngine":{"patch":{"operationId":"userRouter-changeDefaultSearchEngine","tags":["users"],"security":[{"apikey":[]}],"deprecated":true,"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultSearchEngineId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"ddgBangsEnabled":{"type":"boolean"},"userId":{"type":"string"}},"required":["defaultSearchEngineId","ddgBangsEnabled","userId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/search-preferences":{"patch":{"operationId":"userRouter-changeSearchPreferences","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultSearchEngineId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"openInNewTab":{"type":"boolean"},"ddgBangsEnabled":{"type":"boolean"},"userId":{"type":"string"}},"required":["defaultSearchEngineId","openInNewTab","ddgBangsEnabled","userId"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/changeScheme":{"patch":{"operationId":"userRouter-changeColorScheme","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"colorScheme":{"type":"string","enum":["auto","light","dark"]}},"required":["colorScheme"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/ddg-bangs":{"patch":{"operationId":"userRouter-changeDdgBangs","tags":["users"],"security":[{"apikey":[]}],"deprecated":true,"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ddgBangs":{"type":"boolean"},"id":{"type":"string"}},"required":["ddgBangs","id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}},"/api/users/firstDayOfWeek":{"patch":{"operationId":"userRouter-changeFirstDayOfWeek","tags":["users"],"security":[{"apikey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstDayOfWeek":{"type":"number","minimum":0,"maximum":6},"id":{"type":"string"}},"required":["firstDayOfWeek","id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.NOT_FOUND"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}},"components":{"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Invalid input data"},"code":{"type":"string","description":"The error code","example":"BAD_REQUEST"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information","example":{"code":"BAD_REQUEST","message":"Invalid input data","issues":[]}},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Authorization not provided"},"code":{"type":"string","description":"The error code","example":"UNAUTHORIZED"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information","example":{"code":"UNAUTHORIZED","message":"Authorization not provided","issues":[]}},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Insufficient access"},"code":{"type":"string","description":"The error code","example":"FORBIDDEN"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information","example":{"code":"FORBIDDEN","message":"Insufficient access","issues":[]}},"error.NOT_FOUND":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Not found"},"code":{"type":"string","description":"The error code","example":"NOT_FOUND"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Not found error (404)","description":"The error information","example":{"code":"NOT_FOUND","message":"Not found","issues":[]}},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message","example":"Internal server error"},"code":{"type":"string","description":"The error code","example":"INTERNAL_SERVER_ERROR"},"issues":{"description":"An array of issues that were responsible for the error","example":[],"type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information","example":{"code":"INTERNAL_SERVER_ERROR","message":"Internal server error","issues":[]}}},"securitySchemes":{"apikey":{"type":"apiKey","name":"ApiKey","description":"API key which can be obtained in the Homarr administration dashboard","in":"header"}}}}
\ No newline at end of file
diff --git a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx
index fbe310781..7d06a8951 100644
--- a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx
+++ b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx
@@ -10,6 +10,7 @@ import {
createWSClient,
httpBatchStreamLink,
httpLink,
+ httpSubscriptionLink,
isNonJsonSerializable,
loggerLink,
splitLink,
@@ -101,9 +102,17 @@ export function TRPCReactProvider(props: PropsWithChildren) {
}),
splitLink({
condition: ({ type }) => type === "subscription",
- true: wsLink
({
- client: wsClient,
- transformer: superjson,
+ true: splitLink({
+ condition: ({ path }) => path === "widget.beszel.subscribeSystemStats",
+ true: httpSubscriptionLink({
+ url: getTrpcUrl(),
+ transformer: superjson,
+ eventSourceOptions: { withCredentials: true },
+ }),
+ false: wsLink({
+ client: wsClient,
+ transformer: superjson,
+ }),
}),
false: splitLink({
condition: ({ input }) => isNonJsonSerializable(input),
diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx
index ee45a8b35..16be5c478 100644
--- a/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx
+++ b/apps/nextjs/src/app/[locale]/boards/(content)/_creator.tsx
@@ -22,6 +22,7 @@ import { getI18n } from "@homarr/translation/server";
import { prefetchForKindAsync } from "@homarr/widgets/prefetch";
import { createMetaTitle } from "~/metadata";
+import { env } from "~/env";
import { createBoardLayout } from "../_layout-creator";
import type { Board, Item } from "../_types";
import { DynamicClientBoard } from "./_dynamic-client";
@@ -40,7 +41,7 @@ export const createBoardContentPage = >(
}: Props) => {
return {
layout: createBoardLayout({
- headerActions: ,
+ headerActions: ,
getInitialBoardAsync: getInitialBoard,
withTour: true,
}),
@@ -79,14 +80,16 @@ export const createBoardContentPage = >(
const userId = session?.user.id ?? "anonymous";
return (
-
-
-
-
-
-
-
-
+ <>
+
+
+
+
+
+
+
+
+ >
);
},
generateMetadataAsync: async ({ params }: { params: Promise }): Promise => {
@@ -123,9 +126,9 @@ async function QueryCacheHydration({ userId, boardId }: { userId: string; boardI
const serialized = await getQueryCacheAsync(userId, boardId);
if (!serialized) return null;
- const persisted = superjson.parse(serialized);
- if (persisted.buster !== queryCacheBuster) return null;
- if (!persisted?.clientState?.queries?.length) return null;
+ const persisted = superjson.parse(serialized);
+ if (!persisted || persisted.buster !== queryCacheBuster) return null;
+ if (!persisted.clientState?.queries?.length) return null;
return ;
} catch (error) {
diff --git a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx
index cc3868e50..30c91de40 100644
--- a/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx
+++ b/apps/nextjs/src/app/[locale]/boards/(content)/_header-actions.tsx
@@ -41,13 +41,12 @@ import { useDynamicSectionActions } from "~/components/board/sections/dynamic/dy
import { IntegrationSelectModal } from "~/components/integration/integration-select-modal";
import { HeaderButton } from "~/components/layout/header/button";
-export const BoardContentHeaderActions = () => {
+export const BoardContentHeaderActions = ({ demoReadOnly }: { demoReadOnly: boolean }) => {
const [isEditMode] = useEditMode();
const board = useRequiredBoard();
const { hasChangeAccess } = useBoardPermissions(board);
- const { data: demoMode, isLoading } = clientApi.info.isDemoMode.useQuery();
- if (!hasChangeAccess || isLoading) {
+ if (!hasChangeAccess) {
return ;
}
@@ -55,9 +54,9 @@ export const BoardContentHeaderActions = () => {
<>
{isEditMode && }
-
+
- {!demoMode && (
+ {!demoReadOnly && (
@@ -158,7 +157,7 @@ const AddMenu = () => {
);
};
-const EditModeMenu = ({ demoMode }: { demoMode: boolean }) => {
+const EditModeMenu = ({ demoReadOnly }: { demoReadOnly: boolean }) => {
const [isEditMode, { open, close }] = useEditMode();
const board = useRequiredBoard();
const utils = clientApi.useUtils();
@@ -188,11 +187,11 @@ const EditModeMenu = ({ demoMode }: { demoMode: boolean }) => {
const toggle = useCallback(() => {
if (isEditMode) {
- if (demoMode) return discardDemoChanges();
+ if (demoReadOnly) return discardDemoChanges();
return saveBoard(board);
}
open();
- }, [board, isEditMode, demoMode, saveBoard, open, discardDemoChanges]);
+ }, [board, isEditMode, demoReadOnly, saveBoard, open, discardDemoChanges]);
useHotkeys([[hotkeys.toggleBoardEdit, toggle]]);
usePreventLeaveWithDirty(isEditMode);
diff --git a/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx b/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx
index 8a3a14fb4..c947719c2 100644
--- a/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx
+++ b/apps/nextjs/src/app/[locale]/init/_steps/import/file-info-card.tsx
@@ -2,7 +2,7 @@ import { ActionIcon, Button, Group, Text } from "@mantine/core";
import type { FileWithPath } from "@mantine/dropzone";
import { IconPencil } from "@tabler/icons-react";
-import { humanFileSize } from "@homarr/common";
+import { formatBytes } from "@homarr/common";
import { useScopedI18n } from "@homarr/translation/client";
import { InitStepCard } from "../../_components/init-step-card";
@@ -22,7 +22,7 @@ export const FileInfoCard = ({ file, onRemove }: FileInfoCardProps) => {
{file.name}
- {humanFileSize(file.size)}
+ {formatBytes(file.size)}
-
+
diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts
index 18b32206e..1b2ed3c7b 100644
--- a/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts
+++ b/apps/nextjs/src/app/[locale]/manage/integrations/_components/secrets/integration-secret-icons.ts
@@ -26,6 +26,8 @@ export const integrationSecretIcons = {
url: IconLink,
opnsenseApiKey: IconKey,
opnsenseApiSecret: IconPassword,
+ patchmonApiKey: IconKey,
+ patchmonApiSecret: IconPassword,
githubAppId: IconCode,
githubInstallationId: IconPlug,
privateKey: IconKey,
diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx
index 51d4a2caf..0072e9ed3 100644
--- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx
+++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx
@@ -18,7 +18,7 @@ import { z } from "zod/v4";
import type { RouterOutputs } from "@homarr/api";
import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
-import { humanFileSize } from "@homarr/common";
+import { formatBytes } from "@homarr/common";
import type { inferSearchParamsFromSchema } from "@homarr/common/types";
import { createLocalImageUrl } from "@homarr/icons/local";
import { getI18n } from "@homarr/translation/server";
@@ -125,7 +125,7 @@ const Row = async ({ media }: RowProps) => {
/>
{media.name}
- {humanFileSize(media.size)}
+ {formatBytes(media.size)}
{media.creator ? (
diff --git a/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx b/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx
index 43bbc3ff3..a2c504027 100644
--- a/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx
+++ b/apps/nextjs/src/app/[locale]/manage/tools/docker/docker-table.tsx
@@ -19,7 +19,7 @@ import { MantineReactTable } from "mantine-react-table";
import type { RouterOutputs } from "@homarr/api";
import { clientApi } from "@homarr/api/client";
-import { humanFileSize, useTimeAgo } from "@homarr/common";
+import { formatBytes, useTimeAgo } from "@homarr/common";
import type { ContainerState } from "@homarr/docker";
import { containerStateColorMap, cpuUsageColor, memoryUsageColor, safeValue } from "@homarr/docker/shared";
import { useModalAction } from "@homarr/modals";
@@ -143,7 +143,7 @@ const createColumns = (t: TranslationFunction): MRT_ColumnDef[]
return (
- {humanFileSize(bytesUsage)}
+ {formatBytes(bytesUsage)}
);
},
diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx
index 3997bda60..6406259f5 100644
--- a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx
+++ b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx
@@ -17,6 +17,7 @@ import { showErrorNotification } from "@homarr/notifications";
import { useI18n, useScopedI18n } from "@homarr/translation/client";
import { UserAvatar } from "@homarr/ui";
import { createCustomErrorParams } from "@homarr/validation/form/i18n";
+import { optionalEmailSchema } from "@homarr/validation/email";
import { userPasswordSchema } from "@homarr/validation/user";
import { GroupSelectModal } from "~/components/access/group-select-modal";
@@ -60,7 +61,7 @@ export const UserCreateStepperComponent = ({ initialGroups }: UserCreateStepperC
const generalForm = useZodForm(
z.object({
username: z.string().min(1),
- email: z.string().email().or(z.string().length(0).optional()),
+ email: optionalEmailSchema,
}),
{
initialValues: {
diff --git a/apps/nextjs/src/components/access/inherit-access-table.tsx b/apps/nextjs/src/components/access/inherit-access-table.tsx
index 5b439ce8c..92905fce1 100644
--- a/apps/nextjs/src/components/access/inherit-access-table.tsx
+++ b/apps/nextjs/src/components/access/inherit-access-table.tsx
@@ -30,7 +30,19 @@ export const InheritAccessTable = ({
- {accessQueryData.inherited.map(({ group, permission }) => {
+ {Array.from(
+ accessQueryData.inherited
+ .reduce((map, entry) => {
+ const existing = map.get(entry.group.id);
+ if (!existing) {
+ map.set(entry.group.id, entry);
+ } else if (getPermissionsWithChildren([entry.permission]).includes(existing.permission)) {
+ map.set(entry.group.id, entry);
+ }
+ return map;
+ }, new Map())
+ .values(),
+ ).map(({ group, permission }) => {
const entityPermission =
permission in mapPermissions
? mapPermissions[permission]
diff --git a/apps/nextjs/src/components/board/items/widget-context-menu.tsx b/apps/nextjs/src/components/board/items/widget-context-menu.tsx
index 415151a52..ff225f642 100644
--- a/apps/nextjs/src/components/board/items/widget-context-menu.tsx
+++ b/apps/nextjs/src/components/board/items/widget-context-menu.tsx
@@ -2,10 +2,10 @@
import type { MutableRefObject, ReactNode } from "react";
import { useCallback, useEffect, useMemo, useState } from "react";
-import { Group, Menu, Switch, Text } from "@mantine/core";
+import { Group, Loader, Menu, Switch, Text } from "@mantine/core";
import { IconCopy, IconLayoutKanban, IconRefresh, IconSettings, IconTrash } from "@tabler/icons-react";
-import type { QueryClient } from "@tanstack/react-query";
-import { useQueryClient } from "@tanstack/react-query";
+import type { QueryClient, QueryKey } from "@tanstack/react-query";
+import { useIsFetching, useQueryClient } from "@tanstack/react-query";
import { clientApi } from "@homarr/api/client";
import { useSession } from "@homarr/auth/client";
@@ -49,9 +49,13 @@ export const WidgetContextMenu = ({ item, widgetStateRef, children }: WidgetCont
const { gridstack } = useSectionContext().refs;
const queryClient = useQueryClient();
- const widgetQueryKey = useMemo(() => [["widget", item.kind]], [item.kind]);
+ const widgetQueryKey = useMemo(
+ () => ("queryKey" in currentDefinition ? (currentDefinition.queryKey as QueryKey) : [["widget", item.kind]]),
+ [currentDefinition, item.kind],
+ );
+ const isWidgetFetching = useIsFetching({ queryKey: widgetQueryKey }) > 0;
const handleRefetch = useCallback(() => {
- void queryClient.invalidateQueries({ queryKey: widgetQueryKey });
+ void queryClient.refetchQueries({ queryKey: widgetQueryKey, type: "all" });
}, [queryClient, widgetQueryKey]);
const options = useMemo(
@@ -223,11 +227,15 @@ export const WidgetContextMenu = ({ item, widgetStateRef, children }: WidgetCont
<>
{(toggleOptions.length > 0 || visibleWidgetActions.length > 0 || isEditMode) && }
- } onClick={handleRefetch}>
+ : }
+ onClick={handleRefetch}
+ disabled={isWidgetFetching}
+ >
{tMenu("refresh")}
-
+
@@ -265,13 +273,24 @@ export const WidgetContextMenu = ({ item, widgetStateRef, children }: WidgetCont
);
};
-const WidgetCacheAge = ({ queryClient, queryKey }: { queryClient: QueryClient; queryKey: unknown[] }) => {
+const WidgetCacheAge = ({
+ queryClient,
+ queryKey,
+ isFetching,
+}: {
+ queryClient: QueryClient;
+ queryKey: QueryKey;
+ isFetching: boolean;
+}) => {
+ // 1s tick for "just now" → "1s ago" label transition; isFetching prop handles refetch reactivity
const [, setTick] = useState(0);
useEffect(() => {
const id = setInterval(() => setTick((n) => n + 1), 1000);
return () => clearInterval(id);
}, []);
+ if (isFetching) return ;
+
const timestamps = queryClient
.getQueryCache()
.findAll({ queryKey })
@@ -279,8 +298,8 @@ const WidgetCacheAge = ({ queryClient, queryKey }: { queryClient: QueryClient; q
.filter(Boolean);
if (timestamps.length === 0) return null;
- const oldest = Math.min(...timestamps);
- const seconds = Math.floor((Date.now() - oldest) / 1000);
+ const latest = Math.max(...timestamps);
+ const seconds = Math.floor((Date.now() - latest) / 1000);
if (seconds < 5) return "just now";
if (seconds < 60) return `${seconds}s ago`;
return `${Math.floor(seconds / 60)}m ago`;
diff --git a/apps/nextjs/src/components/onboarding/manage-tour.tsx b/apps/nextjs/src/components/onboarding/manage-tour.tsx
index 70ca61084..c242a1bb2 100644
--- a/apps/nextjs/src/components/onboarding/manage-tour.tsx
+++ b/apps/nextjs/src/components/onboarding/manage-tour.tsx
@@ -105,7 +105,7 @@ export const ManageTourProvider = ({ children, isAdmin }: ManageTourProviderProp
content: (
),
},
diff --git a/apps/nextjs/src/env.ts b/apps/nextjs/src/env.ts
index 96f03e7b7..d285a8393 100644
--- a/apps/nextjs/src/env.ts
+++ b/apps/nextjs/src/env.ts
@@ -4,6 +4,7 @@ export const env = createEnv({
server: {
UNSAFE_ENABLE_MOCK_INTEGRATION: createBooleanSchema(false),
DEMO_MODE: createBooleanSchema(false),
+ DEMO_READ_ONLY: createBooleanSchema(true),
},
experimental__runtimeEnv: process.env,
});
diff --git a/deployments/prebuilt-debian/package.json b/deployments/prebuilt-debian/package.json
index 5041b395b..14a072a77 100644
--- a/deployments/prebuilt-debian/package.json
+++ b/deployments/prebuilt-debian/package.json
@@ -6,7 +6,7 @@
},
"engines": {
"node": ">=24.18.0",
- "pnpm": ">=11.9.0"
+ "pnpm": ">=11.10.0"
},
- "packageManager": "pnpm@11.9.0"
+ "packageManager": "pnpm@11.10.0"
}
diff --git a/docs/README.md b/docs/README.md
index 99aa947bf..6f281b0f3 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -95,20 +95,27 @@
+
+
+
+ Bazarr
+
+
+
Beszel
-
-
+
+
Coolify
-
-
+
+
@@ -149,15 +156,15 @@
Gotify
-
-
+
+
Home Assistant
-
-
+
+
@@ -198,15 +205,15 @@
Navidrome
-
-
+
+
Nextcloud
-
-
+
+
@@ -247,6 +254,13 @@
Paperless-ngx
+
+
+
+
+
+ PatchMon
+
@@ -254,8 +268,8 @@
PeaNUT
-
-
+
+
@@ -289,8 +303,8 @@
qBittorrent
-
-
+
+
@@ -303,8 +317,8 @@
Readarr
-
-
+
+
@@ -338,6 +352,13 @@
Speedtest Tracker
+
+
+
+
+
+ Synology DiskStation
+
@@ -352,8 +373,8 @@
Technitium DNS
-
-
+
+
@@ -361,6 +382,13 @@
+
+
+
+ Traefik
+
+
+
@@ -373,8 +401,8 @@
TrueNAS
-
-
+
+
diff --git a/package.json b/package.json
index 49ac2cebb..ff99d04d6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "homarr",
- "version": "1.69.2",
+ "version": "1.70.0",
"private": true,
"scripts": {
"build": "cross-env CI=true turbo build",
@@ -49,7 +49,6 @@
"@semantic-release/release-notes-generator": "catalog:",
"@testcontainers/redis": "catalog:",
"@turbo/gen": "catalog:",
-
"@vitejs/plugin-react": "catalog:",
"@vitest/coverage-v8": "catalog:",
"@vitest/ui": "catalog:",
@@ -69,7 +68,7 @@
},
"engines": {
"node": ">=24.18.0",
- "pnpm": ">=11.9.0"
+ "pnpm": ">=11.10.0"
},
- "packageManager": "pnpm@11.9.0"
+ "packageManager": "pnpm@11.10.0"
}
diff --git a/packages/api/src/env.ts b/packages/api/src/env.ts
index ba26a264a..a978acf01 100644
--- a/packages/api/src/env.ts
+++ b/packages/api/src/env.ts
@@ -6,9 +6,11 @@ export const env = createEnv({
server: {
KUBERNETES_SERVICE_ACCOUNT_NAME: z.string().optional(),
DEMO_MODE: createBooleanSchema(false),
+ DEMO_READ_ONLY: createBooleanSchema(true),
},
runtimeEnv: {
KUBERNETES_SERVICE_ACCOUNT_NAME: process.env.KUBERNETES_SERVICE_ACCOUNT_NAME,
DEMO_MODE: process.env.DEMO_MODE,
+ DEMO_READ_ONLY: process.env.DEMO_READ_ONLY,
},
});
diff --git a/packages/api/src/mcp.ts b/packages/api/src/mcp.ts
index b39e4a97d..039943adb 100644
--- a/packages/api/src/mcp.ts
+++ b/packages/api/src/mcp.ts
@@ -9,6 +9,8 @@ import { iconsRouter } from "./router/icons";
import { infoRouter } from "./router/info";
import { integrationRouter } from "./router/integration/integration-router";
import { inviteRouter } from "./router/invite";
+import { bazarrRouter } from "./router/widgets/bazarr";
+import { serverSettingsRouter } from "./router/serverSettings";
import { beszelRouter } from "./router/widgets/beszel";
import { calendarRouter } from "./router/widgets/calendar";
import { dnsHoleRouter } from "./router/widgets/dns-hole";
@@ -16,6 +18,7 @@ import { downloadsRouter } from "./router/widgets/downloads";
import { healthMonitoringRouter } from "./router/widgets/health-monitoring";
import { mediaRequestsRouter } from "./router/widgets/media-requests";
import { mediaServerRouter } from "./router/widgets/media-server";
+import { patchmonRouter } from "./router/widgets/patchmon";
import { smartHomeRouter } from "./router/widgets/smart-home";
import { widgetSecretsRouter } from "./router/widgets/widget-secrets";
@@ -28,6 +31,8 @@ export const mcpRouter = createTRPCRouter({
info: infoRouter,
integration: integrationRouter,
invite: inviteRouter,
+ bazarr: bazarrRouter,
+ serverSettings: serverSettingsRouter,
beszel: beszelRouter,
calendar: calendarRouter,
dnsHole: dnsHoleRouter,
@@ -35,6 +40,7 @@ export const mcpRouter = createTRPCRouter({
healthMonitoring: healthMonitoringRouter,
mediaRequests: mediaRequestsRouter,
mediaServer: mediaServerRouter,
+ patchmon: patchmonRouter,
smartHome: smartHomeRouter,
widgetSecrets: widgetSecretsRouter,
});
diff --git a/packages/api/src/open-api.ts b/packages/api/src/open-api.ts
index 5c75cfbc2..05ba467fb 100644
--- a/packages/api/src/open-api.ts
+++ b/packages/api/src/open-api.ts
@@ -6,6 +6,7 @@ import { appRouter } from "./router/app";
import { boardRouter } from "./router/board";
import { infoRouter } from "./router/info";
import { inviteRouter } from "./router/invite";
+import { serverSettingsRouter } from "./router/serverSettings";
import { userRouter } from "./router/user";
import { createTRPCRouter } from "./trpc";
@@ -14,13 +15,14 @@ export const openApiRouter = createTRPCRouter({
boardRouter,
infoRouter,
inviteRouter,
+ serverSettingsRouter,
userRouter,
});
export const openApiDocument = (base: string) =>
generateOpenApiDocument(openApiRouter, {
title: "Homarr API documentation",
- version: "1.0.0",
+ version: "1.1.0",
baseUrl: base,
docsUrl: "https://homarr.dev",
securitySchemes: {
diff --git a/packages/api/src/query-cache.ts b/packages/api/src/query-cache.ts
index 9890483e2..a8cdb9641 100644
--- a/packages/api/src/query-cache.ts
+++ b/packages/api/src/query-cache.ts
@@ -16,7 +16,7 @@ export const setActiveQueryCacheBoardId = (boardId: string | null) => {
export const getActiveQueryCacheBoardId = () => activeQueryCacheBoardId;
const persistableQueryPaths = new Set(["app.byId", "app.byIds", "docker.getContainers", "integration.byIds"]);
-const excludedWidgetPaths = new Set(["widget.app.ping"]);
+const excludedWidgetPaths = new Set(["widget.app.ping", "widget.beszel.getSystemStats"]);
const getTrpcPathFromQueryKey = (queryKey: QueryKey) => {
const first = queryKey[0];
diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts
index fe8c0dcb9..9cb34d1bd 100644
--- a/packages/api/src/router/board.ts
+++ b/packages/api/src/router/board.ts
@@ -35,6 +35,7 @@ import {
everyoneGroup,
getPermissionsWithChildren,
getPermissionsWithParents,
+ widgetDefaultSizes,
widgetKinds,
} from "@homarr/definitions";
import { importOldmarrAsync } from "@homarr/old-import";
@@ -330,7 +331,16 @@ export const boardRouter = createTRPCRouter({
}),
duplicateBoard: permissionRequiredProcedure
.requiresPermission("board-create")
+ .meta({
+ openapi: { method: "POST", path: "/api/boards/{id}/duplicate", tags: ["boards"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Duplicate an existing board into a new board. Requires board-create permission and view permission on the source board. REQUIRED: id (source board ID), name (unique name for the new board). Returns { boardId }",
+ },
+ })
.input(boardDuplicateSchema)
+ .output(z.object({ boardId: z.string() }))
.mutation(async ({ ctx, input }) => {
await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "view");
await noBoardWithSimilarNameAsync(ctx.db, input.name);
@@ -544,33 +554,57 @@ export const boardRouter = createTRPCRouter({
});
},
});
+
+ return { boardId: newBoardId };
}),
- renameBoard: protectedProcedure.input(boardRenameSchema).mutation(async ({ ctx, input }) => {
- await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "full");
+ renameBoard: protectedProcedure
+ .meta({
+ openapi: { method: "PATCH", path: "/api/boards/{id}/name", tags: ["boards"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Rename a board by ID. Requires full permission on the board. REQUIRED: id (board ID), name (new unique board name)",
+ },
+ })
+ .input(boardRenameSchema)
+ .output(z.void())
+ .mutation(async ({ ctx, input }) => {
+ await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "full");
- await noBoardWithSimilarNameAsync(ctx.db, input.name, [input.id]);
+ await noBoardWithSimilarNameAsync(ctx.db, input.name, [input.id]);
- await ctx.db.update(boards).set({ name: input.name }).where(eq(boards.id, input.id));
- }),
- changeBoardVisibility: protectedProcedure.input(boardChangeVisibilitySchema).mutation(async ({ ctx, input }) => {
- await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "full");
- const boardSettings = await getServerSettingByKeyAsync(ctx.db, "board");
+ await ctx.db.update(boards).set({ name: input.name }).where(eq(boards.id, input.id));
+ }),
+ changeBoardVisibility: protectedProcedure
+ .meta({
+ openapi: { method: "PATCH", path: "/api/boards/{id}/visibility", tags: ["boards"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Change board visibility. Requires full permission on the board. REQUIRED: id (board ID), visibility ('public' or 'private'). Home boards cannot be made private",
+ },
+ })
+ .input(boardChangeVisibilitySchema)
+ .output(z.void())
+ .mutation(async ({ ctx, input }) => {
+ await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "full");
+ const boardSettings = await getServerSettingByKeyAsync(ctx.db, "board");
- if (
- input.visibility !== "public" &&
- (boardSettings.homeBoardId === input.id || boardSettings.mobileHomeBoardId === input.id)
- ) {
- throw new TRPCError({
- code: "BAD_REQUEST",
- message: "Cannot make home board private",
- });
- }
+ if (
+ input.visibility !== "public" &&
+ (boardSettings.homeBoardId === input.id || boardSettings.mobileHomeBoardId === input.id)
+ ) {
+ throw new TRPCError({
+ code: "BAD_REQUEST",
+ message: "Cannot make home board private",
+ });
+ }
- await ctx.db
- .update(boards)
- .set({ isPublic: input.visibility === "public" })
- .where(eq(boards.id, input.id));
- }),
+ await ctx.db
+ .update(boards)
+ .set({ isPublic: input.visibility === "public" })
+ .where(eq(boards.id, input.id));
+ }),
deleteBoard: protectedProcedure
.meta({
openapi: { method: "DELETE", path: "/api/boards/{id}", tags: ["boards"], protect: true },
@@ -587,16 +621,38 @@ export const boardRouter = createTRPCRouter({
await ctx.db.delete(boards).where(eq(boards.id, input.id));
}),
- setHomeBoard: protectedProcedure.input(z.object({ id: z.string() })).mutation(async ({ ctx, input }) => {
- await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "view");
+ setHomeBoard: protectedProcedure
+ .meta({
+ openapi: { method: "PATCH", path: "/api/boards/{id}/home", tags: ["boards"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Set the current user's desktop home board. Requires view permission on the board. REQUIRED: id (board ID)",
+ },
+ })
+ .input(z.object({ id: z.string() }))
+ .output(z.void())
+ .mutation(async ({ ctx, input }) => {
+ await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "view");
- await ctx.db.update(users).set({ homeBoardId: input.id }).where(eq(users.id, ctx.session.user.id));
- }),
- setMobileHomeBoard: protectedProcedure.input(z.object({ id: z.string() })).mutation(async ({ ctx, input }) => {
- await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "view");
+ await ctx.db.update(users).set({ homeBoardId: input.id }).where(eq(users.id, ctx.session.user.id));
+ }),
+ setMobileHomeBoard: protectedProcedure
+ .meta({
+ openapi: { method: "PATCH", path: "/api/boards/{id}/mobile-home", tags: ["boards"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Set the current user's mobile home board. Requires view permission on the board. REQUIRED: id (board ID)",
+ },
+ })
+ .input(z.object({ id: z.string() }))
+ .output(z.void())
+ .mutation(async ({ ctx, input }) => {
+ await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "view");
- await ctx.db.update(users).set({ mobileHomeBoardId: input.id }).where(eq(users.id, ctx.session.user.id));
- }),
+ await ctx.db.update(users).set({ mobileHomeBoardId: input.id }).where(eq(users.id, ctx.session.user.id));
+ }),
getHomeBoard: publicProcedure.query(async ({ ctx }) => {
const userId = ctx.session?.user.id;
const user = userId
@@ -752,7 +808,16 @@ export const boardRouter = createTRPCRouter({
}
}),
savePartialBoardSettings: protectedProcedure
- .input(boardSavePartialSettingsSchema.and(z.object({ id: z.string() })))
+ .meta({
+ openapi: { method: "PATCH", path: "/api/boards/{id}/settings", tags: ["boards"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Update visual and behavior settings for a board. Requires modify permission. REQUIRED: id (board ID). Optional fields include pageTitle, metaTitle, logoImageUrl, faviconImageUrl, backgroundImageUrl, colors, opacity, customCss, itemRadius, and disableStatus",
+ },
+ })
+ .input(boardSavePartialSettingsSchema.extend({ id: z.string() }))
+ .output(z.void())
.mutation(async ({ ctx, input }) => {
await throwIfActionForbiddenAsync(ctx, eq(boards.id, input.id), "modify");
@@ -1438,21 +1503,33 @@ export const boardRouter = createTRPCRouter({
}
}
+ const defaultSize = widgetDefaultSizes[input.kind as WidgetKind] ?? { width: 1, height: 1 };
+
+ const fitsAt = (x: number, y: number) => {
+ if (x + defaultSize.width > layout.columnCount) return false;
+ for (let dy = 0; dy < defaultSize.height; dy++) {
+ const row = occupied[y + dy];
+ if (!row) continue;
+ for (let dx = 0; dx < defaultSize.width; dx++) {
+ if (row[x + dx]) return false;
+ }
+ }
+ return true;
+ };
+
let placed = false;
for (let y = 0; y < 9999 && !placed; y++) {
if (!occupied[y]) occupied.push(Array.from({ length: layout.columnCount }).fill(false));
- const occupiedRow = occupied[y];
- if (!occupiedRow) continue;
for (let x = 0; x < layout.columnCount && !placed; x++) {
- if (!occupiedRow[x]) {
+ if (fitsAt(x, y)) {
layoutRows.push({
itemId,
sectionId: emptySection.id,
layoutId: layout.id,
xOffset: x,
yOffset: y,
- width: 1,
- height: 1,
+ width: defaultSize.width,
+ height: defaultSize.height,
});
placed = true;
}
diff --git a/packages/api/src/router/info.ts b/packages/api/src/router/info.ts
index a0436ede3..156f6387a 100644
--- a/packages/api/src/router/info.ts
+++ b/packages/api/src/router/info.ts
@@ -1,7 +1,7 @@
import z from "zod/v4";
import packageJson from "../../../../package.json";
-import { createTRPCRouter, isDemoMode, publicProcedure, protectedProcedure } from "../trpc";
+import { createTRPCRouter, isDemoMode, isDemoReadOnly, publicProcedure, protectedProcedure } from "../trpc";
export const infoRouter = createTRPCRouter({
getInfo: protectedProcedure
@@ -20,4 +20,5 @@ export const infoRouter = createTRPCRouter({
};
}),
isDemoMode: publicProcedure.query(() => isDemoMode),
+ isDemoReadOnly: publicProcedure.query(() => isDemoReadOnly),
});
diff --git a/packages/api/src/router/serverSettings.ts b/packages/api/src/router/serverSettings.ts
index 8ecc870f3..9783e0ae9 100644
--- a/packages/api/src/router/serverSettings.ts
+++ b/packages/api/src/router/serverSettings.ts
@@ -1,6 +1,14 @@
+import { TRPCError } from "@trpc/server";
import { z } from "zod/v4";
-import { getServerSettingByKeyAsync, getServerSettingsAsync, updateServerSettingByKeyAsync } from "@homarr/db/queries";
+import { and, eq, inArray } from "@homarr/db";
+import {
+ getServerSettingByKeyAsync,
+ getServerSettingsAsync,
+ insertServerSettingByKeyAsync,
+ updateServerSettingByKeyAsync,
+} from "@homarr/db/queries";
+import { boards, serverSettings } from "@homarr/db/schema";
import type { ServerSettings } from "@homarr/server-settings";
import { defaultServerSettingsKeys } from "@homarr/server-settings";
import { settingsInitSchema } from "@homarr/validation/settings";
@@ -8,6 +16,15 @@ import { settingsInitSchema } from "@homarr/validation/settings";
import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, publicProcedure } from "../trpc";
import { nextOnboardingStepAsync } from "./onboard/onboard-queries";
+const boardServerSettingsSchema = z.object({
+ homeBoardId: z.string().nullable(),
+ mobileHomeBoardId: z.string().nullable(),
+ enableStatusByDefault: z.boolean(),
+ forceDisableStatus: z.boolean(),
+}) satisfies z.ZodType;
+
+const boardServerSettingsUpdateSchema = boardServerSettingsSchema.partial();
+
export const serverSettingsRouter = createTRPCRouter({
getCulture: publicProcedure.query(async ({ ctx }) => {
return await getServerSettingByKeyAsync(ctx.db, "culture");
@@ -15,6 +32,67 @@ export const serverSettingsRouter = createTRPCRouter({
getAll: permissionRequiredProcedure.requiresPermission("admin").query(async ({ ctx }) => {
return await getServerSettingsAsync(ctx.db);
}),
+ getBoardSettings: permissionRequiredProcedure
+ .requiresPermission("admin")
+ .meta({
+ openapi: { method: "GET", path: "/api/settings/board", tags: ["settings"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Get global board defaults, including desktop/mobile home board IDs and status behavior. Requires admin permission",
+ },
+ })
+ .input(z.void())
+ .output(boardServerSettingsSchema)
+ .query(async ({ ctx }) => {
+ return await getServerSettingByKeyAsync(ctx.db, "board");
+ }),
+ updateBoardSettings: permissionRequiredProcedure
+ .requiresPermission("admin")
+ .meta({
+ openapi: { method: "PATCH", path: "/api/settings/board", tags: ["settings"], protect: true },
+ mcp: {
+ enabled: true,
+ description:
+ "Update global board defaults. Requires admin permission. Optional fields: homeBoardId, mobileHomeBoardId, enableStatusByDefault, forceDisableStatus. Home board IDs must reference public boards or be null",
+ },
+ })
+ .input(boardServerSettingsUpdateSchema)
+ .output(boardServerSettingsSchema)
+ .mutation(async ({ ctx, input }) => {
+ const inputBoardIds = [input.homeBoardId, input.mobileHomeBoardId].filter(
+ (id) => id !== undefined && id !== null,
+ );
+
+ if (inputBoardIds.length > 0) {
+ const publicBoards = await ctx.db.query.boards.findMany({
+ columns: { id: true },
+ where: and(inArray(boards.id, inputBoardIds), eq(boards.isPublic, true)),
+ });
+ const publicBoardIds = new Set(publicBoards.map((board) => board.id));
+ const invalidBoardIds = inputBoardIds.filter((id) => !publicBoardIds.has(id));
+ if (invalidBoardIds.length > 0) {
+ throw new TRPCError({
+ code: "BAD_REQUEST",
+ message: `Board settings home board IDs must reference public boards: ${invalidBoardIds.join(", ")}`,
+ });
+ }
+ }
+
+ const current = await getServerSettingByKeyAsync(ctx.db, "board");
+ const next = { ...current, ...input };
+ const existing = await ctx.db.query.serverSettings.findFirst({
+ where: eq(serverSettings.settingKey, "board"),
+ });
+
+ if (existing) {
+ await updateServerSettingByKeyAsync(ctx.db, "board", next);
+ } else {
+ await insertServerSettingByKeyAsync(ctx.db, "board", next);
+ }
+
+ return next;
+ }),
saveSettings: permissionRequiredProcedure
.requiresPermission("admin")
.input(
diff --git a/packages/api/src/router/test/serverSettings.spec.ts b/packages/api/src/router/test/serverSettings.spec.ts
index 443d82b6f..c045b1288 100644
--- a/packages/api/src/router/test/serverSettings.spec.ts
+++ b/packages/api/src/router/test/serverSettings.spec.ts
@@ -1,9 +1,9 @@
-import SuperJSON from "superjson";
+import { stringify } from "superjson";
import { describe, expect, test, vi } from "vitest";
import type { Session } from "@homarr/auth";
import { createId } from "@homarr/common";
-import { serverSettings } from "@homarr/db/schema";
+import { boards, serverSettings } from "@homarr/db/schema";
import { createDb } from "@homarr/db/test";
import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server-settings";
@@ -33,7 +33,7 @@ describe("getAll server settings", () => {
await db.insert(serverSettings).values([
{
settingKey: defaultServerSettingsKeys[0],
- value: SuperJSON.stringify(defaultServerSettings.analytics),
+ value: stringify(defaultServerSettings.analytics),
},
]);
@@ -67,7 +67,7 @@ describe("saveSettings", () => {
await db.insert(serverSettings).values([
{
settingKey: defaultServerSettingsKeys[0],
- value: SuperJSON.stringify(defaultServerSettings.analytics),
+ value: stringify(defaultServerSettings.analytics),
},
]);
@@ -82,7 +82,7 @@ describe("saveSettings", () => {
expect(dbSettings).toStrictEqual([
{
settingKey: "analytics",
- value: SuperJSON.stringify({
+ value: stringify({
enableGeneral: true,
instanceId: null,
}),
@@ -90,3 +90,91 @@ describe("saveSettings", () => {
]);
});
});
+
+describe("board settings API", () => {
+ test("getBoardSettings should return board defaults", async () => {
+ const db = createDb();
+ const caller = serverSettingsRouter.createCaller({
+ db,
+ deviceType: undefined,
+ session: defaultSession,
+ });
+
+ await expect(caller.getBoardSettings()).resolves.toStrictEqual(defaultServerSettings.board);
+ });
+
+ test("updateBoardSettings should insert settings when defaults are not persisted", async () => {
+ const db = createDb();
+ const caller = serverSettingsRouter.createCaller({
+ db,
+ deviceType: undefined,
+ session: defaultSession,
+ });
+ const boardId = createId();
+ await db.insert(boards).values({ id: boardId, name: "default", isPublic: true });
+
+ const result = await caller.updateBoardSettings({
+ homeBoardId: boardId,
+ forceDisableStatus: true,
+ });
+
+ expect(result).toStrictEqual({
+ ...defaultServerSettings.board,
+ homeBoardId: boardId,
+ forceDisableStatus: true,
+ });
+ const dbSettings = await db.select().from(serverSettings);
+ expect(dbSettings).toStrictEqual([
+ {
+ settingKey: "board",
+ value: stringify(result),
+ },
+ ]);
+ });
+
+ test("updateBoardSettings should update existing settings", async () => {
+ const db = createDb();
+ const caller = serverSettingsRouter.createCaller({
+ db,
+ deviceType: undefined,
+ session: defaultSession,
+ });
+ const boardId = createId();
+ await db.insert(boards).values({ id: boardId, name: "default", isPublic: true });
+
+ await caller.updateBoardSettings({ homeBoardId: boardId });
+ const result = await caller.updateBoardSettings({
+ mobileHomeBoardId: boardId,
+ enableStatusByDefault: false,
+ });
+
+ expect(result).toStrictEqual({
+ ...defaultServerSettings.board,
+ homeBoardId: boardId,
+ mobileHomeBoardId: boardId,
+ enableStatusByDefault: false,
+ });
+ const dbSettings = await db.select().from(serverSettings);
+ expect(dbSettings).toStrictEqual([
+ {
+ settingKey: "board",
+ value: stringify(result),
+ },
+ ]);
+ });
+
+ test("updateBoardSettings should reject private home boards", async () => {
+ const db = createDb();
+ const caller = serverSettingsRouter.createCaller({
+ db,
+ deviceType: undefined,
+ session: defaultSession,
+ });
+ const boardId = createId();
+ await db.insert(boards).values({ id: boardId, name: "private", isPublic: false });
+
+ const actAsync = async () => await caller.updateBoardSettings({ homeBoardId: boardId });
+
+ await expect(actAsync()).rejects.toThrow("must reference public boards");
+ });
+});
diff --git a/packages/api/src/router/test/widgets/patchmon.spec.ts b/packages/api/src/router/test/widgets/patchmon.spec.ts
new file mode 100644
index 000000000..df37b5647
--- /dev/null
+++ b/packages/api/src/router/test/widgets/patchmon.spec.ts
@@ -0,0 +1,200 @@
+import { TRPCError } from "@trpc/server";
+import { describe, expect, test, vi } from "vitest";
+
+import type { Session } from "@homarr/auth";
+import { createId } from "@homarr/common";
+import type { Database } from "@homarr/db";
+import { boards, integrationItems, integrations, integrationUserPermissions, items, users } from "@homarr/db/schema";
+import { createDb } from "@homarr/db/test";
+import type { PatchMonStats } from "@homarr/integrations";
+
+import { patchmonRouter } from "../../widgets/patchmon";
+
+const samplePatchMonStats = {
+ totalHosts: 42,
+ hostsNeedingUpdates: 15,
+ securityUpdates: 23,
+ upToDateHosts: 27,
+ hostsWithSecurityUpdates: 8,
+ recentUpdates24h: 34,
+ totalOutdatedPackages: 156,
+ totalRepos: 12,
+ lastUpdated: "2025-10-11T12:34:56.789Z",
+ osDistribution: [],
+} satisfies PatchMonStats;
+
+vi.mock("@homarr/request-handler/patchmon", () => ({
+ patchmonStatsRequestHandler: {
+ handler: () => ({
+ getDataAsync: async () => ({
+ data: samplePatchMonStats,
+ timestamp: new Date(),
+ }),
+ }),
+ },
+}));
+
+const createSession = (userId: string): Session => ({
+ user: {
+ id: userId,
+ permissions: [],
+ colorScheme: "light",
+ },
+ expires: new Date().toISOString(),
+});
+
+const createCaller = (db: Database, session: Session | null) =>
+ patchmonRouter.createCaller({
+ db,
+ deviceType: undefined,
+ session,
+ });
+
+const createPatchMonIntegrationOnBoardAsync = async (
+ db: Database,
+ options: {
+ isPublic: boolean;
+ boardCreatorId: string;
+ },
+) => {
+ const integrationId = createId();
+ const boardId = createId();
+ const itemId = createId();
+
+ await db.insert(integrations).values({
+ id: integrationId,
+ kind: "patchmon",
+ name: "PatchMon",
+ url: "https://patchmon.example.com",
+ });
+
+ await db.insert(boards).values({
+ id: boardId,
+ name: "patchmon-board",
+ creatorId: options.boardCreatorId,
+ isPublic: options.isPublic,
+ });
+
+ await db.insert(items).values({
+ id: itemId,
+ kind: "patchmon",
+ boardId,
+ options: "{}",
+ });
+
+ await db.insert(integrationItems).values({
+ integrationId,
+ itemId,
+ });
+
+ return { integrationId, boardId, itemId };
+};
+
+describe("patchmonRouter.getStats access control", () => {
+ test("should throw UNAUTHORIZED for unauthenticated users even when integration is on a public board", async () => {
+ const db = createDb();
+ const otherUserId = createId();
+ await db.insert(users).values({ id: otherUserId });
+ const { integrationId } = await createPatchMonIntegrationOnBoardAsync(db, {
+ isPublic: true,
+ boardCreatorId: otherUserId,
+ });
+ const caller = createCaller(db, null);
+
+ await expect(caller.getStats({ integrationId })).rejects.toThrow(
+ new TRPCError({ code: "UNAUTHORIZED" }),
+ );
+ });
+
+ test("should throw FORBIDDEN for authenticated users without board or integration access", async () => {
+ const db = createDb();
+ const boardOwnerId = createId();
+ const sessionUserId = createId();
+ await db.insert(users).values([{ id: boardOwnerId }, { id: sessionUserId }]);
+ const { integrationId } = await createPatchMonIntegrationOnBoardAsync(db, {
+ isPublic: false,
+ boardCreatorId: boardOwnerId,
+ });
+ const caller = createCaller(db, createSession(sessionUserId));
+
+ await expect(caller.getStats({ integrationId })).rejects.toThrow(
+ new TRPCError({
+ code: "FORBIDDEN",
+ message: "User does not have permission to query at least one of the specified integration",
+ }),
+ );
+ });
+
+ test("should return stats for authenticated users when integration is on a public board", async () => {
+ const db = createDb();
+ const boardOwnerId = createId();
+ const sessionUserId = createId();
+ await db.insert(users).values([{ id: boardOwnerId }, { id: sessionUserId }]);
+ const { integrationId } = await createPatchMonIntegrationOnBoardAsync(db, {
+ isPublic: true,
+ boardCreatorId: boardOwnerId,
+ });
+ const caller = createCaller(db, createSession(sessionUserId));
+
+ const result = await caller.getStats({ integrationId });
+
+ expect(result).toStrictEqual(samplePatchMonStats);
+ });
+
+ test("should return stats for authenticated users with integration use permission and no board placement", async () => {
+ const db = createDb();
+ const sessionUserId = createId();
+ const integrationId = createId();
+ await db.insert(users).values({ id: sessionUserId });
+ await db.insert(integrations).values({
+ id: integrationId,
+ kind: "patchmon",
+ name: "PatchMon",
+ url: "https://patchmon.example.com",
+ });
+ await db.insert(integrationUserPermissions).values({
+ integrationId,
+ userId: sessionUserId,
+ permission: "use",
+ });
+ const caller = createCaller(db, createSession(sessionUserId));
+
+ const result = await caller.getStats({ integrationId });
+
+ expect(result).toStrictEqual(samplePatchMonStats);
+ });
+
+ test("should throw NOT_FOUND when integration id does not exist", async () => {
+ const db = createDb();
+ const sessionUserId = createId();
+ await db.insert(users).values({ id: sessionUserId });
+ const caller = createCaller(db, createSession(sessionUserId));
+
+ await expect(caller.getStats({ integrationId: createId() })).rejects.toMatchObject({
+ code: "NOT_FOUND",
+ });
+ });
+
+ test("should throw NOT_FOUND when integration is not a PatchMon integration", async () => {
+ const db = createDb();
+ const sessionUserId = createId();
+ const integrationId = createId();
+ await db.insert(users).values({ id: sessionUserId });
+ await db.insert(integrations).values({
+ id: integrationId,
+ kind: "sonarr",
+ name: "Sonarr",
+ url: "https://sonarr.example.com",
+ });
+ await db.insert(integrationUserPermissions).values({
+ integrationId,
+ userId: sessionUserId,
+ permission: "use",
+ });
+ const caller = createCaller(db, createSession(sessionUserId));
+
+ await expect(caller.getStats({ integrationId })).rejects.toMatchObject({
+ code: "NOT_FOUND",
+ });
+ });
+});
diff --git a/packages/api/src/router/widgets/bazarr.ts b/packages/api/src/router/widgets/bazarr.ts
new file mode 100644
index 000000000..c47ad4173
--- /dev/null
+++ b/packages/api/src/router/widgets/bazarr.ts
@@ -0,0 +1,21 @@
+import { bazarrBadgesRequestHandler } from "@homarr/request-handler/bazarr";
+
+import { createOneIntegrationMiddleware } from "../../middlewares/integration";
+import { createTRPCRouter, publicProcedure } from "../../trpc";
+
+export const bazarrRouter = createTRPCRouter({
+ getBadges: publicProcedure
+ .meta({
+ mcp: {
+ enabled: true,
+ description:
+ "Get missing subtitle counts, provider issues, and health warnings for a Bazarr integration. REQUIRED: integrationId from integration_all",
+ },
+ })
+ .concat(createOneIntegrationMiddleware("query", "bazarr"))
+ .query(async ({ ctx }) => {
+ const innerHandler = bazarrBadgesRequestHandler.handler(ctx.integration, {});
+ const data = await innerHandler.getDataAsync();
+ return data.data;
+ }),
+});
diff --git a/packages/api/src/router/widgets/beszel.ts b/packages/api/src/router/widgets/beszel.ts
index 797de8609..81fae10a0 100644
--- a/packages/api/src/router/widgets/beszel.ts
+++ b/packages/api/src/router/widgets/beszel.ts
@@ -1,18 +1,24 @@
import { TRPCError } from "@trpc/server";
+import { observable } from "@trpc/server/observable";
import { z } from "zod/v4";
import { createLogger } from "@homarr/core/infrastructure/logs";
+import { createIntegrationAsync } from "@homarr/integrations";
+import type { LiveStatsEvent } from "@homarr/integrations/types";
import {
beszelAlertsRequestHandler,
beszelStatsRequestHandler,
beszelSystemsRequestHandler,
} from "@homarr/request-handler/beszel";
+import { settleIntegrationQueries } from "../../settle-integrations";
import { createManyIntegrationMiddleware } from "../../middlewares/integration";
import { createTRPCRouter, publicProcedure } from "../../trpc";
const logger = createLogger({ module: "beszelRouter" });
+const errorMessage = (error: unknown) => (error instanceof Error ? error.message : String(error));
+
export const beszelRouter = createTRPCRouter({
getSystems: publicProcedure
.meta({
@@ -26,8 +32,9 @@ export const beszelRouter = createTRPCRouter({
.query(async ({ ctx }) => {
const integrationIds = ctx.integrations.map((i) => i.id);
logger.debug("getSystems called", { userId: ctx.session?.user?.id, integrationIds });
- const settled = await Promise.allSettled(
- ctx.integrations.map(async (integration) => {
+ const results = await settleIntegrationQueries(
+ ctx.integrations,
+ async (integration) => {
const innerHandler = beszelSystemsRequestHandler.handler(integration, {});
const { data, timestamp } = await innerHandler.getDataAsync();
return {
@@ -37,25 +44,18 @@ export const beszelRouter = createTRPCRouter({
systems: data,
updatedAt: timestamp,
};
- }),
+ },
+ {
+ fallback: (integration, error) => ({
+ integrationId: integration.id,
+ integrationName: integration.name,
+ integrationUrl: integration.url,
+ systems: [],
+ updatedAt: new Date(0),
+ error: errorMessage(error),
+ }),
+ },
);
- const results = settled.map((result, index) => {
- if (result.status === "fulfilled") return result.value;
- const integration = ctx.integrations[index];
- logger.warn("getSystems integration failed", {
- userId: ctx.session?.user?.id,
- integrationId: integration?.id,
- error: result.reason,
- });
- return {
- integrationId: integration?.id ?? "unknown",
- integrationName: integration?.name ?? "unknown",
- integrationUrl: integration?.url ?? "",
- systems: [],
- updatedAt: new Date(0),
- error: result.reason instanceof Error ? result.reason.message : String(result.reason),
- };
- });
logger.debug("getSystems completed", {
userId: ctx.session?.user?.id,
integrationIds,
@@ -88,8 +88,9 @@ export const beszelRouter = createTRPCRouter({
includeHistory: input.includeHistory,
maxHistoryItems: input.maxHistoryItems,
});
- const settled = await Promise.allSettled(
- ctx.integrations.map(async (integration) => {
+ const results = await settleIntegrationQueries(
+ ctx.integrations,
+ async (integration) => {
const alertsHandler = beszelAlertsRequestHandler.handler(integration, {
includeHistory: input.includeHistory,
maxHistoryItems: input.maxHistoryItems,
@@ -115,26 +116,19 @@ export const beszelRouter = createTRPCRouter({
systemNameMap,
updatedAt: alertsResult.timestamp,
};
- }),
+ },
+ {
+ fallback: (integration, error) => ({
+ integrationId: integration.id,
+ integrationName: integration.name,
+ alerts: [],
+ history: [],
+ systemNameMap: {},
+ updatedAt: new Date(0),
+ error: errorMessage(error),
+ }),
+ },
);
- const results = settled.map((result, index) => {
- if (result.status === "fulfilled") return result.value;
- const integration = ctx.integrations[index];
- logger.warn("getAlerts integration failed", {
- userId: ctx.session?.user?.id,
- integrationId: integration?.id,
- error: result.reason,
- });
- return {
- integrationId: integration?.id ?? "unknown",
- integrationName: integration?.name ?? "unknown",
- alerts: [],
- history: [],
- systemNameMap: {},
- updatedAt: new Date(0),
- error: result.reason instanceof Error ? result.reason.message : String(result.reason),
- };
- });
logger.debug("getAlerts completed", {
userId: ctx.session?.user?.id,
integrationIds,
@@ -197,8 +191,110 @@ export const beszelRouter = createTRPCRouter({
systemStats: [],
containerStats: [],
updatedAt: new Date(0),
- error: error instanceof Error ? error.message : String(error),
+ error: errorMessage(error),
};
}
}),
+
+ subscribeSystemStats: publicProcedure
+ .concat(createManyIntegrationMiddleware("query", "beszel", "mock"))
+ .input(
+ z.object({
+ systemId: z.string(),
+ }),
+ )
+ .subscription(({ ctx, input }) => {
+ return observable((emit) => {
+ const controller = new AbortController();
+ let isActive = true;
+ let emittedEventCount = 0;
+
+ logger.debug("Beszel realtime subscription started", {
+ userId: ctx.session?.user?.id,
+ integrationIds: ctx.integrations.map((integration) => integration.id),
+ systemId: input.systemId,
+ });
+
+ void (async () => {
+ const integration = ctx.integrations[0];
+ if (!integration) {
+ emit.error(
+ new TRPCError({ code: "BAD_REQUEST", message: "At least one Beszel integrationId is required" }),
+ );
+ return;
+ }
+
+ try {
+ const instance = await createIntegrationAsync(integration);
+ if (typeof instance.subscribeRealtimeMetrics === "function") {
+ await instance.subscribeRealtimeMetrics(
+ input.systemId,
+ (event) => {
+ if (!isActive) return;
+ emittedEventCount += 1;
+ if (emittedEventCount <= 2 || emittedEventCount % 60 === 0) {
+ logger.debug("Forwarding Beszel realtime events", {
+ userId: ctx.session?.user?.id,
+ integrationId: integration.id,
+ systemId: input.systemId,
+ eventType: event.type,
+ emittedEventCount,
+ statsCount: Array.isArray(event.record.stats) ? event.record.stats.length : undefined,
+ });
+ }
+ emit.next(event);
+ },
+ controller.signal,
+ );
+ } else {
+ emit.error(
+ new TRPCError({
+ code: "METHOD_NOT_SUPPORTED",
+ message: `Integration ${integration.kind} does not support realtime metrics`,
+ }),
+ );
+ }
+ } catch (error) {
+ if (isActive) {
+ logger.warn("Beszel realtime subscription failed", {
+ userId: ctx.session?.user?.id,
+ integrationId: integration.id,
+ systemId: input.systemId,
+ emittedEventCount,
+ error: errorMessage(error),
+ });
+ emit.error(
+ error instanceof TRPCError
+ ? error
+ : new TRPCError({
+ code: "INTERNAL_SERVER_ERROR",
+ message: error instanceof Error ? error.message : String(error),
+ }),
+ );
+ }
+ }
+
+ if (isActive) {
+ logger.debug("Beszel realtime subscription completed", {
+ userId: ctx.session?.user?.id,
+ integrationId: integration.id,
+ systemId: input.systemId,
+ emittedEventCount,
+ });
+ emit.complete();
+ }
+ })();
+
+ return () => {
+ isActive = false;
+ logger.debug("Beszel realtime subscription cancelled", {
+ userId: ctx.session?.user?.id,
+ integrationIds: ctx.integrations.map((integration) => integration.id),
+ systemId: input.systemId,
+ emittedEventCount,
+ });
+ controller.abort();
+ };
+ });
+ }),
});
diff --git a/packages/api/src/router/widgets/downloads.ts b/packages/api/src/router/widgets/downloads.ts
index 50aee350e..bdce2473f 100644
--- a/packages/api/src/router/widgets/downloads.ts
+++ b/packages/api/src/router/widgets/downloads.ts
@@ -49,6 +49,7 @@ export const downloadsRouter = createTRPCRouter({
await integrationInstance.pauseQueueAsync();
}),
);
+ downloadClientRequestHandler.invalidateCache();
}),
pauseItem: protectedProcedure
.concat(createDownloadClientIntegrationMiddleware("interact"))
@@ -60,6 +61,7 @@ export const downloadsRouter = createTRPCRouter({
await integrationInstance.pauseItemAsync(input.item);
}),
);
+ downloadClientRequestHandler.invalidateCache();
}),
resume: protectedProcedure
.meta({
@@ -77,6 +79,7 @@ export const downloadsRouter = createTRPCRouter({
await integrationInstance.resumeQueueAsync();
}),
);
+ downloadClientRequestHandler.invalidateCache();
}),
resumeItem: protectedProcedure
.concat(createDownloadClientIntegrationMiddleware("interact"))
@@ -88,6 +91,7 @@ export const downloadsRouter = createTRPCRouter({
await integrationInstance.resumeItemAsync(input.item);
}),
);
+ downloadClientRequestHandler.invalidateCache();
}),
deleteItem: protectedProcedure
.concat(createDownloadClientIntegrationMiddleware("interact"))
@@ -99,5 +103,6 @@ export const downloadsRouter = createTRPCRouter({
await integrationInstance.deleteItemAsync(input.item, input.fromDisk);
}),
);
+ downloadClientRequestHandler.invalidateCache();
}),
});
diff --git a/packages/api/src/router/widgets/health-monitoring.ts b/packages/api/src/router/widgets/health-monitoring.ts
index de49a1083..1957f459c 100644
--- a/packages/api/src/router/widgets/health-monitoring.ts
+++ b/packages/api/src/router/widgets/health-monitoring.ts
@@ -1,21 +1,31 @@
+import { createIntegrationAsync } from "@homarr/integrations";
+import { SynologyIntegration } from "@homarr/integrations";
import { clusterInfoRequestHandler, systemInfoRequestHandler } from "@homarr/request-handler/health-monitoring";
import { createManyIntegrationMiddleware, createOneIntegrationMiddleware } from "../../middlewares/integration";
import { settleIntegrationQueries } from "../../settle-integrations";
import { createTRPCRouter, publicProcedure } from "../../trpc";
+const healthMonitoringIntegrationKinds = [
+ "openmediavault",
+ "dashDot",
+ "truenas",
+ "unraid",
+ "glances",
+ "synology",
+ "mock",
+] as const;
+
export const healthMonitoringRouter = createTRPCRouter({
getSystemHealthStatus: publicProcedure
.meta({
mcp: {
enabled: true,
description:
- "Get system health status (CPU, memory, disk, network) from NAS/server monitoring integrations. REQUIRED: integrationIds (array of TrueNAS/Unraid/Glances/OpenMediaVault/DashDot integration IDs from integration_all)",
+ "Get system health status (CPU, memory, disk, network) from NAS/server monitoring integrations. REQUIRED: integrationIds (array of TrueNAS/Synology/Unraid/Glances/OpenMediaVault/DashDot integration IDs from integration_all)",
},
})
- .concat(
- createManyIntegrationMiddleware("query", "openmediavault", "dashDot", "truenas", "unraid", "glances", "mock"),
- )
+ .concat(createManyIntegrationMiddleware("query", ...healthMonitoringIntegrationKinds))
.query(async ({ ctx }) => {
return await settleIntegrationQueries(ctx.integrations, async (integration) => {
const { data, timestamp } = await systemInfoRequestHandler.handler(integration, {}).getDataAsync();
@@ -27,6 +37,23 @@ export const healthMonitoringRouter = createTRPCRouter({
};
});
}),
+ listStorageVolumes: publicProcedure
+ .meta({
+ mcp: {
+ enabled: true,
+ description:
+ "List storage volumes from a Synology DiskStation integration for widget configuration. REQUIRED: integrationId from integration_all (Synology integration only)",
+ },
+ })
+ .concat(createOneIntegrationMiddleware("query", "synology"))
+ .query(async ({ ctx }) => {
+ const integrationInstance = await createIntegrationAsync(ctx.integration);
+ if (!(integrationInstance instanceof SynologyIntegration)) {
+ throw new Error("Expected Synology integration");
+ }
+
+ return await integrationInstance.listStorageVolumesAsync();
+ }),
getClusterHealthStatus: publicProcedure
.meta({
mcp: {
diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts
index 046f422fe..5db62a93c 100644
--- a/packages/api/src/router/widgets/index.ts
+++ b/packages/api/src/router/widgets/index.ts
@@ -9,6 +9,8 @@ export const widgetRouter = createTRPCRouter({
coolify: lazy(() => import("./coolify").then((mod) => mod.coolifyRouter)),
immich: lazy(() => import("./immich").then((mod) => mod.immichRouter)),
paperlessNgx: lazy(() => import("./paperless-ngx").then((mod) => mod.paperlessNgxRouter)),
+ patchmon: lazy(() => import("./patchmon").then((mod) => mod.patchmonRouter)),
+ bazarr: lazy(() => import("./bazarr").then((mod) => mod.bazarrRouter)),
notebook: lazy(() => import("./notebook").then((mod) => mod.notebookRouter)),
weather: lazy(() => import("./weather").then((mod) => mod.weatherRouter)),
app: lazy(() => import("./app").then((mod) => mod.appRouter)),
@@ -20,6 +22,7 @@ export const widgetRouter = createTRPCRouter({
calendar: lazy(() => import("./calendar").then((mod) => mod.calendarRouter)),
downloads: lazy(() => import("./downloads").then((mod) => mod.downloadsRouter)),
mediaRequests: lazy(() => import("./media-requests").then((mod) => mod.mediaRequestsRouter)),
+ mediaOrganizer: lazy(() => import("./media-organizer").then((mod) => mod.mediaOrganizerRouter)),
rssFeed: lazy(() => import("./rssFeed").then((mod) => mod.rssFeedRouter)),
indexerManager: lazy(() => import("./indexer-manager").then((mod) => mod.indexerManagerRouter)),
healthMonitoring: lazy(() => import("./health-monitoring").then((mod) => mod.healthMonitoringRouter)),
@@ -38,6 +41,7 @@ export const widgetRouter = createTRPCRouter({
umami: lazy(() => import("./umami").then((mod) => mod.umamiRouter)),
vpn: lazy(() => import("./vpn").then((mod) => mod.vpnRouter)),
ups: lazy(() => import("./ups").then((mod) => mod.upsRouter)),
+ traefik: lazy(() => import("./traefik").then((mod) => mod.traefikRouter)),
customApi: lazy(() => import("./custom-api").then((mod) => mod.customApiRouter)),
secrets: lazy(() => import("./widget-secrets").then((mod) => mod.widgetSecretsRouter)),
});
diff --git a/packages/api/src/router/widgets/media-organizer.ts b/packages/api/src/router/widgets/media-organizer.ts
new file mode 100644
index 000000000..dd0d687cb
--- /dev/null
+++ b/packages/api/src/router/widgets/media-organizer.ts
@@ -0,0 +1,33 @@
+import { z } from "zod/v4";
+
+import { getIntegrationKindsByCategory } from "@homarr/definitions";
+import { mediaOrganizerRequestHandler } from "@homarr/request-handler/media-organizer";
+
+import { createManyIntegrationMiddleware } from "../../middlewares/integration";
+import { createTRPCRouter, publicProcedure } from "../../trpc";
+
+export const mediaOrganizerRouter = createTRPCRouter({
+ getData: publicProcedure
+ .meta({
+ mcp: {
+ enabled: true,
+ description:
+ "Get missing and queued movies/episodes from Radarr and Sonarr. Requires query (use) access to each integration. REQUIRED: integrationIds (array of Radarr/Sonarr integration IDs from integration_all). OPTIONAL: pageSize (1-50, default 10)",
+ },
+ })
+ .concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaOrganizer")))
+ .input(z.object({ pageSize: z.number().min(1).max(50).default(10) }))
+ .query(async ({ ctx, input }) => {
+ const results = await Promise.all(
+ ctx.integrations.map(async (integration) => {
+ const innerHandler = mediaOrganizerRequestHandler.handler(integration, { pageSize: input.pageSize });
+ const { data } = await innerHandler.getDataAsync();
+ return {
+ integrationId: integration.id,
+ ...data,
+ };
+ }),
+ );
+ return results;
+ }),
+});
diff --git a/packages/api/src/router/widgets/patchmon.ts b/packages/api/src/router/widgets/patchmon.ts
new file mode 100644
index 000000000..aee758823
--- /dev/null
+++ b/packages/api/src/router/widgets/patchmon.ts
@@ -0,0 +1,21 @@
+import { patchmonStatsRequestHandler } from "@homarr/request-handler/patchmon";
+
+import { createOneIntegrationMiddleware } from "../../middlewares/integration";
+import { createTRPCRouter, protectedProcedure } from "../../trpc";
+
+export const patchmonRouter = createTRPCRouter({
+ getStats: protectedProcedure
+ .meta({
+ mcp: {
+ enabled: true,
+ description:
+ "Get PatchMon host patch statistics including total hosts, hosts needing updates, security update counts, up-to-date hosts, outdated packages, repositories, and OS distribution. REQUIRED: integrationId (single PatchMon integration ID from integration_all). Requires authenticated session (API key or browser login) and integration query access.",
+ },
+ })
+ .concat(createOneIntegrationMiddleware("query", "patchmon"))
+ .query(async ({ ctx }) => {
+ const innerHandler = patchmonStatsRequestHandler.handler(ctx.integration, {});
+ const { data } = await innerHandler.getDataAsync();
+ return data;
+ }),
+});
diff --git a/packages/api/src/router/widgets/releases.ts b/packages/api/src/router/widgets/releases.ts
index b58fecd19..84e903627 100644
--- a/packages/api/src/router/widgets/releases.ts
+++ b/packages/api/src/router/widgets/releases.ts
@@ -45,7 +45,7 @@ export const releasesRouter = createTRPCRouter({
)
.query(async ({ ctx, input }) => {
const tokensByProvider = new Map();
- let allowedRepoIds: Set | null = null;
+ const savedRepos = new Map();
if (input.itemId) {
try {
@@ -54,9 +54,15 @@ export const releasesRouter = createTRPCRouter({
await throwIfActionForbiddenAsync(ctx, eq(boards.id, item.boardId), "view");
const options = SuperJSON.parse>(item.options);
- const repos = options.repositories as Array<{ id?: string }> | undefined;
+ const repos = options.repositories as
+ | Array<{ provider?: string; identifier: string; providerUrl?: string }>
+ | undefined;
if (repos) {
- allowedRepoIds = new Set(repos.map((r) => r.id).filter((id): id is string => Boolean(id)));
+ for (const repo of repos) {
+ if (repo.provider && repo.identifier) {
+ savedRepos.set(`${repo.provider}:${repo.identifier}`, { providerUrl: repo.providerUrl });
+ }
+ }
}
const secrets = await ctx.db.query.widgetSecrets.findMany({
@@ -78,16 +84,16 @@ export const releasesRouter = createTRPCRouter({
return await Promise.all(
input.repositories.map(async (repository) => {
const repositoryId = repository.id ?? repository.identifier;
+ const savedRepo = savedRepos.get(`${repository.provider}:${repository.identifier}`);
try {
- const useToken = allowedRepoIds === null || allowedRepoIds.has(repositoryId);
const response = await releasesRequestHandler
.handler({
id: repositoryId,
provider: repository.provider,
identifier: repository.identifier,
versionRegex: formatVersionFilterRegex(repository.versionFilter),
- providerUrl: repository.providerUrl,
- token: useToken ? tokensByProvider.get(repository.provider) : undefined,
+ providerUrl: savedRepo?.providerUrl ?? repository.providerUrl,
+ token: savedRepo ? tokensByProvider.get(repository.provider) : undefined,
})
.getDataAsync();
diff --git a/packages/api/src/router/widgets/traefik.ts b/packages/api/src/router/widgets/traefik.ts
new file mode 100644
index 000000000..8f9c775e2
--- /dev/null
+++ b/packages/api/src/router/widgets/traefik.ts
@@ -0,0 +1,31 @@
+import { traefikRequestHandler } from "@homarr/request-handler/traefik";
+
+import { createManyIntegrationMiddleware } from "../../middlewares/integration";
+import { settleIntegrationQueries } from "../../settle-integrations";
+import { createTRPCRouter, publicProcedure } from "../../trpc";
+
+export const traefikRouter = createTRPCRouter({
+ getDashboard: publicProcedure
+ .meta({
+ mcp: {
+ enabled: true,
+ description:
+ "Retrieve Traefik dashboard data, including routers, services, middlewares, and entry points, for the given integration IDs.",
+ },
+ })
+ .concat(createManyIntegrationMiddleware("query", "traefik"))
+ .query(async ({ ctx }) => {
+ return await settleIntegrationQueries(ctx.integrations, async (integration) => {
+ const innerHandler = traefikRequestHandler.handler(integration, {});
+ const { data, timestamp } = await innerHandler.getDataAsync();
+
+ return {
+ integrationId: integration.id,
+ integrationName: integration.name,
+ integrationUrl: integration.url,
+ dashboard: data,
+ updatedAt: timestamp,
+ };
+ });
+ }),
+});
diff --git a/packages/api/src/settle-integrations.ts b/packages/api/src/settle-integrations.ts
index 9ae1b8f04..643a3b949 100644
--- a/packages/api/src/settle-integrations.ts
+++ b/packages/api/src/settle-integrations.ts
@@ -9,9 +9,14 @@ interface IntegrationLike {
kind: string;
}
+interface Options {
+ fallback?: (integration: TIntegration, error: unknown) => TResult;
+}
+
export async function settleIntegrationQueries(
integrations: TIntegration[],
fn: (integration: TIntegration) => Promise,
+ options?: Options,
): Promise {
const settled = await Promise.allSettled(integrations.map(async (integration) => fn(integration)));
return settled.flatMap((result, index) => {
@@ -24,6 +29,7 @@ export async function settleIntegrationQueries ({}));
const mcpTestRouter = createTRPCRouter({
app: appRouter,
+ board: boardRouter,
info: infoRouter,
invite: inviteRouter,
+ serverSettings: serverSettingsRouter,
});
test("MCP tools should be extractable from the router", () => {
@@ -28,8 +32,12 @@ test("MCP tools should contain expected procedures", () => {
expect(toolNames).toContain("app_all");
expect(toolNames).toContain("app_byId");
expect(toolNames).toContain("app_create");
+ expect(toolNames).toContain("board_savePartialBoardSettings");
+ expect(toolNames).toContain("board_duplicateBoard");
expect(toolNames).toContain("info_getInfo");
expect(toolNames).toContain("invite_getAll");
+ expect(toolNames).toContain("serverSettings_getBoardSettings");
+ expect(toolNames).toContain("serverSettings_updateBoardSettings");
});
test("MCP tools should have descriptions", () => {
diff --git a/packages/api/src/test/open-api.spec.ts b/packages/api/src/test/open-api.spec.ts
index e7d240564..a89327ce3 100644
--- a/packages/api/src/test/open-api.spec.ts
+++ b/packages/api/src/test/open-api.spec.ts
@@ -14,3 +14,12 @@ test("OpenAPI documentation should be generated", () => {
// Assert
expect(act).not.toThrow();
});
+
+test("OpenAPI documentation should expose board automation endpoints", () => {
+ const document = openApiDocument("https://homarr.dev");
+
+ expect(document.info.version).toBe("1.1.0");
+ expect(document.paths).toHaveProperty("/api/boards/{id}/settings");
+ expect(document.paths).toHaveProperty("/api/boards/{id}/duplicate");
+ expect(document.paths).toHaveProperty("/api/settings/board");
+});
diff --git a/packages/api/src/test/query-cache.spec.ts b/packages/api/src/test/query-cache.spec.ts
index 090544cb2..68d28eb15 100644
--- a/packages/api/src/test/query-cache.spec.ts
+++ b/packages/api/src/test/query-cache.spec.ts
@@ -67,6 +67,8 @@ describe("isPersistableWidgetQueryKey", () => {
[[["docker", "getContainers"], { type: "query" }], true],
[[["integration", "byIds"], { type: "query" }], true],
[[["widget", "app", "ping"], { type: "query", input: { id: "abc" } }], false],
+ [[["widget", "beszel", "getSystemStats"], { type: "query" }], false],
+ [[["widget", "beszel", "getSystems"], { type: "query" }], true],
[[["app", "selectable"], { type: "query" }], false],
[[["board", "getBoardByName"], { type: "query" }], false],
[["widget"], false],
diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts
index 70abe4a3c..6deb06b22 100644
--- a/packages/api/src/trpc.ts
+++ b/packages/api/src/trpc.ts
@@ -95,8 +95,12 @@ export const createTRPCRouter = t.router;
export const isDemoMode = env.DEMO_MODE;
+// The public "real demo" (demo + mock integrations) stays read-only, while preview
+// deployments run with DEMO_MODE + DEMO_READ_ONLY=false to allow mutations.
+export const isDemoReadOnly = env.DEMO_MODE && env.DEMO_READ_ONLY;
+
const enforceDemoModeReadOnly = t.middleware(({ ctx, next, type }) => {
- if (env.DEMO_MODE && type === "mutation") {
+ if (isDemoReadOnly && type === "mutation") {
throw new TRPCError({
code: "FORBIDDEN",
message: "Mutations are disabled in demo mode",
@@ -105,7 +109,7 @@ const enforceDemoModeReadOnly = t.middleware(({ ctx, next, type }) => {
return next({ ctx });
});
-const baseProcedure = env.DEMO_MODE ? t.procedure.use(enforceDemoModeReadOnly) : t.procedure;
+const baseProcedure = isDemoReadOnly ? t.procedure.use(enforceDemoModeReadOnly) : t.procedure;
/**
* Public (unauthed) procedure
diff --git a/packages/auth/providers/credentials/authorization/ldap-authorization.ts b/packages/auth/providers/credentials/authorization/ldap-authorization.ts
index 592fde682..31fa7593d 100644
--- a/packages/auth/providers/credentials/authorization/ldap-authorization.ts
+++ b/packages/auth/providers/credentials/authorization/ldap-authorization.ts
@@ -1,5 +1,5 @@
import { CredentialsSignin } from "@auth/core/errors";
-import { z } from "zod/v4";
+import type { z } from "zod/v4";
import { createId } from "@homarr/common";
import { createLogger } from "@homarr/core/infrastructure/logs";
@@ -7,6 +7,7 @@ import type { Database, InferInsertModel } from "@homarr/db";
import { and, eq } from "@homarr/db";
import { users } from "@homarr/db/schema";
import type { ldapSignInSchema } from "@homarr/validation/user";
+import { utf8EmailSchema } from "@homarr/validation/email";
import { env } from "../../../env";
import { LdapClient } from "../ldap-client";
@@ -52,8 +53,7 @@ export const authorizeWithLdapCredentialsAsync = async (
throw new CredentialsSignin(`User not found in LDAP username="${credentials.name}"`);
}
- // Validate email
- const mailResult = await z.string().email().safeParseAsync(ldapUser[env.AUTH_LDAP_USER_MAIL_ATTRIBUTE]);
+ const mailResult = await utf8EmailSchema.safeParseAsync(ldapUser[env.AUTH_LDAP_USER_MAIL_ATTRIBUTE]);
if (!mailResult.success) {
logger.error("User found in LDAP but with invalid or non-existing Email", {
diff --git a/packages/common/src/number.ts b/packages/common/src/number.ts
index 3d9f79bd7..af3c8fddf 100644
--- a/packages/common/src/number.ts
+++ b/packages/common/src/number.ts
@@ -21,11 +21,17 @@ export const randomInt = (min: number, max: number) => {
};
/**
- * Number of bytes to si format. (Division by 1024)
- * Does not accept floats, size in bytes should be an integer.
- * Will return "NaI" and logs a warning if a float is passed.
- * Concat as parameters so it is not added if the returned value is "NaI" or "∞".
- * Returns "∞" if the size is too large to be represented in the current format.
+ * Number of bytes to a human-readable string using binary (KiB) suffixes.
+ * Does not accept floats; size in bytes should be an integer.
+ * Will return "NaI" and log a warning if a float is passed.
+ * `concat` is appended after the unit so it is omitted when the returned
+ * value is "NaI" or "∞". Returns "∞" if the size is too large to be
+ * represented in the current format.
+ *
+ * @deprecated Use `formatBytes` for single values, `formatBytesPair` for
+ * paired "used / total" displays, and `formatByteRate` for byte-per-second
+ * rates. This function is kept for backwards compatibility but should not
+ * be used in new code.
*/
export const humanFileSize = (size: number, concat = ""): string => {
//64bit limit for Number stops at EiB
@@ -48,6 +54,99 @@ export const humanFileSize = (size: number, concat = ""): string => {
return "∞";
};
+const BINARY_UNITS = ["B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB"] as const;
+const DECIMAL_UNITS = ["B", "KB", "MB", "GB", "TB", "PB", "EB"] as const;
+
+export type ByteUnitSystem = "binary" | "decimal";
+
+export interface FormatBytesOptions {
+ /**
+ * Unit system to use. "binary" uses 1024 as the base and KiB/MiB/GiB/TiB suffixes,
+ * "decimal" uses 1000 as the base and KB/MB/GB/TB suffixes. Defaults to "binary".
+ */
+ unit?: ByteUnitSystem;
+}
+
+const pickUnitIndex = (bytes: number, base: number, lastIndex: number): number => {
+ if (!Number.isFinite(bytes) || bytes <= 0) return 0;
+ let index = 0;
+ let value = bytes;
+ while (value >= base && index < lastIndex) {
+ value /= base;
+ index++;
+ }
+ return index;
+};
+
+const sanitizeBytes = (bytes: number): number => (Number.isFinite(bytes) && bytes > 0 ? bytes : 0);
+
+const resolveUnitConfig = (options: FormatBytesOptions) => {
+ const { unit = "binary" } = options;
+ return {
+ units: unit === "binary" ? BINARY_UNITS : DECIMAL_UNITS,
+ base: unit === "binary" ? 1024 : 1000,
+ };
+};
+
+/**
+ * Format a byte value as a human-readable string with a unit suffix.
+ *
+ * Picks the largest unit that keeps the scaled value below the base. Use
+ * `formatBytesPair` when two related values (e.g. used and available) should
+ * share a common unit.
+ *
+ * @example
+ * formatBytes(0); // "0.0 B"
+ * formatBytes(1024); // "1.0 KiB"
+ * formatBytes(985828802560); // "918.1 GiB"
+ * formatBytes(985828802560, { unit: "decimal" }); // "985.8 GB"
+ */
+export const formatBytes = (bytes: number, options: FormatBytesOptions = {}): string => {
+ const { units, base } = resolveUnitConfig(options);
+ const safe = sanitizeBytes(bytes);
+ const index = pickUnitIndex(safe, base, units.length - 1);
+ const scaled = safe / base ** index;
+ return `${scaled.toFixed(1)} ${units[index]}`;
+};
+
+/**
+ * Format two related byte values (typically `used` and `available`) with a
+ * shared unit. The unit is picked from the sum of the two values so the
+ * combined display stays consistent.
+ *
+ * @example
+ * formatBytesPair(985828802560, 2858736793190);
+ * // { used: "0.9 TiB", available: "2.6 TiB" }
+ */
+export const formatBytesPair = (
+ used: number,
+ available: number,
+ options: FormatBytesOptions = {},
+): { used: string; available: string } => {
+ const { units, base } = resolveUnitConfig(options);
+ const safeUsed = sanitizeBytes(used);
+ const safeAvailable = sanitizeBytes(available);
+ const index = pickUnitIndex(safeUsed + safeAvailable, base, units.length - 1);
+ const suffix = units[index];
+ return {
+ used: `${(safeUsed / base ** index).toFixed(1)} ${suffix}`,
+ available: `${(safeAvailable / base ** index).toFixed(1)} ${suffix}`,
+ };
+};
+
+/**
+ * Format a byte-per-second rate (e.g. network throughput) as a human-readable
+ * string with a `/s` suffix. The value is formatted with the same rules as
+ * `formatBytes` and a trailing `/s` is appended.
+ *
+ * @example
+ * formatByteRate(0); // "0.0 B/s"
+ * formatByteRate(1024); // "1.0 KiB/s"
+ * formatByteRate(985828802560, { unit: "decimal" }); // "985.8 GB/s"
+ */
+export const formatByteRate = (bytes: number, options: FormatBytesOptions = {}): string =>
+ `${formatBytes(bytes, options)}/s`;
+
const IMPERIAL_MULTIPLIER = 1.609344;
export const metricToImperial = (metricValue: number) => metricValue / IMPERIAL_MULTIPLIER;
diff --git a/packages/common/src/test/number.spec.ts b/packages/common/src/test/number.spec.ts
new file mode 100644
index 000000000..c8a9ec839
--- /dev/null
+++ b/packages/common/src/test/number.spec.ts
@@ -0,0 +1,90 @@
+import { describe, expect, it } from "vitest";
+
+import { formatByteRate, formatBytes, formatBytesPair } from "../number";
+
+describe("formatBytes", () => {
+ it("returns bytes for small values", () => {
+ expect(formatBytes(0)).toBe("0.0 B");
+ expect(formatBytes(1)).toBe("1.0 B");
+ expect(formatBytes(1023)).toBe("1023.0 B");
+ });
+
+ it("scales binary units correctly", () => {
+ expect(formatBytes(1024)).toBe("1.0 KiB");
+ expect(formatBytes(1024 ** 2)).toBe("1.0 MiB");
+ expect(formatBytes(1024 ** 3)).toBe("1.0 GiB");
+ expect(formatBytes(1024 ** 4)).toBe("1.0 TiB");
+ });
+
+ it("scales decimal units when requested", () => {
+ expect(formatBytes(1000, { unit: "decimal" })).toBe("1.0 KB");
+ expect(formatBytes(1000 ** 2, { unit: "decimal" })).toBe("1.0 MB");
+ expect(formatBytes(1000 ** 3, { unit: "decimal" })).toBe("1.0 GB");
+ expect(formatBytes(1000 ** 4, { unit: "decimal" })).toBe("1.0 TB");
+ });
+
+ it("formats a typical storage value with one decimal", () => {
+ expect(formatBytes(985828802560)).toBe("918.1 GiB");
+ expect(formatBytes(985828802560, { unit: "decimal" })).toBe("985.8 GB");
+ });
+
+ it("caps at the largest unit to avoid overflow", () => {
+ expect(formatBytes(Number.MAX_SAFE_INTEGER)).toMatch(/PiB$/);
+ });
+
+ it("returns the zero value for negative or non-finite input", () => {
+ expect(formatBytes(-1)).toBe("0.0 B");
+ expect(formatBytes(Number.NaN)).toBe("0.0 B");
+ expect(formatBytes(Number.POSITIVE_INFINITY)).toBe("0.0 B");
+ });
+});
+
+describe("formatBytesPair", () => {
+ it("picks the unit of the larger total and applies it to both values", () => {
+ const { used, available } = formatBytesPair(985828802560, 2858736793190);
+ expect(used).toBe("0.9 TiB");
+ expect(available).toBe("2.6 TiB");
+ });
+
+ it("uses a smaller unit when both values fit in it", () => {
+ const { used, available } = formatBytesPair(1024 * 1024 * 100, 1024 * 1024 * 200);
+ expect(used).toBe("100.0 MiB");
+ expect(available).toBe("200.0 MiB");
+ });
+
+ it("falls back to zero when both inputs are invalid", () => {
+ const { used, available } = formatBytesPair(Number.NaN, -1);
+ expect(used).toBe("0.0 B");
+ expect(available).toBe("0.0 B");
+ });
+
+ it("uses the same unit across both values when one is invalid", () => {
+ const { used, available } = formatBytesPair(Number.NaN, 1024 ** 4);
+ expect(used).toBe("0.0 TiB");
+ expect(available).toBe("1.0 TiB");
+ });
+
+ it("honours the decimal unit option", () => {
+ const { used, available } = formatBytesPair(500_000_000_000, 1_500_000_000_000, { unit: "decimal" });
+ expect(used).toBe("0.5 TB");
+ expect(available).toBe("1.5 TB");
+ });
+});
+
+describe("formatByteRate", () => {
+ it("appends a /s suffix to the formatted value", () => {
+ expect(formatByteRate(0)).toBe("0.0 B/s");
+ expect(formatByteRate(1024)).toBe("1.0 KiB/s");
+ expect(formatByteRate(1024 ** 3)).toBe("1.0 GiB/s");
+ });
+
+ it("honours the decimal unit option", () => {
+ expect(formatByteRate(1000, { unit: "decimal" })).toBe("1.0 KB/s");
+ expect(formatByteRate(1000 ** 2, { unit: "decimal" })).toBe("1.0 MB/s");
+ });
+
+ it("returns zero for invalid input", () => {
+ expect(formatByteRate(-1)).toBe("0.0 B/s");
+ expect(formatByteRate(Number.NaN)).toBe("0.0 B/s");
+ });
+});
diff --git a/packages/core/src/infrastructure/http/request.ts b/packages/core/src/infrastructure/http/request.ts
index 9bfc376fa..b13eb0cc2 100644
--- a/packages/core/src/infrastructure/http/request.ts
+++ b/packages/core/src/infrastructure/http/request.ts
@@ -2,7 +2,7 @@ import type { AgentOptions } from "node:https";
import { Agent as HttpsAgent } from "node:https";
import { checkServerIdentity } from "node:tls";
import axios from "axios";
-import type { RequestInfo, RequestInit, Response } from "undici";
+import type { Agent as UndiciAgent, RequestInfo, RequestInit, Response } from "undici";
import { fetch } from "undici";
import {
@@ -29,11 +29,15 @@ export const createCustomCheckServerIdentity = (
};
};
-export const createCertificateAgentAsync = async (override?: {
- ca: string | string[];
- checkServerIdentity: typeof checkServerIdentity;
-}) => {
+export const createCertificateAgentAsync = async (
+ override?: {
+ ca: string | string[];
+ checkServerIdentity: typeof checkServerIdentity;
+ },
+ agentOptions?: Pick,
+) => {
return new UndiciHttpAgent({
+ ...agentOptions,
connect: override ?? {
ca: await getAllTrustedCertificatesAsync(),
checkServerIdentity: createCustomCheckServerIdentity(await getTrustedCertificateHostnamesAsync()),
@@ -61,14 +65,18 @@ export const createAxiosCertificateInstanceAsync = async (
export const fetchWithTrustedCertificatesAsync = async (
url: RequestInfo,
- options?: RequestInit & { timeout?: number },
+ options?: RequestInit & { timeout?: number; bodyTimeout?: number },
): Promise => {
- const agent = await createCertificateAgentAsync(undefined);
+ const agent = await createCertificateAgentAsync(
+ undefined,
+ options?.bodyTimeout !== undefined ? { bodyTimeout: options.bodyTimeout } : undefined,
+ );
if (options?.timeout) {
+ const { bodyTimeout: _bodyTimeout, ...fetchOptions } = options;
return await withTimeoutAsync(
async (signal) =>
fetch(url, {
- ...options,
+ ...fetchOptions,
signal,
dispatcher: agent,
}),
@@ -76,8 +84,9 @@ export const fetchWithTrustedCertificatesAsync = async (
);
}
+ const { bodyTimeout: _bodyTimeout, ...fetchOptions } = options ?? {};
return fetch(url, {
- ...options,
+ ...fetchOptions,
dispatcher: agent,
});
};
diff --git a/packages/definitions/src/docker-integration-match.ts b/packages/definitions/src/docker-integration-match.ts
index e7e10809b..36a0d0f58 100644
--- a/packages/definitions/src/docker-integration-match.ts
+++ b/packages/definitions/src/docker-integration-match.ts
@@ -31,8 +31,11 @@ const integrationAliases: Partial> =
audiobookshelf: ["audiobookshelf"],
navidrome: ["navidrome"],
paperlessNgx: ["paperless-ngx", "paperless"],
+ patchmon: ["patchmon", "patch-mon"],
coolify: ["coolify"],
truenas: ["truenas"],
+ bazarr: ["bazarr"],
+ synology: ["synology", "diskstation"],
};
export const matchIntegrationKind = (search: string): IntegrationKind | null => {
diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts
index 307f74428..22bc5f75b 100644
--- a/packages/definitions/src/docs/homarr-docs-sitemap.ts
+++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts
@@ -60,8 +60,8 @@ export type HomarrDocumentationPath =
| "/docs/tags/connections"
| "/docs/tags/custom-widgets"
| "/docs/tags/customization"
- | "/docs/tags/data-sources"
| "/docs/tags/data"
+ | "/docs/tags/data-sources"
| "/docs/tags/database"
| "/docs/tags/developer"
| "/docs/tags/development"
@@ -99,8 +99,8 @@ export type HomarrDocumentationPath =
| "/docs/tags/redis"
| "/docs/tags/responsive"
| "/docs/tags/roles"
- | "/docs/tags/search-engines"
| "/docs/tags/search"
+ | "/docs/tags/search-engines"
| "/docs/tags/secrets"
| "/docs/tags/security"
| "/docs/tags/self-signed"
@@ -132,15 +132,6 @@ export type HomarrDocumentationPath =
| "/docs/advanced/running-as-different-user"
| "/docs/advanced/single-sign-on"
| "/docs/advanced/styling"
- | "/docs/category/advanced"
- | "/docs/category/community"
- | "/docs/category/developer-guides"
- | "/docs/category/getting-started"
- | "/docs/category/installation-1"
- | "/docs/category/installation"
- | "/docs/category/integrations"
- | "/docs/category/management"
- | "/docs/category/widgets"
| "/docs/community/donate"
| "/docs/community/faq"
| "/docs/community/get-in-touch"
@@ -168,6 +159,7 @@ export type HomarrDocumentationPath =
| "/docs/integrations/archiveteam-warrior"
| "/docs/integrations/aria2"
| "/docs/integrations/audiobookshelf"
+ | "/docs/integrations/bazarr"
| "/docs/integrations/beszel"
| "/docs/integrations/coolify"
| "/docs/integrations/dash-dot"
@@ -192,6 +184,7 @@ export type HomarrDocumentationPath =
| "/docs/integrations/opnsense"
| "/docs/integrations/overseerr"
| "/docs/integrations/paperless-ngx"
+ | "/docs/integrations/patchmon"
| "/docs/integrations/peanut"
| "/docs/integrations/pi-hole"
| "/docs/integrations/plex"
@@ -205,9 +198,11 @@ export type HomarrDocumentationPath =
| "/docs/integrations/slskd"
| "/docs/integrations/sonarr"
| "/docs/integrations/speedtest-tracker"
+ | "/docs/integrations/synology"
| "/docs/integrations/tdarr"
| "/docs/integrations/technitium-dns"
| "/docs/integrations/tracearr"
+ | "/docs/integrations/traefik"
| "/docs/integrations/transmission"
| "/docs/integrations/truenas"
| "/docs/integrations/umami"
@@ -230,6 +225,7 @@ export type HomarrDocumentationPath =
| "/docs/widgets/anchor-note"
| "/docs/widgets/app"
| "/docs/widgets/audio-stats"
+ | "/docs/widgets/bazarr"
| "/docs/widgets/beszel-alerts"
| "/docs/widgets/beszel-system-grid"
| "/docs/widgets/beszel-system-stats"
@@ -249,6 +245,7 @@ export type HomarrDocumentationPath =
| "/docs/widgets/immich-album-carousel"
| "/docs/widgets/immich-server-stats"
| "/docs/widgets/indexer-manager"
+ | "/docs/widgets/media-missing"
| "/docs/widgets/media-releases"
| "/docs/widgets/media-request-list"
| "/docs/widgets/media-request-stats"
@@ -260,15 +257,18 @@ export type HomarrDocumentationPath =
| "/docs/widgets/notebook"
| "/docs/widgets/notifications"
| "/docs/widgets/paperless-ngx"
+ | "/docs/widgets/patchmon"
| "/docs/widgets/releases"
| "/docs/widgets/rss-feed"
| "/docs/widgets/smart-home-entity-state"
| "/docs/widgets/smart-home-execute-automation"
| "/docs/widgets/speedtest-tracker"
| "/docs/widgets/stock-price"
+ | "/docs/widgets/system-disks"
| "/docs/widgets/system-resources"
| "/docs/widgets/timetable"
| "/docs/widgets/tracearr"
+ | "/docs/widgets/traefik"
| "/docs/widgets/umami"
| "/docs/widgets/ups"
| "/docs/widgets/uptime-kuma"
@@ -289,6 +289,7 @@ export type HomarrDocumentationPath =
| "/docs/integrations/lidarr"
| "/docs/integrations/readarr"
| "/docs/integrations/prowlarr"
+ | "/docs/integrations/bazarr"
| "/docs/integrations/jellyfin"
| "/docs/integrations/emby"
| "/docs/integrations/plex"
@@ -312,10 +313,12 @@ export type HomarrDocumentationPath =
| "/docs/integrations/ical"
| "/docs/integrations/anchor"
| "/docs/integrations/truenas"
+ | "/docs/integrations/synology"
| "/docs/integrations/unraid"
| "/docs/integrations/coolify"
| "/docs/integrations/immich"
| "/docs/integrations/paperless-ngx"
+ | "/docs/integrations/patchmon"
| "/docs/integrations/tracearr"
| "/docs/integrations/speedtest-tracker"
| "/docs/integrations/uptime-kuma"
@@ -325,6 +328,7 @@ export type HomarrDocumentationPath =
| "/docs/integrations/gluetun"
| "/docs/integrations/peanut"
| "/docs/integrations/beszel"
+ | "/docs/integrations/traefik"
| "/docs/widgets/clock"
| "/docs/widgets/weather"
| "/docs/widgets/app"
@@ -343,6 +347,7 @@ export type HomarrDocumentationPath =
| "/docs/widgets/media-request-list"
| "/docs/widgets/media-request-stats"
| "/docs/widgets/media-transcoding"
+ | "/docs/widgets/media-missing"
| "/docs/widgets/minecraft-server-status"
| "/docs/widgets/network-controller-summary"
| "/docs/widgets/network-controller-status"
@@ -357,10 +362,13 @@ export type HomarrDocumentationPath =
| "/docs/widgets/notifications"
| "/docs/widgets/system-resources"
| "/docs/widgets/coolify"
+ | "/docs/widgets/system-disks"
| "/docs/widgets/timetable"
| "/docs/widgets/immich-server-stats"
| "/docs/widgets/immich-album-carousel"
| "/docs/widgets/paperless-ngx"
+ | "/docs/widgets/patchmon"
+ | "/docs/widgets/bazarr"
| "/docs/widgets/tracearr"
| "/docs/widgets/speedtest-tracker"
| "/docs/widgets/uptime-kuma"
@@ -372,4 +380,5 @@ export type HomarrDocumentationPath =
| "/docs/widgets/beszel-system-grid"
| "/docs/widgets/beszel-alerts"
| "/docs/widgets/beszel-system-stats"
+ | "/docs/widgets/traefik"
| "/docs/widgets/custom-api";
diff --git a/packages/definitions/src/docs/integration-doc-slugs.ts b/packages/definitions/src/docs/integration-doc-slugs.ts
index ca19d4de6..41ea8eb33 100644
--- a/packages/definitions/src/docs/integration-doc-slugs.ts
+++ b/packages/definitions/src/docs/integration-doc-slugs.ts
@@ -13,6 +13,7 @@ export const integrationDocSlugs: Record = {
lidarr: "lidarr",
readarr: "readarr",
prowlarr: "prowlarr",
+ bazarr: "bazarr",
jellyfin: "jellyfin",
emby: "emby",
plex: "plex",
@@ -36,10 +37,12 @@ export const integrationDocSlugs: Record = {
ical: "ical",
anchor: "anchor",
truenas: "truenas",
+ synology: "synology",
unraid: "unraid",
coolify: "coolify",
immich: "immich",
paperlessNgx: "paperless-ngx",
+ patchmon: "patchmon",
tracearr: "tracearr",
speedtestTracker: "speedtest-tracker",
uptimeKuma: "uptime-kuma",
@@ -49,6 +52,7 @@ export const integrationDocSlugs: Record = {
gluetun: "gluetun",
peaNut: "peanut",
beszel: "beszel",
+ traefik: "traefik",
archiveTeamWarrior: null,
mock: null,
};
diff --git a/packages/definitions/src/docs/widget-doc-slugs.ts b/packages/definitions/src/docs/widget-doc-slugs.ts
index 2e34a4843..8e51bbddb 100644
--- a/packages/definitions/src/docs/widget-doc-slugs.ts
+++ b/packages/definitions/src/docs/widget-doc-slugs.ts
@@ -19,6 +19,7 @@ export const widgetDocSlugs: Record = {
"mediaRequests-requestList": "media-request-list",
"mediaRequests-requestStats": "media-request-stats",
mediaTranscoding: "media-transcoding",
+ mediaMissing: "media-missing",
minecraftServerStatus: "minecraft-server-status",
networkControllerSummary: "network-controller-summary",
networkControllerStatus: "network-controller-status",
@@ -33,11 +34,13 @@ export const widgetDocSlugs: Record = {
notifications: "notifications",
systemResources: "system-resources",
coolify: "coolify",
- systemDisks: null,
+ systemDisks: "system-disks",
timetable: "timetable",
"immich-serverStats": "immich-server-stats",
"immich-albumCarousel": "immich-album-carousel",
paperlessNgx: "paperless-ngx",
+ patchmon: "patchmon",
+ bazarr: "bazarr",
tracearr: "tracearr",
speedtestTracker: "speedtest-tracker",
uptimeKuma: "uptime-kuma",
@@ -50,5 +53,6 @@ export const widgetDocSlugs: Record = {
beszelSystemGrid: "beszel-system-grid",
beszelAlerts: "beszel-alerts",
beszelSystemStats: "beszel-system-stats",
+ traefik: "traefik",
customApi: "custom-api",
};
diff --git a/packages/definitions/src/integration.ts b/packages/definitions/src/integration.ts
index 15c94f80d..211f0807b 100644
--- a/packages/definitions/src/integration.ts
+++ b/packages/definitions/src/integration.ts
@@ -13,6 +13,8 @@ export const integrationSecretKindObject = {
topic: { isPublic: true, multiline: false },
opnsenseApiKey: { isPublic: false, multiline: false },
opnsenseApiSecret: { isPublic: false, multiline: false },
+ patchmonApiKey: { isPublic: true, multiline: false },
+ patchmonApiSecret: { isPublic: false, multiline: false },
url: { isPublic: false, multiline: false },
privateKey: { isPublic: false, multiline: true },
githubAppId: { isPublic: true, multiline: false },
@@ -96,7 +98,7 @@ export const integrationDefs = {
name: "Sonarr",
secretKinds: [["apiKey"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/sonarr.svg",
- category: ["calendar"],
+ category: ["calendar", "mediaOrganizer"],
documentationUrl: createDocumentationLink("/docs/integrations/sonarr"),
defaultPort: 8989,
apiKeySettingsPath: "/settings/general",
@@ -105,7 +107,7 @@ export const integrationDefs = {
name: "Radarr",
secretKinds: [["apiKey"]],
iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/radarr.svg",
- category: ["calendar"],
+ category: ["calendar", "mediaOrganizer"],
documentationUrl: createDocumentationLink("/docs/integrations/radarr"),
defaultPort: 7878,
apiKeySettingsPath: "/settings/general",
@@ -137,6 +139,15 @@ export const integrationDefs = {
defaultPort: 9696,
apiKeySettingsPath: "/settings/general",
},
+ bazarr: {
+ name: "Bazarr",
+ secretKinds: [["apiKey"]],
+ iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/bazarr.svg",
+ category: ["subtitleManager"],
+ documentationUrl: createDocumentationLink("/docs/integrations/bazarr"),
+ defaultPort: 6767,
+ apiKeySettingsPath: "/settings/general",
+ },
jellyfin: {
name: "Jellyfin",
secretKinds: [["username", "password"], ["apiKey"]],
@@ -321,6 +332,14 @@ export const integrationDefs = {
documentationUrl: createDocumentationLink("/docs/integrations/truenas"),
defaultPort: 80,
},
+ synology: {
+ name: "Synology DiskStation",
+ secretKinds: [["username", "password"]],
+ iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/synology.svg",
+ category: ["healthMonitoring"],
+ documentationUrl: createDocumentationLink("/docs/integrations/synology"),
+ defaultPort: 5000,
+ },
unraid: {
name: "Unraid",
secretKinds: [["apiKey"]],
@@ -353,6 +372,15 @@ export const integrationDefs = {
documentationUrl: null,
defaultPort: 8000,
},
+ patchmon: {
+ name: "PatchMon",
+ secretKinds: [["patchmonApiKey", "patchmonApiSecret"]],
+ iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/patchmon.svg",
+ category: ["healthMonitoring"],
+ documentationUrl: createDocumentationLink("/docs/integrations/patchmon"),
+ defaultPort: 3413,
+ apiKeySettingsPath: "/settings/integrations",
+ },
tracearr: {
name: "Tracearr",
secretKinds: [["apiKey"]],
@@ -425,6 +453,14 @@ export const integrationDefs = {
category: ["vpn"],
documentationUrl: createDocumentationLink("/docs/integrations/gluetun"),
},
+ traefik: {
+ name: "Traefik",
+ secretKinds: [[], ["username", "password"], ["apiKey"]],
+ iconUrl: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/traefik.svg",
+ category: ["reverseProxy"],
+ documentationUrl: createDocumentationLink("/docs/integrations/traefik"),
+ defaultPort: 8080,
+ },
archiveTeamWarrior: {
name: "ArchiveTeam Warrior",
secretKinds: [[], ["username", "password"]],
@@ -453,6 +489,7 @@ export const integrationDefs = {
"smartHomeServer",
"ups",
"uptimeMonitoring",
+ "mediaOrganizer",
],
documentationUrl: null,
},
@@ -518,6 +555,7 @@ export const integrationCategories = [
"dnsHole",
"mediaService",
"calendar",
+ "mediaOrganizer",
"mediaSearch",
"mediaRelease",
"mediaRequest",
@@ -545,6 +583,8 @@ export const integrationCategories = [
"documents",
"mediaLibrary",
"uptimeMonitoring",
+ "subtitleManager",
+ "reverseProxy",
] as const;
export type IntegrationCategory = (typeof integrationCategories)[number];
diff --git a/packages/definitions/src/test/api-key-url.spec.ts b/packages/definitions/src/test/api-key-url.spec.ts
index 21b7e0fe7..4e70c75ca 100644
--- a/packages/definitions/src/test/api-key-url.spec.ts
+++ b/packages/definitions/src/test/api-key-url.spec.ts
@@ -15,6 +15,12 @@ describe("getIntegrationApiKeyUrl", () => {
);
});
+ it("builds URL for patchmon", () => {
+ expect(getIntegrationApiKeyUrl("http://patchmon.local:3413", "patchmon")).toBe(
+ "http://patchmon.local:3413/settings/integrations",
+ );
+ });
+
it("returns null for integrations without apiKeySettingsPath", () => {
expect(getIntegrationApiKeyUrl("http://localhost", "plex")).toBeNull();
});
diff --git a/packages/definitions/src/widget-integration-map.ts b/packages/definitions/src/widget-integration-map.ts
index deb953781..1844fb662 100644
--- a/packages/definitions/src/widget-integration-map.ts
+++ b/packages/definitions/src/widget-integration-map.ts
@@ -20,19 +20,22 @@ export const widgetIntegrationSupport: Partial kind !== "patchmon"),
firewall: getIntegrationKindsByCategory("firewall"),
notifications: getIntegrationKindsByCategory("notifications"),
mediaReleases: ["emby", "jellyfin", "plex"],
- systemResources: ["dashDot", "openmediavault", "truenas", "unraid", "glances"],
- systemDisks: ["dashDot", "openmediavault", "truenas", "unraid"],
+ systemResources: ["dashDot", "openmediavault", "truenas", "unraid", "glances", "synology"],
+ systemDisks: ["dashDot", "openmediavault", "truenas", "unraid", "synology"],
coolify: ["coolify"],
"immich-serverStats": ["immich"],
"immich-albumCarousel": ["immich"],
paperlessNgx: ["paperlessNgx"],
+ patchmon: ["patchmon"],
+ bazarr: ["bazarr"],
tracearr: ["tracearr"],
speedtestTracker: ["speedtestTracker"],
uptimeKuma: ["uptimeKuma"],
@@ -40,6 +43,7 @@ export const widgetIntegrationSupport: Partial {
diff --git a/packages/definitions/src/widget.ts b/packages/definitions/src/widget.ts
index db2028082..c5c050b83 100644
--- a/packages/definitions/src/widget.ts
+++ b/packages/definitions/src/widget.ts
@@ -17,6 +17,7 @@ export const widgetKinds = [
"mediaRequests-requestList",
"mediaRequests-requestStats",
"mediaTranscoding",
+ "mediaMissing",
"minecraftServerStatus",
"networkControllerSummary",
"networkControllerStatus",
@@ -36,6 +37,8 @@ export const widgetKinds = [
"immich-serverStats",
"immich-albumCarousel",
"paperlessNgx",
+ "patchmon",
+ "bazarr",
"tracearr",
"speedtestTracker",
"uptimeKuma",
@@ -48,6 +51,7 @@ export const widgetKinds = [
"beszelSystemGrid",
"beszelAlerts",
"beszelSystemStats",
+ "traefik",
"customApi",
] as const;
export type WidgetKind = (typeof widgetKinds)[number];
@@ -56,4 +60,7 @@ export const widgetDefaultSizes: Partial Promise]>;
type IntegrationInstanceOfKind = {
diff --git a/packages/integrations/src/bazarr/bazarr-integration.ts b/packages/integrations/src/bazarr/bazarr-integration.ts
new file mode 100644
index 000000000..8f224d6ea
--- /dev/null
+++ b/packages/integrations/src/bazarr/bazarr-integration.ts
@@ -0,0 +1,45 @@
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+
+import type { IntegrationTestingInput } from "../base/integration";
+import { Integration } from "../base/integration";
+import { TestConnectionError } from "../base/test-connection/test-connection-error";
+import type { TestingResult } from "../base/test-connection/test-connection-service";
+import type { BazarrBadges } from "./bazarr-types";
+import { bazarrBadgesSchema, bazarrSystemStatusSchema } from "./bazarr-types";
+
+export class BazarrIntegration extends Integration {
+ protected async testingAsync(input: IntegrationTestingInput): Promise {
+ const response = await input.fetchAsync(this.url("/api/system/status"), {
+ headers: this.getAuthHeaders(),
+ });
+
+ if (!response.ok) {
+ return TestConnectionError.StatusResult(response);
+ }
+
+ bazarrSystemStatusSchema.parse(await response.json());
+ return { success: true };
+ }
+
+ public async getBadgesAsync(): Promise {
+ const response = await fetchWithTrustedCertificatesAsync(this.url("/api/badges"), {
+ headers: this.getAuthHeaders(),
+ timeout: 10000,
+ });
+
+ if (!response.ok) {
+ throw new Error(
+ `Failed to fetch Bazarr badges for ${this.integration.name} (${this.integration.id}): ${response.statusText}`,
+ );
+ }
+
+ return bazarrBadgesSchema.parse(await response.json());
+ }
+
+ private getAuthHeaders(): Record {
+ return {
+ "X-API-KEY": this.getSecretValue("apiKey"),
+ Accept: "application/json",
+ };
+ }
+}
diff --git a/packages/integrations/src/bazarr/bazarr-types.ts b/packages/integrations/src/bazarr/bazarr-types.ts
new file mode 100644
index 000000000..fe16dedba
--- /dev/null
+++ b/packages/integrations/src/bazarr/bazarr-types.ts
@@ -0,0 +1,19 @@
+import { z } from "zod/v4";
+
+export const bazarrBadgesSchema = z.object({
+ episodes: z.number(),
+ movies: z.number(),
+ providers: z.number(),
+ status: z.number(),
+ sonarr_signalr: z.string(),
+ radarr_signalr: z.string(),
+ announcements: z.number(),
+});
+
+export type BazarrBadges = z.infer;
+
+export const bazarrSystemStatusSchema = z.object({
+ data: z.object({
+ bazarr_version: z.string(),
+ }),
+});
diff --git a/packages/integrations/src/beszel/beszel-integration.ts b/packages/integrations/src/beszel/beszel-integration.ts
index 186ed2203..f8c681da3 100644
--- a/packages/integrations/src/beszel/beszel-integration.ts
+++ b/packages/integrations/src/beszel/beszel-integration.ts
@@ -19,14 +19,66 @@ import type {
BeszelSystemDetails,
BeszelSystemdService,
BeszelSystemStatsRecord,
+ BeszelSystemStats,
+ BeszelContainerStats,
CreateAlertInput,
+ LiveStatsEvent,
PocketBaseListResponse,
UpdateAlertInput,
} from "./beszel-types";
+import { createRealtimeMetricsTopic, PocketBaseSseParser } from "./pocketbase-realtime";
const logger = createLogger({ module: "beszel-integration" });
const escapeFilterValue = (value: string) => value.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
+const realtimeRetryDelaysMs = [200, 300, 500, 1_000, 1_500, 2_000] as const;
+
+const supportsRealtimeMetrics = (version: string) => {
+ const [major = 0, minor = 0] = version.replace(/^v/, "").split(".").map(Number);
+ return major > 0 || minor >= 13;
+};
+
+const waitForRetryAsync = async (delayMs: number, signal: AbortSignal) =>
+ await new Promise((resolve) => {
+ if (signal.aborted) return resolve();
+ const timeout = setTimeout(done, delayMs);
+ signal.addEventListener("abort", done, { once: true });
+ function done() {
+ clearTimeout(timeout);
+ signal.removeEventListener("abort", done);
+ resolve();
+ }
+ });
+
+interface BeszelRealtimeSnapshot {
+ stats?: BeszelSystemStats;
+ container?: BeszelContainerStats[];
+}
+
+export const normalizeRealtimeSnapshot = (
+ payload: BeszelRealtimeSnapshot,
+ systemId: string,
+ receivedAt = new Date(),
+): LiveStatsEvent[] => {
+ const created = receivedAt.toISOString();
+ const id = `realtime-${receivedAt.getTime()}`;
+ const events: LiveStatsEvent[] = [];
+
+ if (payload.stats && typeof payload.stats === "object" && !Array.isArray(payload.stats)) {
+ events.push({
+ type: "system_stats",
+ record: { id, system: systemId, stats: payload.stats, type: "1m", created, updated: created },
+ });
+ }
+ if (Array.isArray(payload.container)) {
+ events.push({
+ type: "container_stats",
+ record: { id, system: systemId, stats: payload.container, type: "1m", created, updated: created },
+ });
+ }
+
+ return events;
+};
interface BeszelSession {
token: string;
@@ -284,6 +336,165 @@ export class BeszelIntegration extends Integration {
});
}
+ /** Subscribe to Beszel's custom one-second `rt_metrics` PocketBase topic. */
+ public async subscribeRealtimeMetrics(
+ systemId: string,
+ onMessage: (event: LiveStatsEvent) => void,
+ signal: AbortSignal,
+ ): Promise {
+ const systems = await this.getSystemsAsync();
+ const system = systems.find((candidate) => candidate.id === systemId);
+ if (!system) throw new Error("Selected Beszel system was not found");
+ if (system.status !== "up")
+ throw new Error(`Beszel system is ${system.status}; Live mode requires an online system`);
+ if (!supportsRealtimeMetrics(system.info.v)) {
+ throw new Error(`Beszel agent ${system.info.v} does not support Live mode; version 0.13.0 or newer is required`);
+ }
+
+ const realtimeUrl = this.url("/api/realtime");
+ const topic = createRealtimeMetricsTopic(systemId);
+ let retryAttempt = 0;
+ let emittedSnapshotCount = 0;
+
+ while (!signal.aborted) {
+ try {
+ let session = await this.authenticateAsync();
+ const openStream = async () =>
+ await fetchWithTrustedCertificatesAsync(realtimeUrl, {
+ headers: {
+ Accept: "text/event-stream",
+ Authorization: session.token,
+ "Cache-Control": "no-cache",
+ Pragma: "no-cache",
+ },
+ signal,
+ bodyTimeout: 0,
+ });
+
+ logger.debug("Opening Beszel rt_metrics SSE connection", {
+ integrationId: this.integration.id,
+ systemId,
+ retryAttempt,
+ });
+ let response = await openStream();
+ if (response.status === 401) {
+ await this.sessionStore.clearAsync();
+ session = await this.authenticateAsync();
+ response = await openStream();
+ }
+ if (!response.ok) throw new ResponseError(response);
+
+ const reader = response.body?.getReader();
+ if (!reader) throw new Error("Beszel realtime response has no body");
+ const decoder = new TextDecoder();
+ const parser = new PocketBaseSseParser();
+ let clientId: string | undefined;
+
+ const processFrameAsync = async (frame: ReturnType[number]) => {
+ if (frame.event === "PB_CONNECT") {
+ let fallbackClientId: string | undefined;
+ try {
+ const connectData = JSON.parse(frame.data) as { clientId?: string };
+ fallbackClientId = connectData.clientId;
+ } catch {
+ // PocketBase normally provides the client ID in the SSE id field.
+ }
+ clientId = frame.id || fallbackClientId;
+ if (!clientId) throw new Error("PocketBase PB_CONNECT event did not include a client ID");
+
+ const subscribeResponse = await fetchWithTrustedCertificatesAsync(realtimeUrl, {
+ method: "POST",
+ headers: { Authorization: session.token, "Content-Type": "application/json" },
+ body: JSON.stringify({ clientId, subscriptions: [topic] }),
+ signal,
+ });
+ if (subscribeResponse.status === 401) await this.sessionStore.clearAsync();
+ if (!subscribeResponse.ok) throw new ResponseError(subscribeResponse);
+ logger.debug("Subscribed to Beszel rt_metrics topic", {
+ integrationId: this.integration.id,
+ systemId,
+ clientId,
+ });
+ return;
+ }
+
+ if (!frame.event.startsWith("rt_metrics")) return;
+ try {
+ const snapshot = JSON.parse(frame.data) as BeszelRealtimeSnapshot;
+ const events = normalizeRealtimeSnapshot(snapshot, systemId);
+ if (events.length === 0) return;
+ emittedSnapshotCount += 1;
+ retryAttempt = 0;
+ for (const event of events) onMessage(event);
+ if (emittedSnapshotCount === 1 || emittedSnapshotCount % 30 === 0) {
+ logger.debug("Forwarded Beszel rt_metrics snapshots", {
+ integrationId: this.integration.id,
+ systemId,
+ emittedSnapshotCount,
+ containerCount: snapshot.container?.length ?? 0,
+ });
+ }
+ } catch (error) {
+ logger.warn("Failed to parse Beszel rt_metrics payload", {
+ integrationId: this.integration.id,
+ systemId,
+ error: error instanceof Error ? error.message : String(error),
+ });
+ }
+ };
+
+ logger.debug("Beszel rt_metrics SSE connection established", {
+ integrationId: this.integration.id,
+ systemId,
+ contentType: response.headers.get("content-type"),
+ });
+ try {
+ while (!signal.aborted) {
+ const { done, value } = await reader.read();
+ if (done) break;
+ for (const frame of parser.push(decoder.decode(value, { stream: true }))) {
+ await processFrameAsync(frame);
+ }
+ }
+ for (const frame of parser.push(decoder.decode())) await processFrameAsync(frame);
+ for (const frame of parser.finish()) await processFrameAsync(frame);
+ } finally {
+ await reader.cancel().catch(() => {});
+ reader.releaseLock();
+ }
+
+ if (!signal.aborted) throw new Error("Beszel rt_metrics SSE stream ended unexpectedly");
+ } catch (error) {
+ if (signal.aborted) break;
+ if (error instanceof ResponseError && error.statusCode === 401 && retryAttempt === 0) {
+ retryAttempt += 1;
+ logger.debug("Retrying Beszel rt_metrics handshake after reauthentication", {
+ integrationId: this.integration.id,
+ systemId,
+ });
+ continue;
+ }
+ if (error instanceof ResponseError && error.statusCode < 500 && error.statusCode !== 429) throw error;
+ const delayMs = realtimeRetryDelaysMs[Math.min(retryAttempt, realtimeRetryDelaysMs.length - 1)] ?? 2_000;
+ retryAttempt += 1;
+ logger.warn("Beszel rt_metrics connection lost; retrying", {
+ integrationId: this.integration.id,
+ systemId,
+ retryAttempt,
+ delayMs,
+ error: error instanceof Error ? error.message : String(error),
+ });
+ await waitForRetryAsync(delayMs, signal);
+ }
+ }
+
+ logger.debug("Beszel rt_metrics subscription stopped", {
+ integrationId: this.integration.id,
+ systemId,
+ emittedSnapshotCount,
+ });
+ }
+
protected async testingAsync(input: IntegrationTestingInput): Promise {
const response = await input.fetchAsync(this.url("/api/collections/users/auth-with-password"), {
method: "POST",
diff --git a/packages/integrations/src/beszel/beszel-types.ts b/packages/integrations/src/beszel/beszel-types.ts
index e5c6566a5..e8504bb87 100644
--- a/packages/integrations/src/beszel/beszel-types.ts
+++ b/packages/integrations/src/beszel/beszel-types.ts
@@ -133,9 +133,9 @@ export interface BeszelSystemStats {
/** disk usage (%) */
dp: number;
/** disk read (MB/s) */
- dr: number;
+ dr?: number;
/** disk write (MB/s) */
- dw: number;
+ dw?: number;
/** disk read max (MB/s) */
drm?: number;
/** disk write max (MB/s) */
@@ -145,9 +145,9 @@ export interface BeszelSystemStats {
/** disk IOPS max [read, write] */
diom?: [number, number];
/** network sent — all interfaces (bytes/s) */
- ns: number;
+ ns?: number;
/** network received — all interfaces (bytes/s) */
- nr: number;
+ nr?: number;
/** bandwidth — public interfaces only (bytes/s) [sent, recv]. Prefer over ns/nr */
b?: [number, number];
/** network sent max (bytes/s) */
@@ -169,26 +169,26 @@ export interface BeszelSystemStats {
}
export interface BeszelExtraFsStats {
- /** total disk (bytes) */
+ /** total disk (GiB) */
d: number;
- /** disk used (bytes) */
+ /** disk used (GiB) */
du: number;
/** read (bytes/s) */
r: number;
/** write (bytes/s) */
w: number;
/** read max (bytes/s) */
- rm: number;
+ rm?: number;
/** write max (bytes/s) */
- wm: number;
+ wm?: number;
/** read (IOPS) */
- rb: number;
+ rb?: number;
/** write (IOPS) */
- wb: number;
+ wb?: number;
/** read max (IOPS) */
- rbm: number;
+ rbm?: number;
/** write max (IOPS) */
- wbm: number;
+ wbm?: number;
}
export interface BeszelGPUData {
@@ -343,6 +343,22 @@ export interface UpdateAlertInput {
min?: number;
}
+/**
+ * Live SSE subscription event types for real-time Beszel metrics.
+ * Discriminated union — clients accumulate each type into its own buffer.
+ */
+export interface LiveSystemStatsEvent {
+ type: "system_stats";
+ record: BeszelSystemStatsRecord;
+}
+
+export interface LiveContainerStatsEvent {
+ type: "container_stats";
+ record: BeszelContainerStatsRecord;
+}
+
+export type LiveStatsEvent = LiveSystemStatsEvent | LiveContainerStatsEvent;
+
export interface PocketBaseListResponse {
page: number;
perPage: number;
@@ -366,6 +382,8 @@ export interface BeszelSystemRow {
memory: number;
/** disk usage (%) */
disk: number;
+ /** extra filesystem usage (%) keyed by mount path */
+ extraFilesystems: Record;
/** GPU usage (%) */
gpu: number;
/** load average [1m, 5m, 15m] */
diff --git a/packages/integrations/src/beszel/pocketbase-realtime.ts b/packages/integrations/src/beszel/pocketbase-realtime.ts
new file mode 100644
index 000000000..e3330834b
--- /dev/null
+++ b/packages/integrations/src/beszel/pocketbase-realtime.ts
@@ -0,0 +1,65 @@
+export interface PocketBaseSseFrame {
+ event: string;
+ id?: string;
+ data: string;
+}
+
+export const createRealtimeMetricsTopic = (systemId: string) =>
+ `rt_metrics?options=${encodeURIComponent(JSON.stringify({ query: { system: systemId } }))}`;
+
+export class PocketBaseSseParser {
+ private buffer = "";
+ private event = "message";
+ private id: string | undefined;
+ private dataLines: string[] = [];
+
+ public push(chunk: string): PocketBaseSseFrame[] {
+ this.buffer += chunk;
+ const frames: PocketBaseSseFrame[] = [];
+ const lines = this.buffer.split(/\r?\n/);
+ this.buffer = lines.pop() ?? "";
+
+ for (const line of lines) {
+ const frame = this.processLine(line);
+ if (frame) frames.push(frame);
+ }
+
+ return frames;
+ }
+
+ public finish(): PocketBaseSseFrame[] {
+ const frames: PocketBaseSseFrame[] = [];
+ if (this.buffer !== "") {
+ const frame = this.processLine(this.buffer);
+ if (frame) frames.push(frame);
+ this.buffer = "";
+ }
+ const trailingFrame = this.dispatch();
+ if (trailingFrame) frames.push(trailingFrame);
+ return frames;
+ }
+
+ private processLine(line: string): PocketBaseSseFrame | null {
+ if (line === "") return this.dispatch();
+ if (line.startsWith(":")) return null;
+
+ const colonIndex = line.indexOf(":");
+ const field = colonIndex === -1 ? line : line.slice(0, colonIndex);
+ let value = colonIndex === -1 ? "" : line.slice(colonIndex + 1);
+ if (value.startsWith(" ")) value = value.slice(1);
+
+ if (field === "event") this.event = value;
+ else if (field === "id") this.id = value;
+ else if (field === "data") this.dataLines.push(value);
+ return null;
+ }
+
+ private dispatch(): PocketBaseSseFrame | null {
+ if (this.dataLines.length === 0 && this.event === "message" && this.id === undefined) return null;
+ const frame = { event: this.event, id: this.id, data: this.dataLines.join("\n") };
+ this.event = "message";
+ this.id = undefined;
+ this.dataLines = [];
+ return frame;
+ }
+}
diff --git a/packages/integrations/src/beszel/test/beszel-integration.spec.ts b/packages/integrations/src/beszel/test/beszel-integration.spec.ts
index a68e1dbc8..22465fd19 100644
--- a/packages/integrations/src/beszel/test/beszel-integration.spec.ts
+++ b/packages/integrations/src/beszel/test/beszel-integration.spec.ts
@@ -40,7 +40,124 @@ vi.mock("@homarr/core/infrastructure/certificates", () => ({
getAllTrustedCertificatesAsync: vi.fn().mockResolvedValue([]),
}));
-import { BeszelIntegration } from "../beszel-integration";
+import { BeszelIntegration, normalizeRealtimeSnapshot } from "../beszel-integration";
+import type { LiveStatsEvent } from "../beszel-types";
+import { createRealtimeMetricsTopic } from "../pocketbase-realtime";
+
+describe("normalizeRealtimeSnapshot", () => {
+ test("normalizes current Beszel host and container snapshots", () => {
+ const receivedAt = new Date("2026-07-11T13:51:30.217Z");
+ const events = normalizeRealtimeSnapshot(
+ {
+ stats: {
+ cpu: 18.07,
+ m: 31.09,
+ mu: 16.53,
+ mp: 53.18,
+ mb: 14.32,
+ s: 4,
+ su: 3.9,
+ d: 938.8,
+ du: 455.81,
+ dp: 51.15,
+ efs: { sda: { d: 1906.8, du: 1656.45, r: 25.63, w: 0 } },
+ },
+ container: [{ n: "homarr", c: 1.65, m: 650.56, b: [356066, 19702867] }],
+ },
+ "system-1",
+ receivedAt,
+ );
+
+ expect(events).toHaveLength(2);
+ expect(events[0]).toMatchObject({
+ type: "system_stats",
+ record: { system: "system-1", created: receivedAt.toISOString(), stats: { cpu: 18.07 } },
+ });
+ expect(events[1]).toMatchObject({
+ type: "container_stats",
+ record: { system: "system-1", stats: [{ n: "homarr", m: 650.56 }] },
+ });
+ });
+
+ test("ignores snapshots without metric data", () => {
+ expect(normalizeRealtimeSnapshot({}, "system-1")).toEqual([]);
+ });
+});
+
+describe("subscribeRealtimeMetrics", () => {
+ test("subscribes to Beszel rt_metrics and forwards one-second snapshots", async () => {
+ const originalFetch = globalThis.fetch;
+ const topic = createRealtimeMetricsTopic("system-1");
+ const subscriptionBodies: unknown[] = [];
+ const encoder = new TextEncoder();
+
+ globalThis.fetch = vi.fn(async (input: RequestInfo | URL, init?: RequestInit) => {
+ const url = String(input);
+ if (url.endsWith("/api/collections/users/auth-with-password")) {
+ return Response.json({ token: "test-token", record: { id: "user-1" } });
+ }
+ if (url.includes("/api/collections/systems/records")) {
+ return Response.json({
+ page: 1,
+ perPage: 500,
+ totalItems: 1,
+ totalPages: 1,
+ items: [
+ {
+ id: "system-1",
+ name: "Server",
+ host: "localhost",
+ port: "45876",
+ status: "up",
+ info: { cpu: 1, mp: 2, dp: 3, u: 4, v: "0.18.7" },
+ created: "2026-07-11T00:00:00.000Z",
+ updated: "2026-07-11T00:00:00.000Z",
+ },
+ ],
+ });
+ }
+ if (url.endsWith("/api/realtime") && init?.method === "POST") {
+ subscriptionBodies.push(JSON.parse(String(init.body)));
+ expect(new Headers(init.headers).get("Authorization")).toBe("test-token");
+ return new Response(null, { status: 204 });
+ }
+ if (url.endsWith("/api/realtime")) {
+ const snapshot = JSON.stringify({
+ stats: { cpu: 5, m: 10, mu: 4, mp: 40, mb: 1, s: 0, su: 0, d: 20, du: 8, dp: 40 },
+ container: [{ n: "homarr", c: 1, m: 256 }],
+ });
+ const stream = new ReadableStream({
+ start(controller) {
+ controller.enqueue(encoder.encode("event: PB_CONNECT\nid: client-1\ndata: {}\n\n"));
+ controller.enqueue(encoder.encode(`event: ${topic}\ndata: ${snapshot}\n\n`));
+ controller.close();
+ },
+ });
+ return new Response(stream, { headers: { "Content-Type": "text/event-stream" } });
+ }
+ throw new Error(`Unexpected request: ${init?.method ?? "GET"} ${url}`);
+ }) as typeof fetch;
+
+ try {
+ const integration = createBeszelIntegration();
+ const controller = new AbortController();
+ const events: LiveStatsEvent[] = [];
+ await integration.subscribeRealtimeMetrics(
+ "system-1",
+ (event) => {
+ events.push(event);
+ if (events.length === 2) controller.abort();
+ },
+ controller.signal,
+ );
+
+ expect(subscriptionBodies).toEqual([{ clientId: "client-1", subscriptions: [topic] }]);
+ expect(events.map((event) => event.type)).toEqual(["system_stats", "container_stats"]);
+ } finally {
+ globalThis.fetch = originalFetch;
+ }
+ });
+});
function createBeszelIntegration() {
return new BeszelIntegration({
diff --git a/packages/integrations/src/beszel/test/pocketbase-realtime.spec.ts b/packages/integrations/src/beszel/test/pocketbase-realtime.spec.ts
new file mode 100644
index 000000000..938278d95
--- /dev/null
+++ b/packages/integrations/src/beszel/test/pocketbase-realtime.spec.ts
@@ -0,0 +1,31 @@
+import { describe, expect, test } from "vitest";
+
+import { createRealtimeMetricsTopic, PocketBaseSseParser } from "../pocketbase-realtime";
+
+describe("PocketBaseSseParser", () => {
+ test("parses PB_CONNECT client IDs and CRLF-delimited frames split across chunks", () => {
+ const parser = new PocketBaseSseParser();
+ expect(parser.push("event: PB_CONNECT\r\nid: client-")).toEqual([]);
+ expect(parser.push("123\r\ndata: {}\r\n\r\n")).toEqual([{ event: "PB_CONNECT", id: "client-123", data: "{}" }]);
+ });
+
+ test("joins multiline data and ignores keepalive comments", () => {
+ const parser = new PocketBaseSseParser();
+ expect(parser.push(': keepalive\n\nevent: rt_metrics\ndata: {"stats":\ndata: {}}\n\n')).toEqual([
+ { event: "rt_metrics", id: undefined, data: '{"stats":\n{}}' },
+ ]);
+ });
+
+ test("flushes a trailing frame when the stream ends without a blank line", () => {
+ const parser = new PocketBaseSseParser();
+ expect(parser.push("event: rt_metrics\ndata: {}")).toEqual([]);
+ expect(parser.finish()).toEqual([{ event: "rt_metrics", id: undefined, data: "{}" }]);
+ });
+});
+
+describe("createRealtimeMetricsTopic", () => {
+ test("matches the PocketBase custom-topic options encoding used by Beszel", () => {
+ const topic = createRealtimeMetricsTopic("system-1");
+ expect(topic).toBe(`rt_metrics?options=${encodeURIComponent(JSON.stringify({ query: { system: "system-1" } }))}`);
+ });
+});
diff --git a/packages/integrations/src/dashdot/dashdot-integration.ts b/packages/integrations/src/dashdot/dashdot-integration.ts
index 3c835a302..5d18b4422 100644
--- a/packages/integrations/src/dashdot/dashdot-integration.ts
+++ b/packages/integrations/src/dashdot/dashdot-integration.ts
@@ -1,5 +1,3 @@
-import { humanFileSize } from "@homarr/common";
-
import "@homarr/redis";
import dayjs from "dayjs";
@@ -48,7 +46,7 @@ export class DashDotIntegration extends Integration implements ISystemHealthMoni
.map((storage, index) => ({
deviceName: `Storage ${index + 1}: (${storage.disks.map((disk) => disk.device).join(", ")})`,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
- used: humanFileSize(storageLoad[index]!),
+ used: `${storageLoad[index]!}`,
available: storageLoad[index] ? `${storage.size - storageLoad[index]}` : `${storage.size}`,
percentage: storageLoad[index] ? (storageLoad[index] / storage.size) * 100 : 0,
})),
diff --git a/packages/integrations/src/download-client/qbittorrent/qbittorrent-integration.ts b/packages/integrations/src/download-client/qbittorrent/qbittorrent-integration.ts
index a142fb1a3..edc071889 100644
--- a/packages/integrations/src/download-client/qbittorrent/qbittorrent-integration.ts
+++ b/packages/integrations/src/download-client/qbittorrent/qbittorrent-integration.ts
@@ -30,7 +30,7 @@ export class QBitTorrentIntegration extends Integration implements IDownloadClie
public async getClientJobsAndStatusAsync(input: { limit: number }): Promise {
const type = "torrent";
const client = await this.getClientAsync();
- const torrents = await client.listTorrents({ limit: input.limit });
+ const torrents = await client.listTorrents({ limit: input.limit, sort: "progress", reverse: false });
const rates = torrents.reduce(
({ down, up }, { dlspeed, upspeed }) => ({ down: down + dlspeed, up: up + upspeed }),
{ down: 0, up: 0 },
@@ -99,11 +99,14 @@ export class QBitTorrentIntegration extends Integration implements IDownloadClie
password: this.getSecretValue("password"),
};
- return new QBittorrent({
+ const client = new QBittorrent({
...credentials,
baseUrl: this.url("/").toString(),
dispatcher: dispatcher ?? (await createCertificateAgentAsync()),
});
+ // Populate version state so the library uses correct v5 endpoints (stop/start vs pause/resume)
+ await client.getAppVersion();
+ return client;
}
private static getTorrentState(state: string): DownloadClientItem["state"] {
@@ -125,6 +128,8 @@ export class QBitTorrentIntegration extends Integration implements IDownloadClie
return "seeding";
case "pausedDL":
case "pausedUP":
+ case "stoppedDL":
+ case "stoppedUP":
return "paused";
case "stalledDL":
return "stalled";
diff --git a/packages/integrations/src/gluetun/gluetun-types.ts b/packages/integrations/src/gluetun/gluetun-types.ts
index 6886d72a7..d9fdc626a 100644
--- a/packages/integrations/src/gluetun/gluetun-types.ts
+++ b/packages/integrations/src/gluetun/gluetun-types.ts
@@ -46,7 +46,7 @@ const gluetunServerSelectionSchema = z.object({
isps: z.array(z.string()).nullable(),
names: z.array(z.string()).nullable(),
numbers: z.array(z.number()).nullable(),
- hostnames: z.array(z.string()),
+ hostnames: z.array(z.string()).nullable(),
owned_only: z.boolean(),
free_only: z.boolean(),
premium_only: z.boolean(),
@@ -65,7 +65,7 @@ const gluetunPortForwardingSchema = z.object({
status_file_path: z.string(),
up_command: z.string(),
down_command: z.string(),
- listening_port: z.number(),
+ listening_port: z.union([z.number(), z.array(z.number())]),
username: z.string(),
password: z.string(),
});
@@ -98,7 +98,7 @@ const gluetunOpenvpnSettingsSchema = z.object({
const gluetunWireguardSettingsSchema = z.object({
private_key: z.string(),
pre_shared_key: z.string(),
- addresses: z.array(z.string()),
+ addresses: z.array(z.string()).nullable(),
allowed_ips: z.array(z.string()),
interface: z.string(),
persistent_keep_alive_interval: z.number(),
diff --git a/packages/integrations/src/gluetun/test/gluetun-integration.spec.ts b/packages/integrations/src/gluetun/test/gluetun-integration.spec.ts
index 1f84005f3..0ff870fad 100644
--- a/packages/integrations/src/gluetun/test/gluetun-integration.spec.ts
+++ b/packages/integrations/src/gluetun/test/gluetun-integration.spec.ts
@@ -124,6 +124,126 @@ const VPN_SETTINGS_PAYLOAD = {
},
};
+const ALT_VPN_SETTINGS_PAYLOAD = {
+ type: "openvpn",
+ provider: {
+ name: "custom",
+ server_selection: {
+ vpn: "openvpn",
+ countries: null,
+ categories: null,
+ regions: null,
+ cities: null,
+ isps: null,
+ names: null,
+ numbers: null,
+ hostnames: null,
+ owned_only: false,
+ free_only: false,
+ premium_only: false,
+ stream_only: false,
+ multi_hop_only: false,
+ port_forward_only: false,
+ secure_core_only: false,
+ tor_only: false,
+ openvpn: {
+ config_file_path: "/gluetun/custom.conf",
+ protocol: "tcp",
+ endpoint_ip: "0.0.0.0",
+ custom_port: 0,
+ pia_encryption_preset: "",
+ },
+ wireguard: {
+ endpoint_ip: "0.0.0.0",
+ endpoint_port: 0,
+ public_key: "",
+ },
+ },
+ port_forwarding: {
+ enabled: false,
+ provider: "",
+ status_file_path: "/tmp/gluetun/forwarded_port",
+ up_command: "",
+ down_command: "",
+ listening_port: [0],
+ ports_count: 0,
+ username: "",
+ password: "",
+ },
+ },
+ amneziawg: {
+ wireguard: {
+ private_key: "",
+ pre_shared_key: "",
+ addresses: null,
+ allowed_ips: ["0.0.0.0/0", "::/0"],
+ interface: "tun0",
+ persistent_keep_alive_interval: 0,
+ mtu: 0,
+ implementation: "userspace",
+ },
+ junk_packet_count: 0,
+ junk_packet_min: 0,
+ junk_packet_max: 0,
+ padding_s1: 0,
+ padding_s2: 0,
+ padding_s3: 0,
+ padding_s4: 0,
+ header_h1: "",
+ header_h2: "",
+ header_h3: "",
+ header_h4: "",
+ init_packet_i1: "",
+ init_packet_i2: "",
+ init_packet_i3: "",
+ init_packet_i4: "",
+ init_packet_i5: "",
+ },
+ openvpn: {
+ version: "2.6",
+ user: "",
+ password: "",
+ config_file_path: "/gluetun/custom.conf",
+ ciphers: null,
+ auth: "",
+ cert: "",
+ key: "",
+ encrypted_key: "",
+ key_passphrase: "",
+ pia_encryption_preset: "",
+ mssfix: 0,
+ interface: "tun0",
+ process_user: "nonrootuser",
+ verbosity: 1,
+ flags: null,
+ },
+ wireguard: {
+ private_key: "",
+ pre_shared_key: "",
+ addresses: null,
+ allowed_ips: ["0.0.0.0/0", "::/0"],
+ interface: "tun0",
+ persistent_keep_alive_interval: 0,
+ mtu: 0,
+ implementation: "auto",
+ },
+ pmtud: {
+ icmp_addresses: ["1.1.1.1", "8.8.8.8"],
+ tcp_addresses: [
+ "1.1.1.1:443",
+ "8.8.8.8:443",
+ "1.1.1.1:53",
+ "8.8.8.8:53",
+ "[2606:4700:4700::1111]:53",
+ "[2001:4860:4860::8888]:53",
+ "[2606:4700:4700::1111]:443",
+ "[2001:4860:4860::8888]:443",
+ ],
+ },
+ up_command: "",
+ down_command: "",
+};
+
const jsonResponse = (body: unknown, init: ResponseInit = { status: 200 }): FetchResponse =>
new Response(JSON.stringify(body), {
...init,
@@ -368,4 +488,54 @@ describe("gluetun schemas", () => {
test("vpn settings schema rejects a non-string type", () => {
expect(() => gluetunVpnSettingsSchema.parse({ ...VPN_SETTINGS_PAYLOAD, type: 1 })).toThrow();
});
+
+ test("vpn settings schema parses the live gluetun-latest custom/OpenVPN payload", () => {
+ const parsed = gluetunVpnSettingsSchema.parse(ALT_VPN_SETTINGS_PAYLOAD);
+ expect(parsed.type).toBe("openvpn");
+ expect(parsed.provider.name).toBe("custom");
+ });
+
+ test("vpn settings schema accepts null server-selection hostnames", () => {
+ const payload = {
+ ...VPN_SETTINGS_PAYLOAD,
+ provider: {
+ ...VPN_SETTINGS_PAYLOAD.provider,
+ server_selection: {
+ ...VPN_SETTINGS_PAYLOAD.provider.server_selection,
+ hostnames: null,
+ },
+ },
+ };
+
+ expect(() => gluetunVpnSettingsSchema.parse(payload)).not.toThrow();
+ });
+
+ test("vpn settings schema accepts listening_port as a number or a list", () => {
+ const asList = {
+ ...VPN_SETTINGS_PAYLOAD,
+ provider: {
+ ...VPN_SETTINGS_PAYLOAD.provider,
+ port_forwarding: {
+ ...VPN_SETTINGS_PAYLOAD.provider.port_forwarding,
+ listening_port: [0],
+ },
+ },
+ };
+
+ // The happy-path fixture already exercises the scalar form (listening_port: 0).
+ expect(() => gluetunVpnSettingsSchema.parse(VPN_SETTINGS_PAYLOAD)).not.toThrow();
+ expect(() => gluetunVpnSettingsSchema.parse(asList)).not.toThrow();
+ });
+
+ test("vpn settings schema accepts null wireguard addresses", () => {
+ const payload = {
+ ...VPN_SETTINGS_PAYLOAD,
+ wireguard: {
+ ...VPN_SETTINGS_PAYLOAD.wireguard,
+ addresses: null,
+ },
+ };
+
+ expect(() => gluetunVpnSettingsSchema.parse(payload)).not.toThrow();
+ });
});
diff --git a/packages/integrations/src/gotify/gotify-integration.ts b/packages/integrations/src/gotify/gotify-integration.ts
index 1d0f5eb8c..829e7abcd 100644
--- a/packages/integrations/src/gotify/gotify-integration.ts
+++ b/packages/integrations/src/gotify/gotify-integration.ts
@@ -1,12 +1,13 @@
import { ResponseError } from "@homarr/common/server";
import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+import { ImageProxy } from "@homarr/image-proxy";
import { Integration } from "../base/integration";
import type { IntegrationTestingInput } from "../base/integration";
import type { TestingResult } from "../base/test-connection/test-connection-service";
import type { Notification } from "../interfaces/notifications/notification-types";
import type { INotificationsIntegration } from "../interfaces/notifications/notifications-integration";
-import { gotifyMessagesResponseSchema } from "./gotify-schema";
+import { gotifyApplicationsResponseSchema, gotifyMessagesResponseSchema } from "./gotify-schema";
export class GotifyIntegration extends Integration implements INotificationsIntegration {
public async testingAsync(input: IntegrationTestingInput): Promise {
@@ -21,23 +22,90 @@ export class GotifyIntegration extends Integration implements INotificationsInte
return { Authorization: `Basic ${credentials}` };
}
+ private getMessagesUrl(applicationId: number) {
+ const url = this.externalUrl("/");
+ url.hash = `/messages/${applicationId}`;
+ return url.toString();
+ }
+
+ private async getApplicationsByIdAsync(): Promise> {
+ try {
+ const response = await fetchWithTrustedCertificatesAsync(this.url("/application"), {
+ headers: this.getHeaders(),
+ });
+ if (!response.ok) throw new ResponseError(response);
+
+ const result = await gotifyApplicationsResponseSchema.safeParseAsync(await response.json());
+ if (!result.success) return new Map();
+
+ return new Map(result.data.map((application) => [application.id, application]));
+ } catch {
+ return new Map();
+ }
+ }
+
+ private async getApplicationIconUrlAsync(
+ imageProxy: ImageProxy,
+ imagePath: string | null | undefined,
+ ): Promise {
+ const trimmedImagePath = imagePath?.trim();
+ if (!trimmedImagePath) return undefined;
+
+ try {
+ const imageUrl = this.getApplicationImageUrl(trimmedImagePath);
+ return await imageProxy.createImageAsync(imageUrl, this.getHeaders());
+ } catch {
+ return undefined;
+ }
+ }
+
+ private getApplicationImageUrl(imagePath: string) {
+ try {
+ return new URL(imagePath).toString();
+ } catch {
+ const path = imagePath.startsWith("/") ? imagePath : `/${imagePath}`;
+ return this.url(path as `/${string}`).toString();
+ }
+ }
+
public async getNotificationsAsync(): Promise {
- const url = this.url("/message", { limit: 100 });
- const response = await fetchWithTrustedCertificatesAsync(url, { headers: this.getHeaders() });
+ const [messagesResponse, applicationsById] = await Promise.all([
+ fetchWithTrustedCertificatesAsync(this.url("/message", { limit: 100 }), { headers: this.getHeaders() }),
+ this.getApplicationsByIdAsync(),
+ ]);
- if (!response.ok) throw new ResponseError(response);
+ if (!messagesResponse.ok) throw new ResponseError(messagesResponse);
- const result = await gotifyMessagesResponseSchema.safeParseAsync(await response.json());
- if (!result.success) throw new Error(`Failed to parse Gotify response: ${result.error.message}`);
- const parsed = result.data;
+ const messagesResult = await gotifyMessagesResponseSchema.safeParseAsync(await messagesResponse.json());
+ if (!messagesResult.success) throw new Error(`Failed to parse Gotify response: ${messagesResult.error.message}`);
- return parsed.messages.map(
- (message): Notification => ({
+ const imageProxy = new ImageProxy();
+ const iconUrlsByApplicationId = new Map();
+ await Promise.all(
+ [...applicationsById.entries()].map(async ([applicationId, application]) => {
+ iconUrlsByApplicationId.set(
+ applicationId,
+ await this.getApplicationIconUrlAsync(imageProxy, application.image),
+ );
+ }),
+ );
+
+ return messagesResult.data.messages.map((message): Notification => {
+ const application = applicationsById.get(message.appid);
+
+ return {
id: String(message.id),
time: new Date(message.date),
title: message.title,
body: message.message,
- }),
- );
+ href: this.getMessagesUrl(message.appid),
+ source: application
+ ? {
+ name: application.name,
+ iconUrl: iconUrlsByApplicationId.get(message.appid),
+ }
+ : undefined,
+ };
+ });
}
}
diff --git a/packages/integrations/src/gotify/gotify-schema.ts b/packages/integrations/src/gotify/gotify-schema.ts
index 5c89774ec..ca92535b0 100644
--- a/packages/integrations/src/gotify/gotify-schema.ts
+++ b/packages/integrations/src/gotify/gotify-schema.ts
@@ -3,6 +3,7 @@ import { z } from "zod/v4";
// See: https://gotify.net/api-docs#/message/getMessages
export const gotifyMessageSchema = z.object({
id: z.number(),
+ appid: z.number(),
date: z.string(),
title: z.string(),
message: z.string(),
@@ -12,3 +13,11 @@ export const gotifyMessageSchema = z.object({
export const gotifyMessagesResponseSchema = z.object({
messages: z.array(gotifyMessageSchema),
});
+
+export const gotifyApplicationSchema = z.object({
+ id: z.number(),
+ name: z.string(),
+ image: z.string().nullable().optional(),
+});
+
+export const gotifyApplicationsResponseSchema = z.array(gotifyApplicationSchema);
diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts
index 8e20bf745..f172cec36 100644
--- a/packages/integrations/src/index.ts
+++ b/packages/integrations/src/index.ts
@@ -29,6 +29,7 @@ export { PiHoleIntegrationV6 } from "./pi-hole/v6/pi-hole-integration-v6";
export { PlexIntegration } from "./plex/plex-integration";
export { ProwlarrIntegration } from "./prowlarr/prowlarr-integration";
export { TrueNasIntegration } from "./truenas/truenas-integration";
+export { SynologyIntegration } from "./synology/synology-integration";
export { UnraidIntegration } from "./unraid/unraid-integration";
export { OPNsenseIntegration } from "./opnsense/opnsense-integration";
export { ICalIntegration } from "./ical/ical-integration";
@@ -41,6 +42,8 @@ export { NavidromeIntegration } from "./navidrome/navidrome-integration";
export { UptimeKumaIntegration } from "./uptime-kuma/uptime-kuma-integration";
export { UmamiIntegration } from "./umami/umami-integration";
export { PeaNutIntegration } from "./peanut/peanut-integration";
+export { BazarrIntegration } from "./bazarr/bazarr-integration";
+export { TraefikIntegration } from "./traefik/traefik-integration";
// Types
export type { IntegrationInput } from "./base/integration";
@@ -67,6 +70,7 @@ export type {
export type { Notification } from "./interfaces/notifications/notification-types";
export type { ImmichServerStats, ImmichAlbum, ImmichAsset } from "./immich/immich-integration";
export type { PaperlessNgxStats } from "./paperless-ngx/paperless-ngx-types";
+export type { PatchMonStats, PatchMonOsDistributionEntry } from "./patchmon/patchmon-types";
export type {
AnchorNote,
AnchorNotePermission,
@@ -80,6 +84,8 @@ export type { AudiobookshelfDashboardData } from "./audiobookshelf/audiobookshel
export type { NavidromeDashboardData } from "./navidrome/navidrome-types";
export type { UptimeKumaDashboardData } from "./uptime-kuma/uptime-kuma-types";
export type { UmamiVisitorStats } from "./umami/umami-types";
+export type { BazarrBadges } from "./bazarr/bazarr-types";
+export type { TraefikDashboardData, TraefikProtocolSummary, TraefikResourceSummary } from "./traefik/traefik-types";
export type {
ArchiveTeamWarriorBandwidth,
ArchiveTeamWarriorItem,
diff --git a/packages/integrations/src/interfaces/media-organizer/media-organizer-integration.ts b/packages/integrations/src/interfaces/media-organizer/media-organizer-integration.ts
new file mode 100644
index 000000000..daeae93b4
--- /dev/null
+++ b/packages/integrations/src/interfaces/media-organizer/media-organizer-integration.ts
@@ -0,0 +1,6 @@
+import type { MissingMediaItem, QueuedMediaItem } from "./media-organizer-types";
+
+export interface IMediaOrganizerIntegration {
+ getMissingAsync(pageSize?: number): Promise<{ items: MissingMediaItem[]; totalCount: number }>;
+ getMediaQueueAsync(pageSize?: number): Promise<{ items: QueuedMediaItem[]; totalCount: number }>;
+}
diff --git a/packages/integrations/src/interfaces/media-organizer/media-organizer-types.ts b/packages/integrations/src/interfaces/media-organizer/media-organizer-types.ts
new file mode 100644
index 000000000..fff59e38a
--- /dev/null
+++ b/packages/integrations/src/interfaces/media-organizer/media-organizer-types.ts
@@ -0,0 +1,26 @@
+export interface MissingMediaItem {
+ id: number;
+ title: string;
+ type: "movie" | "episode";
+ year?: number;
+ seasonNumber?: number;
+ episodeNumber?: number;
+ seriesTitle?: string;
+ imageUrl?: string | null;
+ link: string;
+}
+
+export interface QueuedMediaItem {
+ id: number;
+ title: string;
+ type: "movie" | "episode";
+ status: string;
+ timeLeft: string | null;
+ percentComplete: number;
+ year?: number;
+ seasonNumber?: number;
+ episodeNumber?: number;
+ seriesTitle?: string;
+ imageUrl?: string | null;
+ link: string;
+}
diff --git a/packages/integrations/src/interfaces/notifications/notification-types.ts b/packages/integrations/src/interfaces/notifications/notification-types.ts
index 8f6944944..252633e9e 100644
--- a/packages/integrations/src/interfaces/notifications/notification-types.ts
+++ b/packages/integrations/src/interfaces/notifications/notification-types.ts
@@ -3,4 +3,9 @@ export interface Notification {
time: Date;
title: string;
body: string;
+ href?: string;
+ source?: {
+ name: string;
+ iconUrl?: string;
+ };
}
diff --git a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts
index b557f7b77..aa116d1e5 100644
--- a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts
+++ b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts
@@ -10,11 +10,13 @@ import type { TestingResult } from "../../base/test-connection/test-connection-s
import type { ICalendarIntegration } from "../../interfaces/calendar/calendar-integration";
import type { CalendarEvent, CalendarLink } from "../../interfaces/calendar/calendar-types";
import { radarrReleaseTypes } from "../../interfaces/calendar/calendar-types";
+import type { IMediaOrganizerIntegration } from "../../interfaces/media-organizer/media-organizer-integration";
+import type { MissingMediaItem, QueuedMediaItem } from "../../interfaces/media-organizer/media-organizer-types";
import { mediaOrganizerPriorities } from "../media-organizer";
const logger = createLogger({ module: "radarrIntegration" });
-export class RadarrIntegration extends Integration implements ICalendarIntegration {
+export class RadarrIntegration extends Integration implements ICalendarIntegration, IMediaOrganizerIntegration {
/**
* Gets the events in the Radarr calendar between two dates.
* @param start The start date
@@ -111,6 +113,79 @@ export class RadarrIntegration extends Integration implements ICalendarIntegrati
return bestImage.remoteUrl;
};
+ async getMissingAsync(pageSize = 10): Promise<{ items: MissingMediaItem[]; totalCount: number }> {
+ const url = this.url("/api/v3/wanted/missing", {
+ page: 1,
+ pageSize,
+ sortKey: "title",
+ sortDirection: "ascending",
+ });
+
+ const response = await fetchWithTrustedCertificatesAsync(url, {
+ headers: { "X-Api-Key": super.getSecretValue("apiKey") },
+ });
+ const data = await z
+ .object({
+ totalRecords: z.number(),
+ records: z.array(radarrMissingMovieSchema),
+ })
+ .parseAsync(await response.json());
+
+ return {
+ totalCount: data.totalRecords,
+ items: data.records.map(
+ (movie): MissingMediaItem => ({
+ id: movie.id,
+ title: movie.title,
+ type: "movie",
+ year: movie.year,
+ imageUrl: movie.images.find((img) => img.coverType === "poster")?.remoteUrl ?? null,
+ link: this.externalUrl(`/movie/${movie.titleSlug}`).toString(),
+ }),
+ ),
+ };
+ }
+
+ async getMediaQueueAsync(pageSize = 10): Promise<{ items: QueuedMediaItem[]; totalCount: number }> {
+ const url = this.url("/api/v3/queue", {
+ page: 1,
+ pageSize,
+ includeMovie: true,
+ });
+
+ const response = await fetchWithTrustedCertificatesAsync(url, {
+ headers: { "X-Api-Key": super.getSecretValue("apiKey") },
+ });
+ const data = await z
+ .object({
+ totalRecords: z.number(),
+ records: z.array(radarrQueueItemSchema),
+ })
+ .parseAsync(await response.json());
+
+ return {
+ totalCount: data.totalRecords,
+ items: data.records.map((item): QueuedMediaItem => {
+ const sizeLeft = item.sizeleft ?? 0;
+ const sizeTotal = item.size ?? 0;
+ const percentComplete = sizeTotal > 0 ? Math.round(((sizeTotal - sizeLeft) / sizeTotal) * 100) : 0;
+ return {
+ id: item.id,
+ title: item.movie?.title ?? item.title,
+ type: "movie",
+ status: item.status,
+ timeLeft: item.timeleft ?? null,
+ percentComplete,
+ year: item.movie?.year,
+ imageUrl: item.movie?.images.find((img) => img.coverType === "poster")?.remoteUrl ?? null,
+ link: item.movie?.titleSlug
+ ? this.externalUrl(`/movie/${item.movie.titleSlug}`).toString()
+ : this.externalUrl("/activity/queue").toString(),
+ };
+ }),
+ };
+ }
+
protected async testingAsync(input: IntegrationTestingInput): Promise {
const response = await input.fetchAsync(this.url("/api"), {
headers: { "X-Api-Key": super.getSecretValue("apiKey") },
@@ -131,6 +206,41 @@ const radarrCalendarEventImageSchema = z.array(
}),
);
+const radarrMissingMovieSchema = z.object({
+ id: z.number(),
+ title: z.string(),
+ year: z.number().optional(),
+ titleSlug: z.string(),
+ images: z.array(
+ z.object({
+ coverType: z.string(),
+ remoteUrl: z.string().url(),
+ }),
+ ),
+});
+
+const radarrQueueItemSchema = z.object({
+ id: z.number(),
+ title: z.string(),
+ status: z.string(),
+ timeleft: z.string().optional(),
+ size: z.number().optional(),
+ sizeleft: z.number().optional(),
+ movie: z
+ .object({
+ title: z.string(),
+ year: z.number().optional(),
+ titleSlug: z.string(),
+ images: z.array(
+ z.object({
+ coverType: z.string(),
+ remoteUrl: z.string().url(),
+ }),
+ ),
+ })
+ .optional(),
+});
+
const radarrCalendarEventSchema = z.object({
title: z.string(),
originalTitle: z.string(),
diff --git a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts
index 17826e2de..43810ae19 100644
--- a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts
+++ b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts
@@ -9,11 +9,13 @@ import { TestConnectionError } from "../../base/test-connection/test-connection-
import type { TestingResult } from "../../base/test-connection/test-connection-service";
import type { ICalendarIntegration } from "../../interfaces/calendar/calendar-integration";
import type { CalendarEvent, CalendarLink } from "../../interfaces/calendar/calendar-types";
+import type { IMediaOrganizerIntegration } from "../../interfaces/media-organizer/media-organizer-integration";
+import type { MissingMediaItem, QueuedMediaItem } from "../../interfaces/media-organizer/media-organizer-types";
import { mediaOrganizerPriorities } from "../media-organizer";
const logger = createLogger({ module: "sonarrIntegration" });
-export class SonarrIntegration extends Integration implements ICalendarIntegration {
+export class SonarrIntegration extends Integration implements ICalendarIntegration, IMediaOrganizerIntegration {
/**
* Gets the events in the Sonarr calendar between two dates.
* @param start The start date
@@ -107,6 +109,88 @@ export class SonarrIntegration extends Integration implements ICalendarIntegrati
return bestImage.remoteUrl;
};
+ async getMissingAsync(pageSize = 10): Promise<{ items: MissingMediaItem[]; totalCount: number }> {
+ const url = this.url("/api/v3/wanted/missing", {
+ page: 1,
+ pageSize,
+ sortKey: "airDateUtc",
+ sortDirection: "ascending",
+ includeSeries: true,
+ });
+
+ const response = await fetchWithTrustedCertificatesAsync(url, {
+ headers: { "X-Api-Key": super.getSecretValue("apiKey") },
+ });
+ const data = await z
+ .object({
+ totalRecords: z.number(),
+ records: z.array(sonarrMissingEpisodeSchema),
+ })
+ .parseAsync(await response.json());
+
+ return {
+ totalCount: data.totalRecords,
+ items: data.records.map(
+ (episode): MissingMediaItem => ({
+ id: episode.id,
+ title: episode.title,
+ type: "episode",
+ seasonNumber: episode.seasonNumber,
+ episodeNumber: episode.episodeNumber,
+ seriesTitle: episode.series?.title,
+ year: episode.series?.year,
+ imageUrl: episode.series?.images.find((img) => img.coverType === "poster")?.remoteUrl ?? null,
+ link: episode.series?.titleSlug
+ ? this.externalUrl(`/series/${episode.series.titleSlug}`).toString()
+ : this.externalUrl("/wanted/missing").toString(),
+ }),
+ ),
+ };
+ }
+
+ async getMediaQueueAsync(pageSize = 10): Promise<{ items: QueuedMediaItem[]; totalCount: number }> {
+ const url = this.url("/api/v3/queue", {
+ page: 1,
+ pageSize,
+ includeSeries: true,
+ includeEpisode: true,
+ });
+
+ const response = await fetchWithTrustedCertificatesAsync(url, {
+ headers: { "X-Api-Key": super.getSecretValue("apiKey") },
+ });
+ const data = await z
+ .object({
+ totalRecords: z.number(),
+ records: z.array(sonarrQueueItemSchema),
+ })
+ .parseAsync(await response.json());
+
+ return {
+ totalCount: data.totalRecords,
+ items: data.records.map((item): QueuedMediaItem => {
+ const sizeLeft = item.sizeleft ?? 0;
+ const sizeTotal = item.size ?? 0;
+ const percentComplete = sizeTotal > 0 ? Math.round(((sizeTotal - sizeLeft) / sizeTotal) * 100) : 0;
+ return {
+ id: item.id,
+ title: item.episode?.title ?? item.title,
+ type: "episode",
+ status: item.status,
+ timeLeft: item.timeleft ?? null,
+ percentComplete,
+ seasonNumber: item.episode?.seasonNumber,
+ episodeNumber: item.episode?.episodeNumber,
+ seriesTitle: item.series?.title,
+ imageUrl: item.series?.images.find((img) => img.coverType === "poster")?.remoteUrl ?? null,
+ link: item.series?.titleSlug
+ ? this.externalUrl(`/series/${item.series.titleSlug}`).toString()
+ : this.externalUrl("/activity/queue").toString(),
+ };
+ }),
+ };
+ }
+
protected async testingAsync(input: IntegrationTestingInput): Promise {
const response = await input.fetchAsync(this.url("/api"), {
headers: { "X-Api-Key": super.getSecretValue("apiKey") },
@@ -119,6 +203,54 @@ export class SonarrIntegration extends Integration implements ICalendarIntegrati
}
}
+const sonarrMissingEpisodeSchema = z.object({
+ id: z.number(),
+ title: z.string(),
+ seasonNumber: z.number(),
+ episodeNumber: z.number(),
+ series: z
+ .object({
+ title: z.string(),
+ year: z.number().optional(),
+ titleSlug: z.string(),
+ images: z.array(
+ z.object({
+ coverType: z.string(),
+ remoteUrl: z.string().url(),
+ }),
+ ),
+ })
+ .optional(),
+});
+
+const sonarrQueueItemSchema = z.object({
+ id: z.number(),
+ title: z.string(),
+ status: z.string(),
+ timeleft: z.string().optional(),
+ size: z.number().optional(),
+ sizeleft: z.number().optional(),
+ series: z
+ .object({
+ title: z.string(),
+ titleSlug: z.string(),
+ images: z.array(
+ z.object({
+ coverType: z.string(),
+ remoteUrl: z.string().url(),
+ }),
+ ),
+ })
+ .optional(),
+ episode: z
+ .object({
+ title: z.string(),
+ seasonNumber: z.number(),
+ episodeNumber: z.number(),
+ })
+ .optional(),
+});
+
const sonarrCalendarEventImageSchema = z.array(
z.object({
// See https://github.com/Sonarr/Sonarr/blob/9e5ebdc6245d4714776b53127a1e6b63c25fbcb9/src/NzbDrone.Core/MediaCover/MediaCover.cs#L5-L14
diff --git a/packages/integrations/src/mock/data/beszel.ts b/packages/integrations/src/mock/data/beszel.ts
index c6998aa84..f79de9d99 100644
--- a/packages/integrations/src/mock/data/beszel.ts
+++ b/packages/integrations/src/mock/data/beszel.ts
@@ -7,6 +7,7 @@ import type {
BeszelSystemDetails,
BeszelSystemStats,
BeszelSystemStatsRecord,
+ LiveStatsEvent,
} from "../../beszel/beszel-types";
const GB = 1024 * 1024 * 1024;
@@ -225,6 +226,7 @@ export class BeszelMockService {
u: randInt(86400, 2_000_000),
mp: clamp(sys.baseMem + rand(-5, 5), 0, 100),
dp: clamp(sys.baseDisk + rand(-2, 2), 0, 100),
+ efs: i === 0 ? { "/mnt/sda": 86.9, "/mnt/sdb": 70.5, "/mnt/sdc": 42.7 } : undefined,
bb: rand(200, 3000) * KB,
v: "0.8.2",
g: i === 3 ? rand(15, 45) : 0,
@@ -332,7 +334,7 @@ export class BeszelMockService {
public async subscribeRealtimeMetrics(
systemId: string,
- onMessage: (data: { stats: BeszelSystemStatsRecord; containerStats: BeszelContainerStatsRecord | null }) => void,
+ onMessage: (event: LiveStatsEvent) => void,
signal: AbortSignal,
): Promise {
const sys = resolveSystem(systemId);
@@ -348,7 +350,7 @@ export class BeszelMockService {
created: new Date().toISOString(),
updated: new Date().toISOString(),
};
- onMessage({ stats: record, containerStats: null });
+ onMessage({ type: "system_stats", record });
};
if (signal.aborted) return;
await new Promise((resolve) => {
diff --git a/packages/integrations/src/mock/data/media-organizer.ts b/packages/integrations/src/mock/data/media-organizer.ts
new file mode 100644
index 000000000..1c12d1621
--- /dev/null
+++ b/packages/integrations/src/mock/data/media-organizer.ts
@@ -0,0 +1,116 @@
+import type { IMediaOrganizerIntegration } from "../../interfaces/media-organizer/media-organizer-integration";
+import type { MissingMediaItem, QueuedMediaItem } from "../../interfaces/media-organizer/media-organizer-types";
+
+const missingItems: MissingMediaItem[] = [
+ {
+ id: 1,
+ title: "Dune: Part Two",
+ type: "movie",
+ year: 2024,
+ imageUrl: "https://image.tmdb.org/t/p/w300/1pdfLvkbY9ohJlCjQH2CZjjYVvJ.jpg",
+ link: "https://www.imdb.com/title/tt15239678/",
+ },
+ {
+ id: 2,
+ title: "The Batman Part II",
+ type: "movie",
+ year: 2026,
+ imageUrl: "https://image.tmdb.org/t/p/w300/74xTEgt7R36Fpooo50r9T25onhq.jpg",
+ link: "https://www.imdb.com/title/tt7126948/",
+ },
+ {
+ id: 3,
+ title: "The Last of Us",
+ type: "episode",
+ seasonNumber: 2,
+ episodeNumber: 5,
+ seriesTitle: "The Last of Us",
+ year: 2025,
+ imageUrl: "https://image.tmdb.org/t/p/w300/uKvVjHNqB5VmOrdxqAt2F7J78ED.jpg",
+ link: "https://www.imdb.com/title/tt3581920/",
+ },
+ {
+ id: 4,
+ title: "Andor",
+ type: "episode",
+ seasonNumber: 2,
+ episodeNumber: 3,
+ seriesTitle: "Andor",
+ year: 2025,
+ imageUrl: "https://image.tmdb.org/t/p/w300/59SVNwLfoMnZPPB6ukW6dlPxAdI.jpg",
+ link: "https://www.imdb.com/title/tt9253284/",
+ },
+ {
+ id: 5,
+ title: "Gladiator II",
+ type: "movie",
+ year: 2024,
+ imageUrl: "https://image.tmdb.org/t/p/w300/2cxhvwyEwRlysAmRH4iodkvo0z5.jpg",
+ link: "https://www.imdb.com/title/tt9218128/",
+ },
+];
+
+const queuedItems: QueuedMediaItem[] = [
+ {
+ id: 101,
+ title: "Oppenheimer",
+ type: "movie",
+ status: "downloading",
+ timeLeft: "1h 23m",
+ percentComplete: 62,
+ imageUrl: "https://image.tmdb.org/t/p/w300/8Gxv8gSFCU0XGDykEGv7zR1n2ua.jpg",
+ link: "https://www.imdb.com/title/tt15398776/",
+ },
+ {
+ id: 102,
+ title: "Shogun",
+ type: "episode",
+ seasonNumber: 1,
+ episodeNumber: 8,
+ seriesTitle: "Shogun",
+ status: "downloading",
+ timeLeft: "47m",
+ percentComplete: 81,
+ imageUrl: "https://image.tmdb.org/t/p/w300/7O4iVfOMQmdCSxhOg1WnzG1AgYT.jpg",
+ link: "https://www.imdb.com/title/tt2098771/",
+ },
+ {
+ id: 103,
+ title: "The Substance",
+ type: "movie",
+ status: "queued",
+ timeLeft: null,
+ percentComplete: 0,
+ imageUrl: "https://image.tmdb.org/t/p/w300/lqoMzCcZYEFK729d6qzt349fB4o.jpg",
+ link: "https://www.imdb.com/title/tt17526714/",
+ },
+ {
+ id: 104,
+ title: "House of the Dragon",
+ type: "episode",
+ seasonNumber: 2,
+ episodeNumber: 7,
+ seriesTitle: "House of the Dragon",
+ status: "importing",
+ timeLeft: "3m",
+ percentComplete: 99,
+ imageUrl: "https://image.tmdb.org/t/p/w300/z2yahl2uefxDCl0nogcRBstwruJ.jpg",
+ link: "https://www.imdb.com/title/tt11198330/",
+ },
+];
+
+export class MediaOrganizerMockService implements IMediaOrganizerIntegration {
+ async getMissingAsync(pageSize = 10) {
+ return {
+ items: missingItems.slice(0, pageSize),
+ totalCount: missingItems.length,
+ };
+ }
+
+ async getMediaQueueAsync(pageSize = 10) {
+ return {
+ items: queuedItems.slice(0, pageSize),
+ totalCount: queuedItems.length,
+ };
+ }
+}
diff --git a/packages/integrations/src/mock/mock-integration.ts b/packages/integrations/src/mock/mock-integration.ts
index d7eb412cf..90c3905da 100644
--- a/packages/integrations/src/mock/mock-integration.ts
+++ b/packages/integrations/src/mock/mock-integration.ts
@@ -9,6 +9,7 @@ import type {
ISystemHealthMonitoringIntegration,
} from "../interfaces/health-monitoring/health-monitoring-integration";
import type { IIndexerManagerIntegration } from "../interfaces/indexer-manager/indexer-manager-integration";
+import type { IMediaOrganizerIntegration } from "../interfaces/media-organizer/media-organizer-integration";
import type { IMediaReleasesIntegration } from "../interfaces/media-releases";
import type { IMediaRequestIntegration } from "../interfaces/media-requests/media-request-integration";
import type { IMediaServerIntegration } from "../interfaces/media-server/media-server-integration";
@@ -21,6 +22,7 @@ import { ClusterHealthMonitoringMockService } from "./data/cluster-health-monito
import { DnsHoleMockService } from "./data/dns-hole";
import { DownloadClientMockService } from "./data/download";
import { IndexerManagerMockService } from "./data/indexer-manager";
+import { MediaOrganizerMockService } from "./data/media-organizer";
import { MediaReleasesMockService } from "./data/media-releases";
import { MediaRequestMockService } from "./data/media-request";
import { MediaServerMockService } from "./data/media-server";
@@ -41,6 +43,7 @@ export class MockIntegration
IClusterHealthMonitoringIntegration,
ISystemHealthMonitoringIntegration,
IIndexerManagerIntegration,
+ IMediaOrganizerIntegration,
IMediaReleasesIntegration,
IMediaRequestIntegration,
IMediaServerIntegration,
@@ -55,6 +58,7 @@ export class MockIntegration
private static readonly clusterMonitoring = new ClusterHealthMonitoringMockService();
private static readonly systemMonitoring = new SystemHealthMonitoringMockService();
private static readonly indexerManager = new IndexerManagerMockService();
+ private static readonly mediaOrganizer = new MediaOrganizerMockService();
private static readonly mediaReleases = new MediaReleasesMockService();
private static readonly mediaRequest = new MediaRequestMockService();
private static readonly mediaServer = new MediaServerMockService();
@@ -97,6 +101,10 @@ export class MockIntegration
getIndexersAsync = MockIntegration.indexerManager.getIndexersAsync.bind(MockIntegration.indexerManager);
testAllAsync = MockIntegration.indexerManager.testAllAsync.bind(MockIntegration.indexerManager);
+ // MediaOrganizerIntegration
+ getMissingAsync = MockIntegration.mediaOrganizer.getMissingAsync.bind(MockIntegration.mediaOrganizer);
+ getMediaQueueAsync = MockIntegration.mediaOrganizer.getMediaQueueAsync.bind(MockIntegration.mediaOrganizer);
+
// MediaReleasesIntegration
getMediaReleasesAsync = MockIntegration.mediaReleases.getMediaReleasesAsync.bind(MockIntegration.mediaReleases);
diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts
index 643d2ac60..a4429bd27 100644
--- a/packages/integrations/src/overseerr/overseerr-integration.ts
+++ b/packages/integrations/src/overseerr/overseerr-integration.ts
@@ -132,11 +132,14 @@ export class OverseerrIntegration
},
);
- const allRequests = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/request", { take: 20 }), {
- headers: {
- "X-Api-Key": this.getSecretValue("apiKey"),
+ const allRequests = await fetchWithTrustedCertificatesAsync(
+ this.url("/api/v1/request", { take: 20, sort: "modified" }),
+ {
+ headers: {
+ "X-Api-Key": this.getSecretValue("apiKey"),
+ },
},
- });
+ );
const pendingResults = (await getRequestsSchema.parseAsync(await pendingRequests.json())).results;
const allResults = (await getRequestsSchema.parseAsync(await allRequests.json())).results;
diff --git a/packages/integrations/src/patchmon/patchmon-integration.ts b/packages/integrations/src/patchmon/patchmon-integration.ts
new file mode 100644
index 000000000..2a9c4dc5a
--- /dev/null
+++ b/packages/integrations/src/patchmon/patchmon-integration.ts
@@ -0,0 +1,58 @@
+import { ParseError, ResponseError } from "@homarr/common/server";
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+
+import type { IntegrationTestingInput } from "../base/integration";
+import { Integration } from "../base/integration";
+import { TestConnectionError } from "../base/test-connection/test-connection-error";
+import type { TestingResult } from "../base/test-connection/test-connection-service";
+import type { PatchMonStats } from "./patchmon-types";
+import { mapPatchMonStats, parsePatchMonStatsResponseAsync } from "./patchmon-types";
+
+const STATS_REQUEST_TIMEOUT_MS = 10_000;
+
+export class PatchMonIntegration extends Integration {
+ protected async testingAsync(input: IntegrationTestingInput): Promise {
+ const response = await input.fetchAsync(this.url("/api/v1/gethomepage/stats"), {
+ headers: this.getAuthHeaders(),
+ });
+
+ if (!response.ok) {
+ return TestConnectionError.StatusResult(response);
+ }
+
+ try {
+ await parsePatchMonStatsResponseAsync(response);
+ } catch (error) {
+ if (error instanceof ParseError) {
+ return TestConnectionError.ParseResult(error);
+ }
+
+ throw error;
+ }
+
+ return { success: true };
+ }
+
+ public async getStatsAsync(): Promise {
+ const response = await fetchWithTrustedCertificatesAsync(this.url("/api/v1/gethomepage/stats"), {
+ headers: this.getAuthHeaders(),
+ timeout: STATS_REQUEST_TIMEOUT_MS,
+ });
+
+ if (!response.ok) {
+ throw new ResponseError(response);
+ }
+
+ const data = await parsePatchMonStatsResponseAsync(response);
+
+ return mapPatchMonStats(data);
+ }
+
+ private getAuthHeaders(): Record {
+ const credentials = Buffer.from(
+ `${this.getSecretValue("patchmonApiKey")}:${this.getSecretValue("patchmonApiSecret")}`,
+ ).toString("base64");
+
+ return { Authorization: `Basic ${credentials}` };
+ }
+}
diff --git a/packages/integrations/src/patchmon/patchmon-types.ts b/packages/integrations/src/patchmon/patchmon-types.ts
new file mode 100644
index 000000000..1f912d6c9
--- /dev/null
+++ b/packages/integrations/src/patchmon/patchmon-types.ts
@@ -0,0 +1,88 @@
+import { ParseError } from "@homarr/common/server";
+import { z } from "zod/v4";
+
+const PATCHMON_STATS_PARSE_ERROR_MESSAGE = "Invalid PatchMon stats response";
+
+export const patchmonOsDistributionEntrySchema = z.object({
+ name: z.string(),
+ count: z.number(),
+ os_type: z.string().optional(),
+ os_version: z.string().optional(),
+});
+
+export const patchmonStatsResponseSchema = z.object({
+ total_hosts: z.number(),
+ hosts_needing_updates: z.number(),
+ security_updates: z.number(),
+ up_to_date_hosts: z.number(),
+ hosts_with_security_updates: z.number(),
+ recent_updates_24h: z.number(),
+ total_outdated_packages: z.number(),
+ total_repos: z.number(),
+ last_updated: z.string(),
+ os_distribution: z.array(patchmonOsDistributionEntrySchema).default([]),
+});
+
+export interface PatchMonOsDistributionEntry {
+ name: string;
+ count: number;
+ osType?: string;
+ osVersion?: string;
+}
+
+export interface PatchMonStats {
+ totalHosts: number;
+ hostsNeedingUpdates: number;
+ securityUpdates: number;
+ upToDateHosts: number;
+ hostsWithSecurityUpdates: number;
+ recentUpdates24h: number;
+ totalOutdatedPackages: number;
+ totalRepos: number;
+ lastUpdated: string;
+ osDistribution: PatchMonOsDistributionEntry[];
+}
+
+const mapOsDistributionEntry = (
+ entry: z.infer,
+): PatchMonOsDistributionEntry => ({
+ name: entry.name,
+ count: entry.count,
+ osType: entry.os_type,
+ osVersion: entry.os_version,
+});
+
+export const parsePatchMonStatsResponseAsync = async (
+ response: { json: () => Promise },
+): Promise> => {
+ let json: unknown;
+ try {
+ json = await response.json();
+ } catch (error) {
+ throw new ParseError(PATCHMON_STATS_PARSE_ERROR_MESSAGE, {
+ cause: error instanceof Error ? error : new Error(String(error)),
+ });
+ }
+
+ const parseResult = await patchmonStatsResponseSchema.safeParseAsync(json);
+ if (!parseResult.success) {
+ throw new ParseError(PATCHMON_STATS_PARSE_ERROR_MESSAGE, { cause: parseResult.error });
+ }
+
+ return parseResult.data;
+};
+
+export const mapPatchMonStats = (data: z.infer): PatchMonStats => ({
+ totalHosts: data.total_hosts,
+ hostsNeedingUpdates: data.hosts_needing_updates,
+ securityUpdates: data.security_updates,
+ upToDateHosts: data.up_to_date_hosts,
+ hostsWithSecurityUpdates: data.hosts_with_security_updates,
+ recentUpdates24h: data.recent_updates_24h,
+ totalOutdatedPackages: data.total_outdated_packages,
+ totalRepos: data.total_repos,
+ lastUpdated: data.last_updated,
+ osDistribution: [...data.os_distribution]
+ .map(mapOsDistributionEntry)
+ .sort((a, b) => b.count - a.count),
+});
diff --git a/packages/integrations/src/patchmon/test/patchmon-integration.spec.ts b/packages/integrations/src/patchmon/test/patchmon-integration.spec.ts
new file mode 100644
index 000000000..74924aecd
--- /dev/null
+++ b/packages/integrations/src/patchmon/test/patchmon-integration.spec.ts
@@ -0,0 +1,167 @@
+// @vitest-environment node
+import { ParseError } from "@homarr/common/server";
+import { Response } from "undici";
+import { beforeEach, describe, expect, test, vi } from "vitest";
+
+vi.hoisted(() => {
+ process.env.SKIP_ENV_VALIDATION = "true";
+ process.env.SECRET_ENCRYPTION_KEY = "ff3f4f7ce30e870c9630de9e5d244ffa81101a24ed0dfe5f064beb53a7e684f1";
+});
+
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+
+import { IntegrationParseError } from "../../base/errors/parse/integration-parse-error";
+import type { IntegrationSecret } from "../../base/types";
+import { PatchMonIntegration } from "../patchmon-integration";
+
+vi.mock("@homarr/core/infrastructure/http", () => ({
+ fetchWithTrustedCertificatesAsync: vi.fn(),
+}));
+
+const TEST_URL = "https://patchmon.example.com";
+const TEST_API_KEY = "test-api-key";
+const TEST_API_SECRET = "test-api-secret";
+
+const mockFetch = vi.mocked(fetchWithTrustedCertificatesAsync);
+
+const sampleStatsResponse = {
+ total_hosts: 42,
+ hosts_needing_updates: 15,
+ security_updates: 23,
+ up_to_date_hosts: 27,
+ hosts_with_security_updates: 8,
+ recent_updates_24h: 34,
+ total_outdated_packages: 156,
+ total_repos: 12,
+ last_updated: "2025-10-11T12:34:56.789Z",
+ os_distribution: [
+ { name: "Debian", count: 12, os_type: "linux", os_version: "12" },
+ { name: "Ubuntu", count: 20, os_type: "linux", os_version: "22.04" },
+ { name: "Rocky Linux", count: 10, os_type: "linux", os_version: "9" },
+ ],
+};
+
+const createIntegration = (decryptedSecrets: IntegrationSecret[] = []) =>
+ new PatchMonIntegration({
+ id: "test-patchmon",
+ name: "Test PatchMon",
+ url: TEST_URL,
+ externalUrl: null,
+ decryptedSecrets:
+ decryptedSecrets.length > 0
+ ? decryptedSecrets
+ : [
+ { kind: "patchmonApiKey", value: TEST_API_KEY },
+ { kind: "patchmonApiSecret", value: TEST_API_SECRET },
+ ],
+ });
+
+beforeEach(() => {
+ mockFetch.mockReset();
+});
+
+describe("PatchMonIntegration getStatsAsync", () => {
+ test("maps API response fields to camelCase stats", async () => {
+ mockFetch.mockResolvedValue(
+ new Response(JSON.stringify(sampleStatsResponse), {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ }) as unknown as Awaited>,
+ );
+
+ const stats = await createIntegration().getStatsAsync();
+
+ expect(stats).toStrictEqual({
+ totalHosts: 42,
+ hostsNeedingUpdates: 15,
+ securityUpdates: 23,
+ upToDateHosts: 27,
+ hostsWithSecurityUpdates: 8,
+ recentUpdates24h: 34,
+ totalOutdatedPackages: 156,
+ totalRepos: 12,
+ lastUpdated: "2025-10-11T12:34:56.789Z",
+ osDistribution: [
+ { name: "Ubuntu", count: 20, osType: "linux", osVersion: "22.04" },
+ { name: "Debian", count: 12, osType: "linux", osVersion: "12" },
+ { name: "Rocky Linux", count: 10, osType: "linux", osVersion: "9" },
+ ],
+ });
+ });
+
+ test("defaults os distribution to empty array when absent", async () => {
+ const { os_distribution: _osDistribution, ...responseWithoutOs } = sampleStatsResponse;
+ mockFetch.mockResolvedValue(
+ new Response(JSON.stringify(responseWithoutOs), {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ }) as unknown as Awaited>,
+ );
+
+ const stats = await createIntegration().getStatsAsync();
+
+ expect(stats.osDistribution).toStrictEqual([]);
+ });
+
+ test("throws ParseError when API response is not valid JSON", async () => {
+ mockFetch.mockResolvedValue(
+ new Response("not-json", {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ }) as unknown as Awaited>,
+ );
+
+ await expect(createIntegration().getStatsAsync()).rejects.toSatisfy((error) => {
+ if (!(error instanceof IntegrationParseError)) return false;
+
+ const cause = error.cause;
+ return cause instanceof ParseError && cause.message.includes("Invalid PatchMon stats response");
+ });
+ });
+
+ test("throws ParseError when API response does not match schema", async () => {
+ mockFetch.mockResolvedValue(
+ new Response(JSON.stringify({ invalid: true }), {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ }) as unknown as Awaited>,
+ );
+
+ await expect(createIntegration().getStatsAsync()).rejects.toSatisfy((error) => {
+ if (!(error instanceof IntegrationParseError)) return false;
+
+ const cause = error.cause;
+ return cause instanceof ParseError && cause.message.includes("Invalid PatchMon stats response");
+ });
+ });
+
+ test("throws when API returns an error", async () => {
+ mockFetch.mockResolvedValue(
+ new Response("Unauthorized", {
+ status: 401,
+ headers: { "content-type": "text/plain" },
+ }) as unknown as Awaited>,
+ );
+
+ await expect(createIntegration().getStatsAsync()).rejects.toThrow();
+ });
+});
+
+describe("PatchMonIntegration authentication", () => {
+ test("sends a Basic auth header with api key and secret", async () => {
+ mockFetch.mockResolvedValue(
+ new Response(JSON.stringify(sampleStatsResponse), {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ }) as unknown as Awaited>,
+ );
+
+ await createIntegration().getStatsAsync();
+
+ const expected = `Basic ${Buffer.from(`${TEST_API_KEY}:${TEST_API_SECRET}`).toString("base64")}`;
+ const [url, requestInit] = mockFetch.mock.calls[0] ?? [];
+ expect(String(url)).toContain("/api/v1/gethomepage/stats");
+ expect(requestInit?.headers).toMatchObject({ Authorization: expected });
+ expect(requestInit?.timeout).toBe(10_000);
+ });
+});
diff --git a/packages/integrations/src/synology/synology-client.ts b/packages/integrations/src/synology/synology-client.ts
new file mode 100644
index 000000000..cc853e2c9
--- /dev/null
+++ b/packages/integrations/src/synology/synology-client.ts
@@ -0,0 +1,404 @@
+import type { Headers } from "undici";
+import type { z } from "zod";
+
+import { ResponseError } from "@homarr/common/server";
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+import { createLogger } from "@homarr/core/infrastructure/logs";
+
+import type { SessionStore } from "../base/session-store";
+import type { SynologyDiskRecord, SynologyVolumeRecord } from "./synology-types";
+import {
+ AUTH_API_NAME,
+ INFO_API_NAME,
+ REQUEST_TIMEOUT_MS,
+ SESSION_ERROR_CODES,
+ synologyApiInfoResponseSchema,
+ synologyAuthResponseSchema,
+ synologyEnvelopeSchema,
+ synologyLegacyStorageDataSchema,
+ synologySmartInfoDataSchema,
+ synologyStorageLoadInfoDataSchema,
+ synologyStorageV2DataSchema,
+ synologySystemInfoDataSchema,
+ synologySystemStatusDataSchema,
+ synologyUpgradeCheckDataSchema,
+ synologyUpgradeStatusDataSchema,
+ synologyUtilizationDataSchema,
+} from "./synology-types";
+
+const logger = createLogger({ module: "synologyClient" });
+
+const AUTH_SESSION_NAME = "DownloadStation";
+
+type ApiDefinition = {
+ cgiPath: string;
+ maxVersion: number;
+};
+
+type StoredSession = {
+ cookieHeader: string;
+};
+
+type SynologyClientOptions = {
+ integrationId: string;
+ baseUrl: string;
+ username: string;
+ password: string;
+ sessionStore: SessionStore;
+};
+
+const apiDefinitionCache = new Map();
+
+export class SynologyClient {
+ private readonly integrationId: string;
+ private readonly baseUrl: string;
+ private readonly username: string;
+ private readonly password: string;
+ private readonly sessionStore: SessionStore;
+
+ constructor(options: SynologyClientOptions) {
+ this.integrationId = options.integrationId;
+ this.baseUrl = options.baseUrl.replace(/\/$/, "");
+ this.username = options.username;
+ this.password = options.password;
+ this.sessionStore = options.sessionStore;
+ }
+
+ public async getSystemInfoAsync() {
+ const response = await this.requestAsync("SYNO.Core.System", { method: "info" });
+ return synologySystemInfoDataSchema.parse(response.data);
+ }
+
+ public async getUtilizationAsync() {
+ const response = await this.requestAsync("SYNO.Core.System.Utilization", { method: "get" });
+ return synologyUtilizationDataSchema.parse(response.data);
+ }
+
+ public async getStorageVolumesAsync(): Promise {
+ try {
+ const storageV2Response = await this.requestAsync("SYNO.Core.System", {
+ method: "info",
+ extraParams: { type: "storage_v2" },
+ });
+ const storageV2 = synologyStorageV2DataSchema.parse(storageV2Response.data);
+ const volumesFromV2 = this.mapStorageV2Volumes(storageV2);
+ if (volumesFromV2.length > 0) {
+ return volumesFromV2;
+ }
+ } catch (error) {
+ logger.debug("storage_v2 unavailable, falling back to legacy storage info", {
+ integrationId: this.integrationId,
+ error,
+ });
+ }
+
+ const legacyResponse = await this.requestAsync("SYNO.Core.System", {
+ method: "info",
+ extraParams: { type: "storage" },
+ });
+ const legacyStorage = synologyLegacyStorageDataSchema.parse(legacyResponse.data);
+ return this.mapLegacyVolumes(legacyStorage.vol_info ?? []);
+ }
+
+ public async getStorageLoadInfoAsync() {
+ const response = await this.requestOptionalAsync("SYNO.Storage.CGI.Storage", { method: "load_info" });
+ if (!response) {
+ return null;
+ }
+ return synologyStorageLoadInfoDataSchema.parse(response.data);
+ }
+
+ public async getSmartInfoAsync() {
+ const response = await this.requestOptionalAsync("SYNO.Storage.CGI.Smart", { method: "get_smart_info" });
+ if (!response) {
+ return null;
+ }
+ return synologySmartInfoDataSchema.parse(response.data);
+ }
+
+ public async getSystemStatusAsync() {
+ const response = await this.requestOptionalAsync("SYNO.Core.System.Status", { method: "get" });
+ if (!response) {
+ return null;
+ }
+ return synologySystemStatusDataSchema.parse(response.data);
+ }
+
+ public async getUpgradeStatusAsync() {
+ const response = await this.requestOptionalAsync("SYNO.Core.Upgrade", { method: "status" });
+ if (!response) {
+ return null;
+ }
+ return synologyUpgradeStatusDataSchema.parse(response.data);
+ }
+
+ public async getUpgradeCheckAsync() {
+ const response = await this.requestOptionalAsync("SYNO.Core.Upgrade.Server", { method: "check" });
+ if (!response) {
+ return null;
+ }
+ return synologyUpgradeCheckDataSchema.parse(response.data);
+ }
+
+ public async testConnectionAsync() {
+ await this.getSystemInfoAsync();
+ }
+
+ private mapLegacyVolumes(volumes: z.infer["vol_info"]) {
+ return (volumes ?? [])
+ .map((volume) => this.mapVolumeRecord(volume.name, volume.used_size, volume.total_size, volume.status))
+ .filter((volume): volume is SynologyVolumeRecord => volume !== null);
+ }
+
+ private mapStorageV2Volumes(storage: z.infer) {
+ return (storage.volumes ?? [])
+ .map((volume) => {
+ const name = volume.id ?? volume.vol_path ?? volume.display_name;
+ if (!name) {
+ return null;
+ }
+ return this.mapVolumeRecord(name, volume.size?.used, volume.size?.total, volume.status, volume.display_name);
+ })
+ .filter((volume): volume is SynologyVolumeRecord => volume !== null);
+ }
+
+ private mapVolumeRecord(
+ name: string,
+ usedValue: number | string | undefined,
+ totalValue: number | string | undefined,
+ status: string | undefined,
+ displayName?: string,
+ ): SynologyVolumeRecord | null {
+ const usedBytes = parseNumericValue(usedValue);
+ const totalBytes = parseNumericValue(totalValue);
+ if (usedBytes === null || totalBytes === null || totalBytes <= 0) {
+ return null;
+ }
+
+ return {
+ name,
+ displayName: displayName && displayName !== name ? displayName : undefined,
+ usedBytes,
+ totalBytes,
+ status,
+ };
+ }
+
+ public mapDisksFromLoadInfo(loadInfo: z.infer): SynologyDiskRecord[] {
+ return (loadInfo.disks ?? []).map((disk) => ({
+ identifier: disk.id ?? disk.name ?? disk.display_name ?? "unknown-disk",
+ name: disk.display_name ?? disk.name ?? disk.id ?? "unknown-disk",
+ status: disk.smart_status ?? disk.status,
+ temperature: parseOptionalNumericValue(disk.temp ?? disk.temperature),
+ volumeName: disk.volume_id ?? disk.vol_path,
+ }));
+ }
+
+ public mapDisksFromSmartInfo(smartInfo: z.infer): SynologyDiskRecord[] {
+ const disks = smartInfo.disks ?? smartInfo.items ?? [];
+ return disks.map((disk) => ({
+ identifier: disk.disk_id ?? disk.id ?? disk.name ?? "unknown-disk",
+ name: disk.name ?? disk.disk_id ?? disk.id ?? "unknown-disk",
+ status: disk.overall_status ?? disk.status,
+ temperature: parseOptionalNumericValue(disk.temp ?? disk.temperature),
+ volumeName: undefined,
+ }));
+ }
+
+ private async requestOptionalAsync(
+ apiName: string,
+ options: { method: string; extraParams?: Record },
+ ) {
+ try {
+ return await this.requestAsync(apiName, options);
+ } catch (error) {
+ logger.debug("Optional Synology API request failed", {
+ integrationId: this.integrationId,
+ apiName,
+ method: options.method,
+ error,
+ });
+ return null;
+ }
+ }
+
+ private async requestAsync(
+ apiName: string,
+ options: { method: string; extraParams?: Record },
+ ): Promise> {
+ return await this.withAuthenticatedSessionAsync(async (session) => {
+ const apiDefinition = await this.getApiDefinitionAsync(apiName);
+ const requestUrl = new URL(`${this.baseUrl}/webapi/${apiDefinition.cgiPath}`);
+ requestUrl.searchParams.set("api", apiName);
+ requestUrl.searchParams.set("version", String(apiDefinition.maxVersion));
+ requestUrl.searchParams.set("method", options.method);
+ for (const [key, value] of Object.entries(options.extraParams ?? {})) {
+ requestUrl.searchParams.set(key, value);
+ }
+
+ const response = await fetchWithTrustedCertificatesAsync(requestUrl, {
+ headers: {
+ Cookie: session.cookieHeader,
+ "User-Agent": "Homarr",
+ },
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
+ });
+
+ if (!response.ok) {
+ throw new ResponseError(response);
+ }
+
+ const payload = synologyEnvelopeSchema.parse(await response.json());
+ if (!payload.success) {
+ const errorCode = payload.error?.code;
+ if (errorCode !== undefined && SESSION_ERROR_CODES.has(errorCode)) {
+ throw new SynologySessionError(errorCode);
+ }
+ throw new ResponseError({
+ status: 502,
+ url: requestUrl.toString(),
+ });
+ }
+
+ return payload;
+ });
+ }
+
+ private async withAuthenticatedSessionAsync(callback: (session: StoredSession) => Promise): Promise {
+ const storedSession = await this.sessionStore.getAsync();
+ if (storedSession) {
+ try {
+ return await callback(storedSession);
+ } catch (error) {
+ if (!(error instanceof SynologySessionError)) {
+ throw error;
+ }
+ logger.debug("Synology session expired, re-authenticating", {
+ integrationId: this.integrationId,
+ errorCode: error.errorCode,
+ });
+ await this.sessionStore.clearAsync();
+ }
+ }
+
+ const session = await this.loginAsync();
+ await this.sessionStore.setAsync(session);
+ return await callback(session);
+ }
+
+ private async loginAsync(): Promise {
+ const authDefinition = await this.getApiDefinitionAsync(AUTH_API_NAME);
+ const loginUrl = new URL(`${this.baseUrl}/webapi/${authDefinition.cgiPath}`);
+ loginUrl.searchParams.set("api", AUTH_API_NAME);
+ loginUrl.searchParams.set("version", String(authDefinition.maxVersion));
+ loginUrl.searchParams.set("method", "login");
+ const safeLoginUrl = loginUrl.toString();
+
+ const response = await fetchWithTrustedCertificatesAsync(loginUrl, {
+ method: "POST",
+ headers: {
+ "User-Agent": "Homarr",
+ "Content-Type": "application/x-www-form-urlencoded",
+ },
+ body: new URLSearchParams({
+ account: this.username,
+ passwd: this.password,
+ session: AUTH_SESSION_NAME,
+ format: "cookie",
+ }).toString(),
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
+ });
+
+ if (!response.ok) {
+ throw new ResponseError({ status: response.status, url: safeLoginUrl });
+ }
+
+ const payload = synologyAuthResponseSchema.parse(await response.json());
+ if (!payload.success) {
+ throw new ResponseError({
+ status: 401,
+ url: safeLoginUrl,
+ });
+ }
+
+ const cookieHeader = extractCookieHeader(response.headers);
+ if (!cookieHeader) {
+ throw new ResponseError({
+ status: 401,
+ url: safeLoginUrl,
+ });
+ }
+
+ return { cookieHeader };
+ }
+
+ private async getApiDefinitionAsync(apiName: string): Promise {
+ const cacheKey = `${this.integrationId}:${apiName}`;
+ const cachedDefinition = apiDefinitionCache.get(cacheKey);
+ if (cachedDefinition) {
+ return cachedDefinition;
+ }
+
+ const infoUrl = new URL(`${this.baseUrl}/webapi/query.cgi`);
+ infoUrl.searchParams.set("api", INFO_API_NAME);
+ infoUrl.searchParams.set("version", "1");
+ infoUrl.searchParams.set("method", "query");
+ infoUrl.searchParams.set("query", apiName);
+
+ const response = await fetchWithTrustedCertificatesAsync(infoUrl, {
+ headers: {
+ "User-Agent": "Homarr",
+ },
+ signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
+ });
+
+ if (!response.ok) {
+ throw new ResponseError(response);
+ }
+
+ const payload = synologyApiInfoResponseSchema.parse(await response.json());
+ const apiDefinition = payload.data?.[apiName];
+ if (!payload.success || !apiDefinition) {
+ throw new ResponseError({
+ status: 502,
+ url: infoUrl.toString(),
+ });
+ }
+
+ const definition = {
+ cgiPath: apiDefinition.path,
+ maxVersion: apiDefinition.maxVersion,
+ };
+ apiDefinitionCache.set(cacheKey, definition);
+ return definition;
+ }
+}
+
+class SynologySessionError extends Error {
+ constructor(public readonly errorCode: number) {
+ super(`Synology session error ${String(errorCode)}`);
+ this.name = SynologySessionError.name;
+ }
+}
+
+function extractCookieHeader(headers: Headers): string | null {
+ const cookies = headers.getSetCookie();
+ if (cookies.length === 0) {
+ return null;
+ }
+
+ return cookies.map((cookie) => cookie.split(";")[0]).join("; ");
+}
+
+function parseNumericValue(value: number | string | undefined): number | null {
+ if (value === undefined) {
+ return null;
+ }
+ const parsed = typeof value === "number" ? value : Number.parseFloat(value);
+ return Number.isFinite(parsed) ? parsed : null;
+}
+
+function parseOptionalNumericValue(value: number | string | undefined): number | null {
+ const parsed = parseNumericValue(value);
+ return parsed === null ? null : parsed;
+}
diff --git a/packages/integrations/src/synology/synology-integration.ts b/packages/integrations/src/synology/synology-integration.ts
new file mode 100644
index 000000000..90c49f4bf
--- /dev/null
+++ b/packages/integrations/src/synology/synology-integration.ts
@@ -0,0 +1,323 @@
+import type { z } from "zod";
+
+import { createLogger } from "@homarr/core/infrastructure/logs";
+
+import { HandleIntegrationErrors } from "../base/errors/decorator";
+import type { IntegrationTestingInput } from "../base/integration";
+import { Integration } from "../base/integration";
+import { createSessionStore } from "../base/session-store";
+import type { TestingResult } from "../base/test-connection/test-connection-service";
+import type { ISystemHealthMonitoringIntegration } from "../interfaces/health-monitoring/health-monitoring-integration";
+import type { SystemHealthMonitoring } from "../interfaces/health-monitoring/health-monitoring-types";
+import { SynologyClient } from "./synology-client";
+import type { SynologyDiskRecord, SynologyVolumeRecord } from "./synology-types";
+import type { synologySystemInfoDataSchema, synologyUtilizationDataSchema } from "./synology-types";
+
+const logger = createLogger({ module: "synologyIntegration" });
+
+type StoredSession = {
+ cookieHeader: string;
+};
+
+@HandleIntegrationErrors([])
+export class SynologyIntegration extends Integration implements ISystemHealthMonitoringIntegration {
+ private readonly sessionStore = createSessionStore(this.integration);
+ private client?: SynologyClient;
+
+ protected async testingAsync(_input: IntegrationTestingInput): Promise {
+ await this.getClient().testConnectionAsync();
+ return { success: true };
+ }
+
+ public async getSystemInfoAsync(): Promise {
+ const client = this.getClient();
+
+ const [systemInfo, utilization, volumes] = await Promise.all([
+ client.getSystemInfoAsync(),
+ client.getUtilizationAsync(),
+ client.getStorageVolumesAsync(),
+ ]);
+
+ const [storageLoadInfoResult, smartInfoResult, systemStatusResult, upgradeStatusResult, upgradeCheckResult] =
+ await Promise.allSettled([
+ client.getStorageLoadInfoAsync(),
+ client.getSmartInfoAsync(),
+ client.getSystemStatusAsync(),
+ client.getUpgradeStatusAsync(),
+ client.getUpgradeCheckAsync(),
+ ]);
+
+ const storageLoadInfo = getSettledValue(storageLoadInfoResult);
+ const smartInfo = getSettledValue(smartInfoResult);
+ const systemStatus = getSettledValue(systemStatusResult);
+ const upgradeStatus = getSettledValue(upgradeStatusResult);
+ const upgradeCheck = getSettledValue(upgradeCheckResult);
+
+ const diskRecords = mergeDiskRecords(
+ storageLoadInfo ? client.mapDisksFromLoadInfo(storageLoadInfo) : [],
+ smartInfo ? client.mapDisksFromSmartInfo(smartInfo) : [],
+ );
+
+ const memory = mapMemoryBytes(utilization);
+ const network = mapNetworkTraffic(utilization);
+ const loadAverage = mapLoadAverage(utilization);
+ const smart = mapVolumeSmartEntries(volumes, diskRecords);
+ const rebootRequired = Boolean(systemStatus?.reboot_required ?? upgradeStatus?.reboot_required ?? false);
+ const availablePkgUpdates = upgradeCheck?.update_count ?? (upgradeCheck?.available ? 1 : 0);
+
+ return {
+ version: mapVersion(systemInfo),
+ cpuModelName: systemInfo.model ?? "Unknown CPU",
+ cpuUtilization: mapCpuUtilization(utilization),
+ memUsedInBytes: memory.usedBytes,
+ memAvailableInBytes: memory.availableBytes,
+ uptime: mapUptimeSeconds(systemInfo),
+ network,
+ loadAverage,
+ rebootRequired,
+ availablePkgUpdates,
+ cpuTemp: mapCpuTemperature(systemInfo),
+ fileSystem: mapFileSystemEntries(volumes),
+ smart,
+ gpu: [],
+ };
+ }
+
+ public async listStorageVolumesAsync(): Promise<{ value: string; label: string }[]> {
+ const volumes = await this.getClient().getStorageVolumesAsync();
+ const { id: integrationId, name: integrationName } = this.integration;
+ return volumes.map((volume) => ({
+ value: `${integrationId}:${volume.name}`,
+ label: `${volume.displayName ?? volume.name} (${integrationName})`,
+ }));
+ }
+
+ private getClient(): SynologyClient {
+ return (this.client ??= new SynologyClient({
+ integrationId: this.integration.id,
+ baseUrl: this.integration.url,
+ username: this.getSecretValue("username"),
+ password: this.getSecretValue("password"),
+ sessionStore: this.sessionStore,
+ }));
+ }
+}
+
+function getSettledValue(result: PromiseSettledResult): T | null {
+ if (result.status === "rejected") {
+ logger.debug("Optional Synology API call failed", { reason: result.reason });
+ return null;
+ }
+ return result.value;
+}
+
+function mapVersion(systemInfo: z.infer): string {
+ if (systemInfo.version_string) {
+ return systemInfo.version_string;
+ }
+ if (systemInfo.firmware_ver) {
+ return systemInfo.firmware_ver;
+ }
+ if (systemInfo.version !== undefined) {
+ return String(systemInfo.version);
+ }
+ return "Unknown";
+}
+
+function mapCpuUtilization(utilization: z.infer): number {
+ const userLoad = parseNumericValue(utilization.cpu?.user_load) ?? 0;
+ const systemLoad = parseNumericValue(utilization.cpu?.system_load) ?? 0;
+ const totalLoad = userLoad + systemLoad;
+ return Math.min(totalLoad, 100);
+}
+
+function mapMemoryBytes(utilization: z.infer) {
+ const memory = utilization.memory;
+ const totalRealKib = parseNumericValue(memory?.total_real);
+ const realUsagePercent = parseNumericValue(memory?.real_usage);
+
+ // DSM utilization API reports memory sizes in KiB, not bytes.
+ if (totalRealKib !== null && realUsagePercent !== null) {
+ const totalBytes = totalRealKib * 1024;
+ const usedBytes = Math.round((totalBytes * realUsagePercent) / 100);
+ return {
+ usedBytes,
+ availableBytes: Math.max(totalBytes - usedBytes, 0),
+ };
+ }
+
+ const availableKib = parseNumericValue(memory?.avail_real) ?? 0;
+ const cachedKib = parseNumericValue(memory?.cached) ?? 0;
+ const totalKib = totalRealKib ?? availableKib + cachedKib;
+ const usedKib = Math.max(totalKib - availableKib, 0);
+
+ return {
+ usedBytes: usedKib * 1024,
+ availableBytes: availableKib * 1024,
+ };
+}
+
+function mapNetworkTraffic(utilization: z.infer) {
+ const totalNetwork = utilization.network?.find((entry) => entry.device === "total");
+ if (!totalNetwork) {
+ return null;
+ }
+
+ const received = parseNumericValue(totalNetwork.rx);
+ const transmitted = parseNumericValue(totalNetwork.tx);
+ if (received === null || transmitted === null) {
+ return null;
+ }
+
+ return {
+ up: transmitted,
+ down: received,
+ };
+}
+
+function mapLoadAverage(utilization: z.infer) {
+ const oneMinute = parseNumericValue(utilization.cpu?.["1min_load"]);
+ const fiveMinute = parseNumericValue(utilization.cpu?.["5min_load"]);
+ const fifteenMinute = parseNumericValue(utilization.cpu?.["15min_load"]);
+
+ if (oneMinute === null && fiveMinute === null && fifteenMinute === null) {
+ return null;
+ }
+
+ return {
+ "1min": oneMinute ?? 0,
+ "5min": fiveMinute ?? 0,
+ "15min": fifteenMinute ?? 0,
+ };
+}
+
+function mapUptimeSeconds(systemInfo: z.infer): number {
+ if (typeof systemInfo.uptime === "number") {
+ return systemInfo.uptime;
+ }
+
+ if (!systemInfo.up_time) {
+ return 0;
+ }
+
+ const parts = systemInfo.up_time.split(":").map((part) => Number.parseInt(part, 10));
+ if (parts.length !== 3 || parts.some((part) => Number.isNaN(part))) {
+ return 0;
+ }
+
+ const [hours = 0, minutes = 0, seconds = 0] = parts;
+ return hours * 3600 + minutes * 60 + seconds;
+}
+
+function mapCpuTemperature(systemInfo: z.infer): number | undefined {
+ const temperature = parseNumericValue(systemInfo.sys_temp ?? systemInfo.temperature);
+ return temperature === null ? undefined : temperature;
+}
+
+function mapFileSystemEntries(volumes: SynologyVolumeRecord[]) {
+ return volumes.map((volume) => {
+ const availableBytes = Math.max(volume.totalBytes - volume.usedBytes, 0);
+ return {
+ deviceName: volume.name,
+ used: `${volume.usedBytes}`,
+ available: `${availableBytes}`,
+ percentage: (volume.usedBytes / volume.totalBytes) * 100,
+ };
+ });
+}
+
+function mapVolumeSmartEntries(volumes: SynologyVolumeRecord[], diskRecords: SynologyDiskRecord[]) {
+ return volumes.map((volume) => {
+ const matchingDisks = diskRecords.filter((disk) => diskBelongsToVolume(disk, volume.name));
+ const temperatures = matchingDisks
+ .map((disk) => disk.temperature)
+ .filter((temperature): temperature is number => temperature !== null);
+ const overallStatus = volume.status ?? pickWorstDiskStatus(matchingDisks);
+
+ return {
+ deviceName: volume.name,
+ healthy: isHealthyStatus(overallStatus),
+ overallStatus,
+ temperature: temperatures.length > 0 ? Math.max(...temperatures) : null,
+ };
+ });
+}
+
+function mergeDiskRecords(
+ loadInfoDisks: SynologyDiskRecord[],
+ smartInfoDisks: SynologyDiskRecord[],
+): SynologyDiskRecord[] {
+ const diskMap = new Map();
+
+ for (const disk of loadInfoDisks) {
+ diskMap.set(disk.identifier, disk);
+ }
+
+ for (const disk of smartInfoDisks) {
+ const existingDisk = diskMap.get(disk.identifier);
+ diskMap.set(disk.identifier, {
+ identifier: disk.identifier,
+ name: existingDisk?.name ?? disk.name,
+ status: disk.status ?? existingDisk?.status,
+ temperature: disk.temperature ?? existingDisk?.temperature ?? null,
+ volumeName: existingDisk?.volumeName ?? disk.volumeName,
+ });
+ }
+
+ return [...diskMap.values()];
+}
+
+function diskBelongsToVolume(disk: SynologyDiskRecord, volumeName: string): boolean {
+ if (!disk.volumeName) {
+ return false;
+ }
+
+ return (
+ disk.volumeName === volumeName ||
+ disk.volumeName.endsWith(volumeName) ||
+ volumeName.endsWith(disk.volumeName) ||
+ disk.volumeName.includes(volumeName) ||
+ volumeName.includes(disk.volumeName)
+ );
+}
+
+const UNHEALTHY_STATUS_TOKENS = ["critical", "error", "crash", "failed", "fail", "degraded", "warning"] as const;
+
+function getStatusSeverityIndex(status: string): number {
+ const normalizedStatus = status.toLowerCase();
+ const index = UNHEALTHY_STATUS_TOKENS.findIndex((token) => normalizedStatus.includes(token));
+ return index === -1 ? UNHEALTHY_STATUS_TOKENS.length : index;
+}
+
+function pickWorstDiskStatus(disks: SynologyDiskRecord[]): string {
+ const statuses = disks
+ .map((disk) => disk.status)
+ .filter((status): status is string => status !== undefined && status.length > 0);
+
+ if (statuses.length === 0) {
+ return "normal";
+ }
+
+ return statuses.reduce((worstStatus, currentStatus) =>
+ getStatusSeverityIndex(currentStatus) < getStatusSeverityIndex(worstStatus) ? currentStatus : worstStatus,
+ );
+}
+
+function isHealthyStatus(status: string | undefined): boolean {
+ if (!status) {
+ return true;
+ }
+
+ const normalizedStatus = status.toLowerCase();
+ return !["crash", "degraded", "fail", "failed", "warning", "error", "critical"].some((unhealthyToken) =>
+ normalizedStatus.includes(unhealthyToken),
+ );
+}
+
+function parseNumericValue(value: number | string | undefined): number | null {
+ if (value === undefined) {
+ return null;
+ }
+ const parsed = typeof value === "number" ? value : Number.parseFloat(value);
+ return Number.isFinite(parsed) ? parsed : null;
+}
diff --git a/packages/integrations/src/synology/synology-types.ts b/packages/integrations/src/synology/synology-types.ts
new file mode 100644
index 000000000..c1f73b52e
--- /dev/null
+++ b/packages/integrations/src/synology/synology-types.ts
@@ -0,0 +1,191 @@
+import { z } from "zod";
+
+export const REQUEST_TIMEOUT_MS = 5000;
+
+export const AUTH_API_NAME = "SYNO.API.Auth";
+export const INFO_API_NAME = "SYNO.API.Info";
+
+export const SESSION_ERROR_CODES = new Set([106, 107, 119]);
+
+export const synologyEnvelopeSchema = z.object({
+ success: z.boolean(),
+ data: z.unknown().optional(),
+ error: z
+ .object({
+ code: z.number(),
+ })
+ .optional(),
+});
+
+export const synologyApiDefinitionSchema = z.object({
+ path: z.string(),
+ maxVersion: z.number(),
+});
+
+export const synologyApiInfoResponseSchema = synologyEnvelopeSchema.extend({
+ data: z.record(z.string(), synologyApiDefinitionSchema).optional(),
+});
+
+export const synologyAuthResponseSchema = synologyEnvelopeSchema.extend({
+ data: z
+ .object({
+ sid: z.string().optional(),
+ })
+ .optional(),
+});
+
+const numericString = z.union([z.number(), z.string()]);
+
+export const synologySystemInfoDataSchema = z
+ .object({
+ up_time: z.string().optional(),
+ uptime: z.number().optional(),
+ version_string: z.string().optional(),
+ firmware_ver: z.string().optional(),
+ version: z.union([z.string(), z.number()]).optional(),
+ model: z.string().optional(),
+ sys_temp: numericString.optional(),
+ temperature: numericString.optional(),
+ })
+ .passthrough();
+
+export const synologyVolumeInfoSchema = z.object({
+ name: z.string(),
+ used_size: numericString.optional(),
+ total_size: numericString.optional(),
+ status: z.string().optional(),
+ vol_path: z.string().optional(),
+});
+
+export const synologyLegacyStorageDataSchema = z.object({
+ vol_info: z.array(synologyVolumeInfoSchema).optional(),
+});
+
+export const synologyStorageV2VolumeSchema = z
+ .object({
+ id: z.string().optional(),
+ vol_path: z.string().optional(),
+ display_name: z.string().optional(),
+ size: z
+ .object({
+ total: z.union([z.number(), z.string()]).optional(),
+ used: z.union([z.number(), z.string()]).optional(),
+ })
+ .optional(),
+ status: z.string().optional(),
+ })
+ .passthrough();
+
+export const synologyStorageV2DataSchema = z.object({
+ volumes: z.array(synologyStorageV2VolumeSchema).optional(),
+});
+
+export const synologyUtilizationCpuSchema = z.object({
+ user_load: numericString.optional(),
+ system_load: numericString.optional(),
+ other_load: numericString.optional(),
+ "1min_load": numericString.optional(),
+ "5min_load": numericString.optional(),
+ "15min_load": numericString.optional(),
+});
+
+export const synologyUtilizationMemorySchema = z.object({
+ real_usage: numericString.optional(),
+ avail_real: numericString.optional(),
+ cached: numericString.optional(),
+ total_real: numericString.optional(),
+});
+
+export const synologyUtilizationNetworkSchema = z.object({
+ device: z.string(),
+ rx: numericString.optional(),
+ tx: numericString.optional(),
+});
+
+export const synologyUtilizationDataSchema = z.object({
+ cpu: synologyUtilizationCpuSchema.optional(),
+ memory: synologyUtilizationMemorySchema.optional(),
+ network: z.array(synologyUtilizationNetworkSchema).optional(),
+});
+
+export const synologyStorageDiskSchema = z
+ .object({
+ id: z.string().optional(),
+ name: z.string().optional(),
+ display_name: z.string().optional(),
+ status: z.string().optional(),
+ temp: numericString.optional(),
+ temperature: numericString.optional(),
+ smart_status: z.string().optional(),
+ volume_id: z.string().optional(),
+ vol_path: z.string().optional(),
+ })
+ .passthrough();
+
+export const synologyStorageLoadInfoDataSchema = z
+ .object({
+ disks: z.array(synologyStorageDiskSchema).optional(),
+ volumes: z.array(synologyStorageV2VolumeSchema).optional(),
+ overview_data: z
+ .object({
+ volumes: z.array(synologyVolumeInfoSchema).optional(),
+ })
+ .optional(),
+ })
+ .passthrough();
+
+export const synologySmartDiskSchema = z
+ .object({
+ id: z.string().optional(),
+ disk_id: z.string().optional(),
+ name: z.string().optional(),
+ status: z.string().optional(),
+ temp: numericString.optional(),
+ temperature: numericString.optional(),
+ overall_status: z.string().optional(),
+ })
+ .passthrough();
+
+export const synologySmartInfoDataSchema = z
+ .object({
+ disks: z.array(synologySmartDiskSchema).optional(),
+ items: z.array(synologySmartDiskSchema).optional(),
+ })
+ .passthrough();
+
+export const synologySystemStatusDataSchema = z
+ .object({
+ reboot_required: z.boolean().optional(),
+ system_need_repair: z.boolean().optional(),
+ })
+ .passthrough();
+
+export const synologyUpgradeStatusDataSchema = z
+ .object({
+ reboot_required: z.boolean().optional(),
+ upgrade_ready: z.boolean().optional(),
+ })
+ .passthrough();
+
+export const synologyUpgradeCheckDataSchema = z
+ .object({
+ available: z.boolean().optional(),
+ update_count: z.number().optional(),
+ })
+ .passthrough();
+
+export type SynologyVolumeRecord = {
+ name: string;
+ displayName?: string;
+ usedBytes: number;
+ totalBytes: number;
+ status: string | undefined;
+};
+
+export type SynologyDiskRecord = {
+ identifier: string;
+ name: string;
+ status: string | undefined;
+ temperature: number | null;
+ volumeName: string | undefined;
+};
diff --git a/packages/integrations/src/synology/test/synology-integration.spec.ts b/packages/integrations/src/synology/test/synology-integration.spec.ts
new file mode 100644
index 000000000..e8a13f015
--- /dev/null
+++ b/packages/integrations/src/synology/test/synology-integration.spec.ts
@@ -0,0 +1,587 @@
+// @vitest-environment node
+
+import { Response } from "undici";
+import { beforeEach, describe, expect, test, vi } from "vitest";
+import type { z } from "zod";
+
+vi.hoisted(() => {
+ process.env.CI = "true";
+ process.env.NODE_ENV = "test";
+ process.env.SECRET_ENCRYPTION_KEY = "0".repeat(64);
+});
+
+vi.mock("@homarr/core/infrastructure/http", () => ({
+ fetchWithTrustedCertificatesAsync: vi.fn(),
+}));
+
+vi.mock("@homarr/core/infrastructure/logs", () => ({
+ createLogger: () => ({
+ debug: vi.fn(),
+ info: vi.fn(),
+ warn: vi.fn(),
+ error: vi.fn(),
+ }),
+}));
+
+vi.mock("../../base/session-store", () => ({
+ createSessionStore: () => ({
+ getAsync: vi.fn().mockResolvedValue(null),
+ setAsync: vi.fn().mockResolvedValue(undefined),
+ clearAsync: vi.fn().mockResolvedValue(undefined),
+ }),
+}));
+
+import { ResponseError } from "@homarr/common/server";
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+
+import { IntegrationResponseError } from "../../base/errors/http/integration-response-error";
+
+import type { IntegrationSecret } from "../../base/types";
+import { SynologyIntegration } from "../synology-integration";
+import type { synologyStorageV2DataSchema, synologyUtilizationDataSchema } from "../synology-types";
+
+const TEST_URL = "https://synology.example.com:5001";
+const mockFetch = vi.mocked(fetchWithTrustedCertificatesAsync);
+
+const createIntegration = (secrets: IntegrationSecret[] = []) =>
+ new SynologyIntegration({
+ id: "test-synology",
+ name: "Test Synology",
+ url: TEST_URL,
+ externalUrl: null,
+ decryptedSecrets: secrets.length
+ ? secrets
+ : [
+ { kind: "username", value: "homarr" },
+ { kind: "password", value: "secret-password" },
+ ],
+ });
+
+const apiDefinitions = {
+ "SYNO.API.Auth": { path: "auth.cgi", maxVersion: 7 },
+ "SYNO.API.Info": { path: "query.cgi", maxVersion: 1 },
+ "SYNO.Core.System": { path: "entry.cgi", maxVersion: 3 },
+ "SYNO.Core.System.Utilization": { path: "entry.cgi", maxVersion: 1 },
+ "SYNO.Storage.CGI.Storage": { path: "entry.cgi", maxVersion: 1 },
+ "SYNO.Storage.CGI.Smart": { path: "entry.cgi", maxVersion: 1 },
+ "SYNO.Core.System.Status": { path: "entry.cgi", maxVersion: 1 },
+ "SYNO.Core.Upgrade": { path: "entry.cgi", maxVersion: 1 },
+ "SYNO.Core.Upgrade.Server": { path: "entry.cgi", maxVersion: 1 },
+};
+
+const systemInfoResponse = {
+ success: true as const,
+ data: {
+ up_time: "48:30:15",
+ version_string: "DSM 7.3-12345",
+ model: "DS920+",
+ sys_temp: 42,
+ },
+};
+
+const utilizationResponse = {
+ success: true,
+ data: {
+ cpu: {
+ user_load: 12,
+ system_load: 8,
+ "1min_load": 10,
+ "5min_load": 14,
+ "15min_load": 9,
+ },
+ memory: {
+ real_usage: 35,
+ total_real: 8 * 1024 * 1024,
+ avail_real: Math.round(8 * 1024 * 1024 * 0.65),
+ cached: 900_000,
+ },
+ network: [
+ { device: "total", rx: 4096, tx: 8192 },
+ { device: "eth0", rx: 4096, tx: 8192 },
+ ],
+ },
+};
+
+const storageV2Response = {
+ success: true,
+ data: {
+ volumes: [
+ {
+ id: "volume_1",
+ display_name: "Data Volume 1",
+ size: { total: 10_000_000_000, used: 4_000_000_000 },
+ status: "normal",
+ },
+ {
+ id: "volume_2",
+ display_name: "Data Volume 2",
+ size: { total: 20_000_000_000, used: 5_000_000_000 },
+ status: "degraded",
+ },
+ ],
+ },
+};
+
+const storageLoadInfoResponse = {
+ success: true,
+ data: {
+ disks: [
+ {
+ id: "sda",
+ display_name: "Drive 1",
+ temp: 38,
+ status: "normal",
+ volume_id: "volume_1",
+ },
+ {
+ id: "sdb",
+ display_name: "Drive 2",
+ temp: 44,
+ status: "normal",
+ volume_id: "volume_2",
+ },
+ ],
+ },
+};
+
+const smartInfoResponse = {
+ success: true,
+ data: {
+ disks: [
+ {
+ disk_id: "sda",
+ name: "Drive 1",
+ overall_status: "normal",
+ temp: 39,
+ },
+ ],
+ },
+};
+
+const systemStatusResponse = {
+ success: true,
+ data: {
+ reboot_required: true,
+ },
+};
+
+const upgradeStatusResponse = {
+ success: true,
+ data: {
+ reboot_required: false,
+ },
+};
+
+const upgradeCheckResponse = {
+ success: true,
+ data: {
+ available: true,
+ update_count: 2,
+ },
+};
+
+const toUrlString = (url: unknown): string => String(url);
+
+const getApiFromUrl = (url: string) => {
+ const parsedUrl = new URL(url);
+ return parsedUrl.searchParams.get("api");
+};
+
+const getMethodFromUrl = (url: string) => {
+ const parsedUrl = new URL(url);
+ return parsedUrl.searchParams.get("method");
+};
+
+const getTypeFromUrl = (url: string) => {
+ const parsedUrl = new URL(url);
+ return parsedUrl.searchParams.get("type");
+};
+
+const mockSuccessfulFlow = (options?: {
+ skipStorageV2?: boolean;
+ skipOptional?: boolean;
+ systemInfo?: {
+ success: boolean;
+ data: Record;
+ };
+ utilization?: { success: boolean; data: z.input };
+ storageV2?: { success: boolean; data: z.input };
+ storageLoadInfo?: typeof storageLoadInfoResponse;
+}) => {
+ mockFetch.mockImplementation((url) => {
+ const urlString = toUrlString(url);
+ const apiName = getApiFromUrl(urlString);
+ const method = getMethodFromUrl(urlString);
+ const type = getTypeFromUrl(urlString);
+
+ if (apiName === "SYNO.API.Info" && method === "query") {
+ const query = new URL(urlString).searchParams.get("query") ?? "SYNO.API.Auth";
+ const definition = apiDefinitions[query as keyof typeof apiDefinitions];
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: true, data: { [query]: definition } }), {
+ status: 200,
+ headers: { "Content-Type": "application/json" },
+ }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.API.Auth" && method === "login") {
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: true, data: { sid: "test-session-id" } }), {
+ status: 200,
+ headers: {
+ "Content-Type": "application/json",
+ "Set-Cookie": "id=test-session-id; Path=/; HttpOnly",
+ },
+ }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Core.System" && method === "info" && type === "storage_v2") {
+ if (options?.skipStorageV2) {
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: false, error: { code: 103 } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+ return Promise.resolve(
+ new Response(JSON.stringify(options?.storageV2 ?? storageV2Response), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Core.System" && method === "info" && type === "storage") {
+ return Promise.resolve(
+ new Response(
+ JSON.stringify({
+ success: true,
+ data: {
+ vol_info: [
+ {
+ name: "volume_1",
+ used_size: 4_000_000_000,
+ total_size: 10_000_000_000,
+ status: "normal",
+ },
+ ],
+ },
+ }),
+ { status: 200 },
+ ),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Core.System" && method === "info" && !type) {
+ return Promise.resolve(
+ new Response(JSON.stringify(options?.systemInfo ?? systemInfoResponse), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Core.System.Utilization" && method === "get") {
+ return Promise.resolve(
+ new Response(JSON.stringify(options?.utilization ?? utilizationResponse), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (options?.skipOptional) {
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: false, error: { code: 105 } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Storage.CGI.Storage" && method === "load_info") {
+ return Promise.resolve(
+ new Response(JSON.stringify(options?.storageLoadInfo ?? storageLoadInfoResponse), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Storage.CGI.Smart" && method === "get_smart_info") {
+ return Promise.resolve(new Response(JSON.stringify(smartInfoResponse), { status: 200 })) as unknown as ReturnType<
+ typeof fetchWithTrustedCertificatesAsync
+ >;
+ }
+
+ if (apiName === "SYNO.Core.System.Status" && method === "get") {
+ return Promise.resolve(
+ new Response(JSON.stringify(systemStatusResponse), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Core.Upgrade" && method === "status") {
+ return Promise.resolve(
+ new Response(JSON.stringify(upgradeStatusResponse), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.Core.Upgrade.Server" && method === "check") {
+ return Promise.resolve(
+ new Response(JSON.stringify(upgradeCheckResponse), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: false, error: { code: 102 } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ });
+};
+
+beforeEach(() => {
+ mockFetch.mockReset();
+});
+
+describe("SynologyIntegration.getSystemInfoAsync", () => {
+ test("maps all supported health monitoring fields", async () => {
+ mockSuccessfulFlow();
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+
+ expect(result.version).toBe("DSM 7.3-12345");
+ expect(result.cpuModelName).toBe("DS920+");
+ expect(result.cpuUtilization).toBe(20);
+ expect(result.memUsedInBytes).toBe(Math.round((8 * 1024 * 1024 * 1024 * 35) / 100));
+ expect(result.memAvailableInBytes).toBe(8 * 1024 * 1024 * 1024 - Math.round((8 * 1024 * 1024 * 1024 * 35) / 100));
+ expect(result.uptime).toBe(48 * 3600 + 30 * 60 + 15);
+ expect(result.cpuTemp).toBe(42);
+ expect(result.network).toEqual({ up: 8192, down: 4096 });
+ expect(result.loadAverage).toEqual({ "1min": 10, "5min": 14, "15min": 9 });
+ expect(result.rebootRequired).toBe(true);
+ expect(result.availablePkgUpdates).toBe(2);
+ expect(result.gpu).toEqual([]);
+ expect(result.fileSystem).toHaveLength(2);
+ expect(result.fileSystem[0]).toEqual({
+ deviceName: "volume_1",
+ used: "4000000000",
+ available: "6000000000",
+ percentage: 40,
+ });
+ expect(result.smart).toEqual([
+ {
+ deviceName: "volume_1",
+ healthy: true,
+ overallStatus: "normal",
+ temperature: 39,
+ },
+ {
+ deviceName: "volume_2",
+ healthy: false,
+ overallStatus: "degraded",
+ temperature: 44,
+ },
+ ]);
+ });
+
+ test("picks worst disk status when volume status is missing", async () => {
+ mockSuccessfulFlow({
+ storageV2: {
+ success: true,
+ data: {
+ volumes: [
+ {
+ id: "volume_1",
+ display_name: "Data Volume 1",
+ size: { total: 10_000_000_000, used: 4_000_000_000 },
+ },
+ ],
+ },
+ },
+ storageLoadInfo: {
+ success: true,
+ data: {
+ disks: [
+ {
+ id: "sda",
+ display_name: "Drive 1",
+ temp: 38,
+ status: "normal",
+ volume_id: "volume_1",
+ },
+ {
+ id: "sdb",
+ display_name: "Drive 2",
+ temp: 40,
+ status: "degraded",
+ volume_id: "volume_1",
+ },
+ ],
+ },
+ },
+ });
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+
+ expect(result.smart).toEqual([
+ {
+ deviceName: "volume_1",
+ healthy: false,
+ overallStatus: "degraded",
+ temperature: 40,
+ },
+ ]);
+ });
+
+ test("falls back to legacy storage info when storage_v2 is unavailable", async () => {
+ mockSuccessfulFlow({ skipStorageV2: true });
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+
+ expect(result.fileSystem).toHaveLength(1);
+ expect(result.fileSystem[0]?.deviceName).toBe("volume_1");
+ });
+
+ test("continues when optional tier-2 calls fail", async () => {
+ mockSuccessfulFlow({ skipOptional: true });
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+
+ expect(result.cpuUtilization).toBe(20);
+ expect(result.rebootRequired).toBe(false);
+ expect(result.availablePkgUpdates).toBe(0);
+ expect(result.smart.every((entry) => entry.temperature === null)).toBe(true);
+ });
+
+ test("converts memory values from KiB to bytes", async () => {
+ mockSuccessfulFlow({
+ utilization: {
+ ...utilizationResponse,
+ data: {
+ ...utilizationResponse.data,
+ memory: {
+ real_usage: 17,
+ total_real: 16_351_532,
+ avail_real: 426_568,
+ },
+ },
+ },
+ });
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+
+ const totalBytes = 16_351_532 * 1024;
+ expect(result.memUsedInBytes).toBe(Math.round((totalBytes * 17) / 100));
+ expect(result.memAvailableInBytes).toBe(totalBytes - Math.round((totalBytes * 17) / 100));
+ });
+
+ test("caps cpu utilization at 100 when user and system load exceed 100", async () => {
+ mockSuccessfulFlow({
+ utilization: {
+ ...utilizationResponse,
+ data: {
+ ...utilizationResponse.data,
+ cpu: {
+ ...utilizationResponse.data.cpu,
+ user_load: 80,
+ system_load: 30,
+ },
+ },
+ },
+ });
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+
+ expect(result.cpuUtilization).toBe(100);
+ });
+
+ test("returns undefined cpu temperature when sensor is absent", async () => {
+ mockSuccessfulFlow({
+ systemInfo: {
+ success: true,
+ data: {
+ up_time: "01:00:00",
+ version_string: "DSM 7.3-12345",
+ model: "DS920+",
+ },
+ },
+ });
+ const integration = createIntegration();
+ const result = await integration.getSystemInfoAsync();
+ expect(result.cpuTemp).toBeUndefined();
+ });
+});
+
+describe("SynologyIntegration.listStorageVolumesAsync", () => {
+ test("returns auto-detected volume names", async () => {
+ mockSuccessfulFlow();
+ const integration = createIntegration();
+ const volumes = await integration.listStorageVolumesAsync();
+
+ expect(volumes).toEqual([
+ { value: "test-synology:volume_1", label: "Data Volume 1 (Test Synology)" },
+ { value: "test-synology:volume_2", label: "Data Volume 2 (Test Synology)" },
+ ]);
+ });
+});
+
+describe("SynologyIntegration authentication", () => {
+ test("rejects two-factor authentication during login", async () => {
+ mockFetch.mockImplementation((url) => {
+ const urlString = toUrlString(url);
+ const apiName = getApiFromUrl(urlString);
+ const method = getMethodFromUrl(urlString);
+
+ if (apiName === "SYNO.API.Info" && method === "query") {
+ const query = new URL(urlString).searchParams.get("query") ?? "SYNO.API.Auth";
+ const definition = apiDefinitions[query as keyof typeof apiDefinitions];
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: true, data: { [query]: definition } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.API.Auth" && method === "login") {
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: false, error: { code: 403 } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ return Promise.resolve(new Response("{}", { status: 500 })) as unknown as ReturnType<
+ typeof fetchWithTrustedCertificatesAsync
+ >;
+ });
+
+ const integration = createIntegration();
+ await expect(integration.getSystemInfoAsync()).rejects.toThrow();
+ });
+
+ test("does not leak credentials in login error URLs", async () => {
+ mockFetch.mockImplementation((url, init) => {
+ const urlString = toUrlString(url);
+ const apiName = getApiFromUrl(urlString);
+ const method = getMethodFromUrl(urlString);
+
+ if (apiName === "SYNO.API.Info" && method === "query") {
+ const query = new URL(urlString).searchParams.get("query") ?? "SYNO.API.Auth";
+ const definition = apiDefinitions[query as keyof typeof apiDefinitions];
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: true, data: { [query]: definition } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ if (apiName === "SYNO.API.Auth" && method === "login") {
+ expect(init?.method).toBe("POST");
+ expect(init?.body).toContain("account=homarr");
+ expect(init?.body).toContain("passwd=secret-password");
+ expect(urlString).not.toContain("account=");
+ expect(urlString).not.toContain("passwd=");
+
+ return Promise.resolve(
+ new Response(JSON.stringify({ success: false, error: { code: 403 } }), { status: 200 }),
+ ) as unknown as ReturnType;
+ }
+
+ return Promise.resolve(new Response("{}", { status: 500 })) as unknown as ReturnType<
+ typeof fetchWithTrustedCertificatesAsync
+ >;
+ });
+
+ const integration = createIntegration();
+
+ try {
+ await integration.getSystemInfoAsync();
+ expect.unreachable("Expected login to fail");
+ } catch (error) {
+ expect(error).toBeInstanceOf(IntegrationResponseError);
+ const responseError = (error as IntegrationResponseError).cause;
+ expect(responseError).toBeInstanceOf(ResponseError);
+ expect(responseError.url).not.toContain("secret-password");
+ expect(responseError.url).not.toContain("passwd=");
+ expect(responseError.url).not.toContain("account=homarr");
+ }
+ });
+});
diff --git a/packages/integrations/src/traefik/traefik-integration.ts b/packages/integrations/src/traefik/traefik-integration.ts
new file mode 100644
index 000000000..0dc8cf57f
--- /dev/null
+++ b/packages/integrations/src/traefik/traefik-integration.ts
@@ -0,0 +1,163 @@
+import { ResponseError } from "@homarr/common/server";
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+
+import type { IntegrationTestingInput } from "../base/integration";
+import { Integration } from "../base/integration";
+import type { TestingResult } from "../base/test-connection/test-connection-service";
+import type {
+ TraefikDashboardData,
+ TraefikProtocolSummary,
+ TraefikResource,
+ TraefikResourceStatus,
+ TraefikResourceSummary,
+} from "./traefik-types";
+import { traefikResourcesSchema, traefikVersionSchema } from "./traefik-types";
+
+type ResourcePath =
+ | "/api/http/routers"
+ | "/api/http/services"
+ | "/api/http/middlewares"
+ | "/api/tcp/routers"
+ | "/api/tcp/services"
+ | "/api/tcp/middlewares"
+ | "/api/udp/routers"
+ | "/api/udp/services"
+ | "/api/entrypoints";
+
+export class TraefikIntegration extends Integration {
+ protected async testingAsync(input: IntegrationTestingInput): Promise {
+ const response = await input.fetchAsync(this.url("/api/version"), { headers: this.getAuthHeaders() });
+
+ if (!response.ok) {
+ throw new ResponseError(response);
+ }
+
+ traefikVersionSchema.parse(await response.json());
+ return { success: true };
+ }
+
+ public async getDashboardDataAsync(): Promise {
+ const [
+ versionResult,
+ entryPointsResult,
+ httpRoutersResult,
+ httpServicesResult,
+ httpMiddlewaresResult,
+ tcpRoutersResult,
+ tcpServicesResult,
+ tcpMiddlewaresResult,
+ udpRoutersResult,
+ udpServicesResult,
+ ] = await Promise.allSettled([
+ this.getVersionAsync(),
+ this.getResourcesAsync("/api/entrypoints"),
+ this.getResourcesAsync("/api/http/routers"),
+ this.getResourcesAsync("/api/http/services"),
+ this.getResourcesAsync("/api/http/middlewares"),
+ this.getResourcesAsync("/api/tcp/routers"),
+ this.getResourcesAsync("/api/tcp/services"),
+ this.getResourcesAsync("/api/tcp/middlewares"),
+ this.getResourcesAsync("/api/udp/routers"),
+ this.getResourcesAsync("/api/udp/services"),
+ ]);
+ const version = versionResult.status === "fulfilled" ? versionResult.value : null;
+ const entryPoints = entryPointsResult.status === "fulfilled" ? entryPointsResult.value : [];
+ const httpRouters = httpRoutersResult.status === "fulfilled" ? httpRoutersResult.value : [];
+ const httpServices = httpServicesResult.status === "fulfilled" ? httpServicesResult.value : [];
+ const httpMiddlewares = httpMiddlewaresResult.status === "fulfilled" ? httpMiddlewaresResult.value : [];
+ const tcpRouters = tcpRoutersResult.status === "fulfilled" ? tcpRoutersResult.value : [];
+ const tcpServices = tcpServicesResult.status === "fulfilled" ? tcpServicesResult.value : [];
+ const tcpMiddlewares = tcpMiddlewaresResult.status === "fulfilled" ? tcpMiddlewaresResult.value : [];
+ const udpRouters = udpRoutersResult.status === "fulfilled" ? udpRoutersResult.value : [];
+ const udpServices = udpServicesResult.status === "fulfilled" ? udpServicesResult.value : [];
+
+ return {
+ version,
+ entryPoints: entryPoints.map((entryPoint, index) => entryPoint.name ?? `entrypoint-${index + 1}`),
+ http: this.createProtocolSummary(httpRouters, httpServices, httpMiddlewares),
+ tcp: this.createProtocolSummary(tcpRouters, tcpServices, tcpMiddlewares),
+ udp: {
+ routers: this.summarizeResources(udpRouters),
+ services: this.summarizeResources(udpServices),
+ },
+ };
+ }
+
+ private async getVersionAsync() {
+ const response = await this.fetchOkAsync("/api/version");
+ const version = traefikVersionSchema.parse(await response.json());
+ return version.Version ?? null;
+ }
+
+ private async getResourcesAsync(path: ResourcePath) {
+ const response = await this.fetchOkAsync(path);
+ return traefikResourcesSchema.parse(await response.json());
+ }
+
+ private createProtocolSummary(
+ routers: TraefikResource[],
+ services: TraefikResource[],
+ middlewares: TraefikResource[],
+ ): TraefikProtocolSummary {
+ return {
+ routers: this.summarizeResources(routers),
+ services: this.summarizeResources(services),
+ middlewares: this.summarizeResources(middlewares),
+ };
+ }
+
+ private summarizeResources(resources: TraefikResource[]): TraefikResourceSummary {
+ return resources.reduce(
+ (summary, resource) => {
+ const status = this.normalizeStatus(resource.status);
+ summary.total += 1;
+
+ if (status === "enabled") summary.enabled += 1;
+ if (status === "warning") summary.warnings += 1;
+ if (status === "error") summary.errors += 1;
+
+ return summary;
+ },
+ { total: 0, enabled: 0, warnings: 0, errors: 0 },
+ );
+ }
+
+ private normalizeStatus(status: string | undefined): TraefikResourceStatus {
+ if (!status) return "unknown";
+ const normalized = status.toLowerCase();
+
+ if (normalized === "enabled" || normalized === "disabled" || normalized === "warning" || normalized === "error") {
+ return normalized;
+ }
+
+ return "unknown";
+ }
+
+ private async fetchOkAsync(path: ResourcePath | "/api/version") {
+ const response = await fetchWithTrustedCertificatesAsync(this.url(path), {
+ headers: this.getAuthHeaders(),
+ timeout: 10_000,
+ });
+
+ if (!response.ok) {
+ throw new ResponseError(response);
+ }
+
+ return response;
+ }
+
+ private getAuthHeaders(): Record {
+ if (this.hasSecretValue("username") && this.hasSecretValue("password")) {
+ const credentials = Buffer.from(`${this.getSecretValue("username")}:${this.getSecretValue("password")}`).toString(
+ "base64",
+ );
+ return { Authorization: `Basic ${credentials}` };
+ }
+
+ if (this.hasSecretValue("apiKey")) {
+ return { Authorization: `Bearer ${this.getSecretValue("apiKey")}` };
+ }
+
+ return {};
+ }
+}
diff --git a/packages/integrations/src/traefik/traefik-types.ts b/packages/integrations/src/traefik/traefik-types.ts
new file mode 100644
index 000000000..5874ef41b
--- /dev/null
+++ b/packages/integrations/src/traefik/traefik-types.ts
@@ -0,0 +1,43 @@
+import { z } from "zod";
+
+export const traefikResourceStatusSchema = z.enum(["enabled", "disabled", "warning", "error", "unknown"]);
+
+const traefikResourceSchema = z
+ .object({
+ name: z.string().optional(),
+ provider: z.string().optional(),
+ status: z.string().optional(),
+ })
+ .passthrough();
+
+export const traefikVersionSchema = z
+ .object({
+ Version: z.string().optional(),
+ })
+ .passthrough();
+
+export const traefikResourcesSchema = z.array(traefikResourceSchema);
+
+export interface TraefikResourceSummary {
+ total: number;
+ enabled: number;
+ warnings: number;
+ errors: number;
+}
+
+export interface TraefikProtocolSummary {
+ routers: TraefikResourceSummary;
+ services: TraefikResourceSummary;
+ middlewares: TraefikResourceSummary;
+}
+
+export interface TraefikDashboardData {
+ version: string | null;
+ entryPoints: string[];
+ http: TraefikProtocolSummary;
+ tcp: TraefikProtocolSummary;
+ udp: Omit;
+}
+
+export type TraefikResource = z.infer[number];
+export type TraefikResourceStatus = z.infer;
diff --git a/packages/integrations/src/types.ts b/packages/integrations/src/types.ts
index 273b5b2d2..3d9186b3e 100644
--- a/packages/integrations/src/types.ts
+++ b/packages/integrations/src/types.ts
@@ -1,4 +1,6 @@
export * from "./interfaces/calendar/calendar-types";
+export * from "./interfaces/media-organizer/media-organizer-types";
+export type { IMediaOrganizerIntegration } from "./interfaces/media-organizer/media-organizer-integration";
export * from "./interfaces/dns-hole-summary/dns-hole-summary-types";
export * from "./interfaces/network-controller-summary/network-controller-summary-types";
export * from "./interfaces/firewall-summary/firewall-summary-types";
@@ -24,3 +26,4 @@ export * from "./paperless-ngx/paperless-ngx-types";
export * from "./umami/umami-types";
export * from "./gluetun/gluetun-types";
export * from "./beszel/beszel-types";
+export * from "./traefik/traefik-types";
diff --git a/packages/integrations/src/unraid/unraid-integration.ts b/packages/integrations/src/unraid/unraid-integration.ts
index bf8e77d3b..c10aad89e 100644
--- a/packages/integrations/src/unraid/unraid-integration.ts
+++ b/packages/integrations/src/unraid/unraid-integration.ts
@@ -1,7 +1,6 @@
import dayjs from "dayjs";
import type { fetch as undiciFetch } from "undici/types/fetch";
-import { humanFileSize } from "@homarr/common";
import { ResponseError } from "@homarr/common/server";
import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
import { createLogger } from "@homarr/core/infrastructure/logs";
@@ -59,7 +58,7 @@ export class UnraidIntegration extends Integration implements ISystemHealthMonit
cpuTemp: undefined, // Not implemented, see https://github.com/unraid/api/issues/1597
fileSystem: systemInfo.array.disks.map((disk) => ({
deviceName: disk.name,
- used: humanFileSize(disk.fsUsed * 1024), // API is in KiB (kibibytes), convert to bytes
+ used: `${disk.fsUsed * 1024}`, // API is in KiB (kibibytes), convert to bytes
available: `${(disk.size - disk.fsUsed) * 1024}`, // free space left on the disk, API is in KiB (kibibytes)
percentage: (disk.fsUsed / disk.size) * 100, // The units are the same, therefore the actual unit is irrelevant
})),
diff --git a/packages/integrations/test/bazarr-unit.spec.ts b/packages/integrations/test/bazarr-unit.spec.ts
new file mode 100644
index 000000000..eed0f9082
--- /dev/null
+++ b/packages/integrations/test/bazarr-unit.spec.ts
@@ -0,0 +1,110 @@
+// @vitest-environment node
+
+import { Response } from "undici";
+import { beforeEach, describe, expect, test, vi } from "vitest";
+
+import { createDb } from "@homarr/db/test";
+import { fetchWithTrustedCertificatesAsync } from "@homarr/core/infrastructure/http";
+
+import type { IntegrationSecret } from "../src/base/types";
+import { BazarrIntegration } from "../src/bazarr/bazarr-integration";
+
+vi.mock("@homarr/db", async (importActual) => {
+ const actual = await importActual();
+ return { ...actual, db: createDb() };
+});
+
+vi.mock("@homarr/core/infrastructure/certificates", async (importActual) => {
+ const actual = await importActual();
+ return {
+ ...actual,
+ getTrustedCertificateHostnamesAsync: vi.fn().mockResolvedValue([]),
+ };
+});
+
+vi.mock("@homarr/core/infrastructure/http", () => ({
+ fetchWithTrustedCertificatesAsync: vi.fn(),
+}));
+
+const TEST_URL = "https://bazarr.example.com";
+const API_KEY = "test-api-key";
+
+const mockFetch = vi.mocked(fetchWithTrustedCertificatesAsync);
+
+const createIntegration = (decryptedSecrets: IntegrationSecret[] = [{ kind: "apiKey", value: API_KEY }]) =>
+ new BazarrIntegration({
+ id: "test-bazarr",
+ name: "Test Bazarr",
+ url: TEST_URL,
+ externalUrl: null,
+ decryptedSecrets,
+ });
+
+beforeEach(() => {
+ mockFetch.mockReset();
+});
+
+describe("BazarrIntegration getBadgesAsync", () => {
+ test("maps badge counts from the Bazarr API", async () => {
+ mockFetch.mockImplementation(
+ () =>
+ Promise.resolve(
+ new Response(
+ JSON.stringify({
+ episodes: 12,
+ movies: 4,
+ providers: 1,
+ status: 2,
+ sonarr_signalr: "LIVE",
+ radarr_signalr: "",
+ announcements: 0,
+ }),
+ {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ },
+ ),
+ ) as unknown as ReturnType,
+ );
+
+ const badges = await createIntegration().getBadgesAsync();
+
+ expect(badges).toStrictEqual({
+ episodes: 12,
+ movies: 4,
+ providers: 1,
+ status: 2,
+ sonarr_signalr: "LIVE",
+ radarr_signalr: "",
+ announcements: 0,
+ });
+ });
+
+ test("sends the API key in the X-API-KEY header", async () => {
+ mockFetch.mockImplementation(
+ () =>
+ Promise.resolve(
+ new Response(
+ JSON.stringify({
+ episodes: 0,
+ movies: 0,
+ providers: 0,
+ status: 0,
+ sonarr_signalr: "",
+ radarr_signalr: "",
+ announcements: 0,
+ }),
+ {
+ status: 200,
+ headers: { "content-type": "application/json" },
+ },
+ ),
+ ) as unknown as ReturnType,
+ );
+
+ await createIntegration().getBadgesAsync();
+
+ const [, requestInit] = mockFetch.mock.calls[0] ?? [];
+ expect(requestInit?.headers).toMatchObject({ "X-API-KEY": API_KEY });
+ });
+});
diff --git a/packages/old-import/src/user-schema.ts b/packages/old-import/src/user-schema.ts
index 84e544ea3..1bbe91211 100644
--- a/packages/old-import/src/user-schema.ts
+++ b/packages/old-import/src/user-schema.ts
@@ -1,5 +1,7 @@
import { z } from "zod/v4";
+import { requiredNullableEmailSchema } from "@homarr/validation/email";
+
const regexEncryptedSchema = z.string().regex(/^[a-f0-9]+\.[a-f0-9]+$/g);
const encryptedSchema = z.custom<`${string}.${string}`>((value) => regexEncryptedSchema.safeParse(value).success);
@@ -7,7 +9,7 @@ const encryptedSchema = z.custom<`${string}.${string}`>((value) => regexEncrypte
export const oldmarrImportUserSchema = z.object({
id: z.string(),
name: z.string(),
- email: z.string().email().nullable(),
+ email: requiredNullableEmailSchema,
emailVerified: z.date().nullable(),
image: z.string().nullable(),
isAdmin: z.boolean(),
diff --git a/packages/old-import/src/widgets/options.ts b/packages/old-import/src/widgets/options.ts
index b407d0e45..a4ae66bb0 100644
--- a/packages/old-import/src/widgets/options.ts
+++ b/packages/old-import/src/widgets/options.ts
@@ -165,6 +165,7 @@ const optionMapping: OptionMapping = {
"sectionIndicatorColor" in oldOptions ? oldOptions.sectionIndicatorColor : undefined,
showUptime: () => undefined,
gpu: () => undefined,
+ visibleStorageVolumes: () => undefined,
visibleClusterSections: (oldOptions) => {
if (!("showNode" in oldOptions)) return undefined;
diff --git a/packages/request-handler/src/bazarr.ts b/packages/request-handler/src/bazarr.ts
new file mode 100644
index 000000000..56b391658
--- /dev/null
+++ b/packages/request-handler/src/bazarr.ts
@@ -0,0 +1,15 @@
+import { createIntegrationAsync } from "@homarr/integrations";
+import type { BazarrBadges } from "@homarr/integrations";
+
+import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
+
+export const bazarrBadgesRequestHandler = createIntegrationRequestHandler<
+ BazarrBadges,
+ "bazarr",
+ Record
+>({
+ async requestAsync(integration) {
+ const integrationInstance = await createIntegrationAsync(integration);
+ return await integrationInstance.getBadgesAsync();
+ },
+});
diff --git a/packages/request-handler/src/beszel.ts b/packages/request-handler/src/beszel.ts
index 4a60a3a3a..dab263e3a 100644
--- a/packages/request-handler/src/beszel.ts
+++ b/packages/request-handler/src/beszel.ts
@@ -34,6 +34,7 @@ function mapToSystemRow(system: BeszelSystem, details: BeszelSystemDetails | nul
cpu: info.cpu,
memory: info.mp,
disk: info.dp,
+ extraFilesystems: info.efs ?? {},
gpu: info.g ?? 0,
loadAvg: info.la ?? null,
// bb = bytes/s (newer), b = Mbps (legacy, multiply to get bytes/s)
@@ -122,6 +123,9 @@ export const beszelStatsRequestHandler = createIntegrationRequestHandler<
"beszel" | "mock",
{ systemId: string; timePeriod: string; includeDocker: boolean }
>({
+ // No cache — the widget polls every 5s for live updates;
+ // a TTL here would serve stale records between polls.
+ cacheTtlMs: 0,
async requestAsync(integration, input) {
const start = performance.now();
const config = timePeriodConfig[input.timePeriod] ?? { type: "1m", perPage: 60 };
diff --git a/packages/request-handler/src/docker.ts b/packages/request-handler/src/docker.ts
index 12a78c05a..a238b4a3c 100644
--- a/packages/request-handler/src/docker.ts
+++ b/packages/request-handler/src/docker.ts
@@ -300,7 +300,10 @@ async function getContainersWithStatsAsync() {
const stats = await instance
.getContainer(container.Id)
- .stats({ stream: false, "one-shot": true })
+ // Not in one-shot mode: the daemon then includes precpu_stats (the
+ // previous reading), which is required to compute the current CPU usage
+ // as a delta. One-shot omits it and would only expose lifetime totals.
+ .stats({ stream: false })
.catch(
() =>
({
@@ -336,12 +339,22 @@ export function calculateCpuUsage(stats: ContainerStats): number {
}
const numberOfCpus = stats.cpu_stats.online_cpus;
- const usage = stats.cpu_stats.system_cpu_usage;
- if (!usage || usage === 0) {
+
+ // Docker's own formula for the current (instantaneous) CPU usage: it compares
+ // the latest reading against the previous one (precpu_stats). Dividing the
+ // cumulative total_usage by the cumulative system_cpu_usage instead would
+ // report the container's lifetime average, which stays high long after a load
+ // spike has ended. precpu_stats is only present when the stats are NOT fetched
+ // in one-shot mode; when it is absent (e.g. Podman) the deltas fall back to the
+ // cumulative totals, matching the previous behaviour.
+ const cpuDelta = stats.cpu_stats.cpu_usage.total_usage - (stats.precpu_stats?.cpu_usage?.total_usage ?? 0);
+ const systemDelta = (stats.cpu_stats.system_cpu_usage ?? 0) - (stats.precpu_stats?.system_cpu_usage ?? 0);
+
+ if (systemDelta <= 0 || cpuDelta < 0) {
return 0;
}
- return (stats.cpu_stats.cpu_usage.total_usage / usage) * numberOfCpus * 100;
+ return (cpuDelta / systemDelta) * numberOfCpus * 100;
}
export function calculateMemoryUsage(stats: ContainerStats): number {
diff --git a/packages/request-handler/src/health-monitoring.ts b/packages/request-handler/src/health-monitoring.ts
index 604fff9da..959d3e0ed 100644
--- a/packages/request-handler/src/health-monitoring.ts
+++ b/packages/request-handler/src/health-monitoring.ts
@@ -6,7 +6,7 @@ import { createIntegrationRequestHandler } from "./lib/integration-request-handl
export const systemInfoRequestHandler = createIntegrationRequestHandler<
SystemHealthMonitoring,
- Exclude, "proxmox" | "coolify" | "beszel">,
+ Exclude, "proxmox" | "coolify" | "beszel" | "patchmon">,
Record
>({
async requestAsync(integration, _input) {
diff --git a/packages/request-handler/src/lib/integration-request-handler.ts b/packages/request-handler/src/lib/integration-request-handler.ts
index d2fa0f1a4..e60be1fb8 100644
--- a/packages/request-handler/src/lib/integration-request-handler.ts
+++ b/packages/request-handler/src/lib/integration-request-handler.ts
@@ -12,6 +12,7 @@ type IntegrationOfKind = Omit> {
requestAsync: (integration: IntegrationOfKind, input: TInput) => Promise;
+ cacheTtlMs?: number;
}
export const createIntegrationRequestHandler = <
@@ -20,11 +21,24 @@ export const createIntegrationRequestHandler = <
TInput extends Record,
>(
options: Options,
-) => ({
- handler: (integration: IntegrationOfKind, itemOptions: TInput) => {
- const inner = createRequestHandler({
- requestAsync: async (input) => options.requestAsync(integration, input.options),
- });
- return inner.handler({ integrationId: integration.id, options: itemOptions });
- },
-});
+) => {
+ const integrationMap = new Map>();
+ const inner = createRequestHandler({
+ requestAsync: async (input) => {
+ const integration = integrationMap.get(input.integrationId);
+ if (!integration) {
+ throw new Error(`Integration ${input.integrationId} not found in cache`);
+ }
+ return options.requestAsync(integration, input.options);
+ },
+ cacheTtlMs: options.cacheTtlMs,
+ });
+
+ return {
+ invalidateCache: inner.invalidateCache,
+ handler: (integration: IntegrationOfKind, itemOptions: TInput) => {
+ integrationMap.set(integration.id, integration);
+ return inner.handler({ integrationId: integration.id, options: itemOptions });
+ },
+ };
+};
diff --git a/packages/request-handler/src/lib/request-handler.ts b/packages/request-handler/src/lib/request-handler.ts
index bafcc8c8a..f733078ee 100644
--- a/packages/request-handler/src/lib/request-handler.ts
+++ b/packages/request-handler/src/lib/request-handler.ts
@@ -22,6 +22,10 @@ export const createRequestHandler = >>();
return {
+ invalidateCache: () => {
+ cache.clear();
+ inflight.clear();
+ },
handler: (input: TInput) => ({
async getDataAsync(): Promise<{ data: TData; timestamp: Date }> {
const ttl = options.cacheTtlMs ?? DEFAULT_TTL_MS;
diff --git a/packages/request-handler/src/media-organizer.ts b/packages/request-handler/src/media-organizer.ts
new file mode 100644
index 000000000..fbb4d3460
--- /dev/null
+++ b/packages/request-handler/src/media-organizer.ts
@@ -0,0 +1,33 @@
+import type { IntegrationKindByCategory } from "@homarr/definitions";
+import { createIntegrationAsync } from "@homarr/integrations";
+import type { IMediaOrganizerIntegration, MissingMediaItem, QueuedMediaItem } from "@homarr/integrations/types";
+
+import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
+
+interface MediaOrganizerData {
+ missing: MissingMediaItem[];
+ missingCount: number;
+ queued: QueuedMediaItem[];
+ queuedCount: number;
+}
+
+export const mediaOrganizerRequestHandler = createIntegrationRequestHandler<
+ MediaOrganizerData,
+ IntegrationKindByCategory<"mediaOrganizer">,
+ { pageSize: number }
+>({
+ async requestAsync(integration, input) {
+ const integrationInstance = (await createIntegrationAsync(integration)) as unknown as IMediaOrganizerIntegration;
+ const [missingResult, queueResult] = await Promise.all([
+ integrationInstance.getMissingAsync(input.pageSize),
+ integrationInstance.getMediaQueueAsync(input.pageSize),
+ ]);
+ return {
+ missing: missingResult.items,
+ missingCount: missingResult.totalCount,
+ queued: queueResult.items,
+ queuedCount: queueResult.totalCount,
+ };
+ },
+ cacheTtlMs: 60_000,
+});
diff --git a/packages/request-handler/src/patchmon.ts b/packages/request-handler/src/patchmon.ts
new file mode 100644
index 000000000..021897511
--- /dev/null
+++ b/packages/request-handler/src/patchmon.ts
@@ -0,0 +1,15 @@
+import { createIntegrationAsync } from "@homarr/integrations";
+import type { PatchMonStats } from "@homarr/integrations";
+
+import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
+
+export const patchmonStatsRequestHandler = createIntegrationRequestHandler<
+ PatchMonStats,
+ "patchmon",
+ Record
+>({
+ async requestAsync(integration) {
+ const integrationInstance = await createIntegrationAsync(integration);
+ return await integrationInstance.getStatsAsync();
+ },
+});
diff --git a/packages/request-handler/src/release-providers.ts b/packages/request-handler/src/release-providers.ts
index f4a647668..d4a9dd2b3 100644
--- a/packages/request-handler/src/release-providers.ts
+++ b/packages/request-handler/src/release-providers.ts
@@ -134,7 +134,7 @@ const getGithubApi = (baseUrl: string, userAgent: string, token?: string) =>
baseUrl,
auth: token,
request: { fetch: fetchWithTrustedCertificatesAsync },
- throttle: { enabled: false },
+ throttle: { enabled: true },
userAgent,
});
diff --git a/packages/request-handler/src/test/docker.spec.ts b/packages/request-handler/src/test/docker.spec.ts
index b4e34f816..12dbb347b 100644
--- a/packages/request-handler/src/test/docker.spec.ts
+++ b/packages/request-handler/src/test/docker.spec.ts
@@ -75,6 +75,26 @@ describe("calculateCpuUsage", () => {
// (500 / 100000) * 2 * 100 = 1
expect(calculateCpuUsage(stats)).toBe(1);
});
+
+ test("should use the delta against precpu_stats for the current usage", () => {
+ const stats = createStats({
+ cpu_stats: { online_cpus: 4, cpu_usage: { total_usage: 1_002_000 }, system_cpu_usage: 20_000 },
+ precpu_stats: { cpu_usage: { total_usage: 1_000_000 }, system_cpu_usage: 10_000 },
+ });
+ // Despite a large lifetime total_usage, only the recent delta counts:
+ // (2000 / 10000) * 4 * 100 = 80
+ expect(calculateCpuUsage(stats)).toBe(80);
+ });
+
+ test("should report 0 for a container that was busy over its lifetime but is idle now", () => {
+ const stats = createStats({
+ cpu_stats: { online_cpus: 4, cpu_usage: { total_usage: 1_000_000 }, system_cpu_usage: 20_000 },
+ precpu_stats: { cpu_usage: { total_usage: 1_000_000 }, system_cpu_usage: 10_000 },
+ });
+ // No CPU delta since the last reading -> current usage is 0, even though the
+ // lifetime average would be high. This is the regression the fix addresses.
+ expect(calculateCpuUsage(stats)).toBe(0);
+ });
});
describe("calculateMemoryUsage", () => {
diff --git a/packages/request-handler/src/traefik.ts b/packages/request-handler/src/traefik.ts
new file mode 100644
index 000000000..1b87e2bb1
--- /dev/null
+++ b/packages/request-handler/src/traefik.ts
@@ -0,0 +1,15 @@
+import { createIntegrationAsync } from "@homarr/integrations";
+import type { TraefikDashboardData } from "@homarr/integrations/types";
+
+import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
+
+export const traefikRequestHandler = createIntegrationRequestHandler<
+ TraefikDashboardData,
+ "traefik",
+ Record
+>({
+ async requestAsync(integration, _input) {
+ const integrationInstance = await createIntegrationAsync(integration);
+ return await integrationInstance.getDashboardDataAsync();
+ },
+});
diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json
index c5bf0f0d2..e227775fb 100644
--- a/packages/translation/src/lang/ca.json
+++ b/packages/translation/src/lang/ca.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json
index d7095d953..aa0baf940 100644
--- a/packages/translation/src/lang/cn.json
+++ b/packages/translation/src/lang/cn.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "显示文件系统信息"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "默认标签"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "显示背景使用栏"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/cr.json b/packages/translation/src/lang/cr.json
index 830af4676..3a4ae4319 100644
--- a/packages/translation/src/lang/cr.json
+++ b/packages/translation/src/lang/cr.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "crwdns1082:0crwdne1082:0"
},
+ "visibleStorageVolumes": {
+ "label": "crwdns5741:0crwdne5741:0",
+ "description": "crwdns5743:0crwdne5743:0",
+ "placeholder": "crwdns5745:0crwdne5745:0"
+ },
"defaultTab": {
"label": "crwdns2636:0crwdne2636:0"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "crwdns3842:0crwdne3842:0"
+ },
+ "visibleStorageVolumes": {
+ "label": "crwdns5747:0crwdne5747:0",
+ "description": "crwdns5749:0crwdne5749:0",
+ "placeholder": "crwdns5751:0crwdne5751:0"
}
},
"status": {
diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json
index 71fd83bee..016c40061 100644
--- a/packages/translation/src/lang/cs.json
+++ b/packages/translation/src/lang/cs.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Zobrazit informace o souborovém systému"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json
index 8d8582362..bbb6da4c6 100644
--- a/packages/translation/src/lang/da.json
+++ b/packages/translation/src/lang/da.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Vis information om filsystemet"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Standard fane"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Vis forbrugslinje i baggrunden"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/de-CH.json b/packages/translation/src/lang/de-CH.json
index 59ece15da..4c9c8f313 100644
--- a/packages/translation/src/lang/de-CH.json
+++ b/packages/translation/src/lang/de-CH.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Dateisystem Info anzeigen"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Standard Tab"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json
index 03d8b7934..086b3ea36 100644
--- a/packages/translation/src/lang/de.json
+++ b/packages/translation/src/lang/de.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Dateisystem Info anzeigen"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Standard Tab"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Zeige Hintergrundnutzungsleiste"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json
index dfcc2c11b..3e64041dd 100644
--- a/packages/translation/src/lang/el.json
+++ b/packages/translation/src/lang/el.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Εμφάνιση Πληροφοριών Συστήματος Αρχείων"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/en-gb.json b/packages/translation/src/lang/en-gb.json
index a80b7cf55..15ed8c7fe 100644
--- a/packages/translation/src/lang/en-gb.json
+++ b/packages/translation/src/lang/en-gb.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Show Filesystem Info"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Default tab"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json
index 5230d0157..0074875d8 100644
--- a/packages/translation/src/lang/en.json
+++ b/packages/translation/src/lang/en.json
@@ -1301,6 +1301,14 @@
"label": "API Key (Secret)",
"newLabel": "New API Key (Secret)"
},
+ "patchmonApiKey": {
+ "label": "API Key",
+ "newLabel": "New API Key"
+ },
+ "patchmonApiSecret": {
+ "label": "API Secret",
+ "newLabel": "New API Secret"
+ },
"githubAppId": {
"label": "App Id",
"newLabel": "New App Id"
@@ -1344,9 +1352,21 @@
}
}
},
+ "traefik": {
+ "name": "Traefik",
+ "description": "Cloud-native reverse proxy and load balancer"
+ },
"paperlessNgx": {
"name": "Paperless-ngx",
"description": "Document management system for archiving and organizing scanned documents"
+ },
+ "patchmon": {
+ "name": "PatchMon",
+ "description": "Patch management and monitoring for Linux hosts"
+ },
+ "bazarr": {
+ "name": "Bazarr",
+ "description": "Companion application to Sonarr and Radarr that manages and downloads subtitles"
}
},
"media": {
@@ -1952,6 +1972,8 @@
"clear": "Clear formatting",
"heading": "Heading {level}",
"align": "Align text: {position}",
+ "directionLtr": "Set text direction left to right",
+ "directionRtl": "Set text direction right to left",
"blockquote": "Blockquote",
"horizontalLine": "Horizontal line",
"bulletList": "Bullet list",
@@ -2300,6 +2322,11 @@
"fileSystem": {
"label": "Show Filesystem Info"
},
+ "visibleStorageVolumes": {
+ "label": "Visible storage volumes",
+ "description": "Only available when all selected integrations are Synology. Leave empty to show all detected storage volumes.",
+ "placeholder": "Select storage volumes"
+ },
"defaultTab": {
"label": "Default tab"
},
@@ -2765,6 +2792,193 @@
"internalServerError": "Failed to fetch Paperless-ngx data"
}
},
+ "patchmon": {
+ "name": "PatchMon",
+ "description": "Overview of host patch status from PatchMon",
+ "title": "PatchMon Statistics",
+ "totalHosts": "Total Hosts",
+ "hostsNeedingUpdates": "Needs Updates",
+ "securityUpdates": "Security Updates",
+ "upToDateHosts": "Up-to-Date Hosts",
+ "hostsWithSecurityUpdates": "Hosts with Security Updates",
+ "recentUpdates24h": "Updates (24h)",
+ "totalOutdatedPackages": "Outdated Packages",
+ "totalRepos": "Repositories",
+ "osDistribution": "OS Distribution",
+ "compliance": "Patch Compliance",
+ "complianceRatio": "{upToDate} / {total}",
+ "lastUpdated": "Updated {time}",
+ "option": {
+ "showTotalHosts": {
+ "label": "Show total hosts",
+ "description": "Display the total number of monitored hosts"
+ },
+ "showHostsNeedingUpdates": {
+ "label": "Show hosts needing updates",
+ "description": "Display hosts with at least one outdated package"
+ },
+ "showSecurityUpdates": {
+ "label": "Show security updates",
+ "description": "Display the total number of security updates available"
+ },
+ "showUpToDateHosts": {
+ "label": "Show up-to-date hosts",
+ "description": "Display hosts with zero outdated packages"
+ },
+ "showHostsWithSecurityUpdates": {
+ "label": "Show hosts with security updates",
+ "description": "Display hosts requiring security patches"
+ },
+ "showRecentUpdates24h": {
+ "label": "Show recent updates (24h)",
+ "description": "Display the number of updates applied in the last 24 hours"
+ },
+ "showTotalOutdatedPackages": {
+ "label": "Show outdated packages",
+ "description": "Display the total number of outdated packages across all hosts"
+ },
+ "showTotalRepos": {
+ "label": "Show repositories",
+ "description": "Display the number of active repositories being monitored"
+ },
+ "enableThresholdColors": {
+ "label": "Enable threshold colors",
+ "description": "Color stat values green, yellow, or red based on severity presets"
+ },
+ "useCustomThresholds": {
+ "label": "Advanced thresholds",
+ "description": "Customize warning and critical thresholds per stat using absolute counts or percentages of total hosts"
+ },
+ "thresholdMode": {
+ "option": {
+ "absolute": "Absolute count",
+ "percent": "Percent of total hosts"
+ }
+ },
+ "hostsNeedingUpdatesThresholdMode": {
+ "label": "Needs updates threshold mode",
+ "description": "Compare the needs-updates count as an absolute value or percentage of total hosts"
+ },
+ "hostsNeedingUpdatesWarningAt": {
+ "label": "Needs updates warning threshold",
+ "description": "Enter yellow when the value reaches this threshold"
+ },
+ "hostsNeedingUpdatesCriticalAt": {
+ "label": "Needs updates critical threshold",
+ "description": "Enter red when the value reaches this threshold"
+ },
+ "securityUpdatesThresholdMode": {
+ "label": "Security updates threshold mode",
+ "description": "Compare the security-updates count as an absolute value or percentage of total hosts"
+ },
+ "securityUpdatesWarningAt": {
+ "label": "Security updates warning threshold",
+ "description": "Enter yellow when the value reaches this threshold"
+ },
+ "securityUpdatesCriticalAt": {
+ "label": "Security updates critical threshold",
+ "description": "Enter red when the value reaches this threshold"
+ },
+ "hostsWithSecurityUpdatesThresholdMode": {
+ "label": "Hosts with security updates threshold mode",
+ "description": "Compare the host count as an absolute value or percentage of total hosts"
+ },
+ "hostsWithSecurityUpdatesWarningAt": {
+ "label": "Hosts with security updates warning threshold",
+ "description": "Enter yellow when the value reaches this threshold"
+ },
+ "hostsWithSecurityUpdatesCriticalAt": {
+ "label": "Hosts with security updates critical threshold",
+ "description": "Enter red when the value reaches this threshold"
+ },
+ "upToDateHostsThresholdMode": {
+ "label": "Up-to-date hosts threshold mode",
+ "description": "Compare the up-to-date host count as an absolute value or percentage of total hosts"
+ },
+ "upToDateHostsWarningAt": {
+ "label": "Up-to-date hosts warning threshold",
+ "description": "Enter yellow when the value is at or above this threshold but below full coverage"
+ },
+ "upToDateHostsCriticalAt": {
+ "label": "Up-to-date hosts critical threshold",
+ "description": "Enter red when the value falls below this threshold"
+ },
+ "totalOutdatedPackagesThresholdMode": {
+ "label": "Outdated packages threshold mode",
+ "description": "Compare the outdated-packages count as an absolute value or percentage of total hosts"
+ },
+ "totalOutdatedPackagesWarningAt": {
+ "label": "Outdated packages warning threshold",
+ "description": "Enter yellow when the value reaches this threshold"
+ },
+ "totalOutdatedPackagesCriticalAt": {
+ "label": "Outdated packages critical threshold",
+ "description": "Enter red when the value reaches this threshold"
+ },
+ "showOsDistribution": {
+ "label": "Show OS distribution",
+ "description": "Display a breakdown of monitored hosts by operating system"
+ },
+ "osDistributionLimit": {
+ "label": "OS distribution limit",
+ "description": "Maximum number of operating systems to display",
+ "option": {
+ "3": "Top 3",
+ "5": "Top 5",
+ "10": "Top 10",
+ "all": "All"
+ }
+ },
+ "showOsVersion": {
+ "label": "Show OS version",
+ "description": "Append the OS version to each distribution label when available"
+ },
+ "showComplianceHero": {
+ "label": "Show compliance hero",
+ "description": "Display a compliance ring showing the percentage of up-to-date hosts"
+ },
+ "osDisplayMode": {
+ "label": "OS display mode",
+ "description": "Choose how to display the operating system distribution",
+ "option": {
+ "bars": "Horizontal bars",
+ "donut": "Donut chart"
+ }
+ }
+ },
+ "error": {
+ "internalServerError": "Failed to fetch PatchMon data"
+ }
+ },
+ "bazarr": {
+ "name": "Bazarr",
+ "description": "Overview of missing subtitles and health status from your Bazarr instance",
+ "episodes": "Missing Episodes",
+ "movies": "Missing Movies",
+ "providers": "Provider Issues",
+ "status": "Health Issues",
+ "option": {
+ "showMissingEpisodes": {
+ "label": "Show missing episodes",
+ "description": "Display the number of episodes with missing subtitles"
+ },
+ "showMissingMovies": {
+ "label": "Show missing movies",
+ "description": "Display the number of movies with missing subtitles"
+ },
+ "showProviderIssues": {
+ "label": "Show provider issues",
+ "description": "Display the number of subtitle providers with issues"
+ },
+ "showHealthIssues": {
+ "label": "Show health issues",
+ "description": "Display the number of Bazarr health issues"
+ }
+ },
+ "error": {
+ "internalServerError": "Failed to fetch Bazarr data"
+ }
+ },
"immich-serverStats": {
"name": "Immich Server Stats",
"description": "Information about your Immich instance",
@@ -3104,6 +3318,35 @@
}
}
},
+ "mediaMissing": {
+ "name": "Missing & Queued Media",
+ "description": "Shows missing and queued movies and episodes from Radarr and Sonarr",
+ "option": {
+ "showMissing": {
+ "label": "Show missing items"
+ },
+ "showQueued": {
+ "label": "Show queued items"
+ },
+ "pageSize": {
+ "label": "Items per page"
+ }
+ },
+ "tab": {
+ "missing": "Missing",
+ "queued": "Queued"
+ },
+ "type": {
+ "movie": "Movie",
+ "episode": "Episode"
+ },
+ "empty": {
+ "missing": "No missing items",
+ "queued": "No queued items",
+ "noTabsEnabled": "Enable at least one tab in the widget settings"
+ },
+ "timeLeft": "Time left"
+ },
"rssFeed": {
"name": "RSS feeds",
"description": "Monitor and display one or more generic RSS, ATOM or JSON feeds",
@@ -3347,7 +3590,11 @@
"name": "Notifications",
"description": "Display notification history from an integration",
"noItems": "No notifications to display.",
- "option": {}
+ "option": {
+ "hideLogos": {
+ "label": "Hide logos"
+ }
+ }
},
"speedtestTracker": {
"name": "Speedtest Tracker",
@@ -3428,6 +3675,40 @@
"internalServerError": "Failed to fetch uptime data"
}
},
+ "traefik": {
+ "name": "Traefik",
+ "description": "Overview of Traefik routers, services, middlewares, and entry points",
+ "option": {
+ "showTcp": {
+ "label": "Show TCP"
+ },
+ "showUdp": {
+ "label": "Show UDP"
+ },
+ "showEntryPoints": {
+ "label": "Show entry points"
+ }
+ },
+ "instances": "Traefik instances",
+ "versionUnknown": "Version unknown",
+ "summary": {
+ "routers": "Routers",
+ "entryPoints": "Entry points"
+ },
+ "resource": {
+ "routers": "Routers",
+ "services": "Services",
+ "middlewares": "Middlewares"
+ },
+ "status": {
+ "healthy": "Healthy",
+ "errors": "{count} errors",
+ "warnings": "{count} warnings"
+ },
+ "error": {
+ "internalServerError": "Failed to fetch Traefik data"
+ }
+ },
"audioStats": {
"name": "Audio stats",
"description": "Library and playback statistics from Navidrome or Audiobookshelf",
@@ -3554,6 +3835,11 @@
},
"showBackgroundBar": {
"label": "Show background usage bar"
+ },
+ "visibleStorageVolumes": {
+ "label": "Visible storage volumes",
+ "description": "Only available when all selected integrations are Synology. Leave empty to show all detected storage volumes.",
+ "placeholder": "Select storage volumes"
}
},
"status": {
@@ -3789,8 +4075,8 @@
},
"disk": {
"title": "Disk Usage",
- "subtitle": "Usage of root partition",
- "series": "Used"
+ "subtitle": "Usage by filesystem",
+ "series": "Root"
},
"diskIO": {
"title": "Disk I/O",
@@ -3798,6 +4084,11 @@
"read": "Read",
"write": "Write"
},
+ "storage": {
+ "title": "Storage",
+ "subtitle": "Per-filesystem disk usage",
+ "series": "Used"
+ },
"network": {
"title": "Bandwidth",
"subtitle": "Network traffic of public interfaces",
@@ -4930,6 +5221,9 @@
"title": "Containers",
"table": {
"updated": "Updated {when}",
+ "refresh": {
+ "lastUpdated": "Last refresh {when}"
+ },
"search": "Seach {count} containers",
"selected": "{selectCount} of {totalCount} containers selected",
"footer": "Total {count} containers",
diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json
index 0a76d6115..a64ae6915 100644
--- a/packages/translation/src/lang/es.json
+++ b/packages/translation/src/lang/es.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Mostrar información del sistema de archivos"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Seleccionar pestaña predeterminada"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Mostrar la barra de uso en segundo plano"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json
index 29a70aea5..23da3299c 100644
--- a/packages/translation/src/lang/et.json
+++ b/packages/translation/src/lang/et.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/fi.json b/packages/translation/src/lang/fi.json
index 32d449dc2..7388d9322 100644
--- a/packages/translation/src/lang/fi.json
+++ b/packages/translation/src/lang/fi.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json
index 604011c9e..881db7cee 100644
--- a/packages/translation/src/lang/fr.json
+++ b/packages/translation/src/lang/fr.json
@@ -8,9 +8,9 @@
"action": {
"scratch": "Partir de zéro",
"importOldmarr": "Importer depuis Homarr avant la 1.0",
- "restoreSqlite": "",
- "restoreSqliteDescription": "",
- "backToOptions": ""
+ "restoreSqlite": "Restaurer depuis une sauvegarde SQLite",
+ "restoreSqliteDescription": "Téléchargez une sauvegarde complète de la base de données SQLite depuis une instance Homarr précédente. Cela restaurera tous les tableaux, utilisateurs, applications, intégrations et paramètres.",
+ "backToOptions": "← Retour aux options de configuration"
}
},
"import": {
@@ -110,29 +110,29 @@
"message": "Une erreur s'est produite lors de la configuration de votre tableau de bord. Veuillez réessayer."
},
"helpers": {
- "tooltip": "",
- "description": ""
+ "tooltip": "Aides pour les URL",
+ "description": "Ces aides essaient de deviner l'URL de vos services. Si cela ne fonctionne pas, tapez simplement l'adresse manuellement."
}
},
"urlTemplate": {
- "label": "",
- "placeholder": "",
- "hint": "",
- "warning": "",
+ "label": "URL de base",
+ "placeholder": "homelab.local ou 192.168.1.1",
+ "hint": "Entrez votre domaine de base ou votre IP pour le remplissage automatique des URL d'intégration",
+ "warning": "Définir votre URL de base maintenant remplira automatiquement toutes les URL d'intégration, ce qui vous fera gagner du temps lors de la configuration",
"preview": "ex. {example}",
"mode": {
"subdomain": "Sous-domaine",
- "hostPort": ""
+ "hostPort": "Hôte:Port"
}
},
"docker": {
- "detected": "",
- "detectedBreakdown": "",
- "summary": "",
- "appBadge": "",
- "appSectionLabel": "",
- "scanning": "",
- "scanningDescription": ""
+ "detected": "Docker a détecté {count} services",
+ "detectedBreakdown": "Intégrations {integrations} · Applications {apps}",
+ "summary": "Les applications {apps} ont été détectées par Homarr, dont {integrations} ont des intégrations intégrées",
+ "appBadge": "App",
+ "appSectionLabel": "Applications à ajouter au tableau de bord ({count} sélectionné)",
+ "scanning": "Analyse de Docker...",
+ "scanningDescription": "Recherche de conteneurs en cours d'exécution sur votre système"
}
},
"finish": {
@@ -177,7 +177,7 @@
},
"password": {
"label": "Mot de passe",
- "suggestionsTitle": "",
+ "suggestionsTitle": "Suggestions de mot de passe",
"suggestion": {
"length": "Contient au moins 8 caractères",
"lowercase": "Inclut une lettre minuscule",
@@ -205,7 +205,7 @@
"label": "Ouvrir les résultats de recherche dans un nouvel onglet"
},
"ddgBangs": {
- "label": ""
+ "label": "Activer les bangs DuckDuckGo"
}
},
"error": {
@@ -298,10 +298,10 @@
"changeDdgBangs": {
"notification": {
"success": {
- "message": ""
+ "message": "Bangs DuckDuckGo activés avec succès"
},
"error": {
- "message": ""
+ "message": "Impossible d'activer/désactiver les bangs DuckDuckGo"
}
}
},
@@ -687,45 +687,45 @@
"customWidget": {
"page": {
"list": {
- "title": "",
- "noResults": "",
- "loading": ""
+ "title": "Widgets personnalisés",
+ "noResults": "Pas encore de widgets personnalisés. Créez votre premier widget!",
+ "loading": "Chargement..."
},
"create": {
- "title": "",
- "subtitle": ""
+ "title": "Créer un widget personnalisé",
+ "subtitle": "Définissez une URL de l'API, l'authentification, et comment afficher les données de réponse."
},
"edit": {
- "title": ""
+ "title": "Modifier le widget personnalisé"
}
},
"action": {
- "create": "",
- "import": "",
- "save": "",
- "delete": "",
- "deleteConfirm": "",
- "export": "",
+ "create": "Créer",
+ "import": "Importer",
+ "save": "Sauvegarder",
+ "delete": "Supprimer le widget personnalisé",
+ "deleteConfirm": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.",
+ "export": "Exporter",
"addMapping": "",
- "addColumn": "",
- "edit": "",
+ "addColumn": "Ajouter une colonne",
+ "edit": "Modifier",
"removeMapping": "",
- "removeColumn": "",
- "addItem": "",
- "removeItem": "",
- "addBar": "",
- "duplicate": "",
- "copyAiPrompt": "",
- "enable": "",
- "disable": "",
- "menu": ""
+ "removeColumn": "Supprimer la colonne",
+ "addItem": "Ajouter un élément",
+ "removeItem": "Supprimer l'élément",
+ "addBar": "Ajouter une barre",
+ "duplicate": "Dupliquer",
+ "copyAiPrompt": "Copier le prompt IA",
+ "enable": "Activer",
+ "disable": "Désactiver",
+ "menu": "Actions"
},
"field": {
- "name": "",
- "description": "",
- "iconUrl": "",
- "url": "",
- "authType": "",
+ "name": "Nom",
+ "description": "Description",
+ "iconUrl": "URL de l'icône",
+ "url": "URL",
+ "authType": "Type d’authentification",
"headerName": "",
"method": "",
"requestBody": "",
@@ -753,7 +753,7 @@
"labelPosition": "",
"kvLayout": "",
"striped": "",
- "compact": "",
+ "compact": "Mode Compact",
"maxHeight": "",
"color": "Couleur",
"buttonLabel": "",
@@ -764,17 +764,17 @@
"successMessageHint": "",
"enabled": "Activé",
"template": {
- "label": "",
+ "label": "Template JSX",
"description": ""
}
},
"placeholder": {
"exampleLabel": "",
- "exampleLabelShort": "",
- "exampleHeader": "",
- "exampleUnit": "",
- "iconUrl": "",
- "url": "",
+ "exampleLabelShort": "Température du CPU",
+ "exampleHeader": "Nom",
+ "exampleUnit": "°C",
+ "iconUrl": "https://...",
+ "url": "https://api.example.com/api/v1/status",
"headerName": "",
"jsonPath": "",
"tablePath": "",
@@ -797,27 +797,27 @@
"sm": "",
"md": "",
"lg": "",
- "xl": ""
+ "xl": "Très grand"
},
"labelPositionOption": {
- "above": "",
- "below": ""
+ "above": "Au-dessus",
+ "below": "En dessous"
},
"fieldset": {
- "general": "",
- "connection": "",
- "display": ""
+ "general": "Général",
+ "connection": "Connexion API",
+ "display": "Configuration de l'affichage"
},
"displayTypeDescription": {
- "singleValue": "",
- "keyValue": "",
+ "singleValue": "Afficher une valeur extraite avec une étiquette et une unité",
+ "keyValue": "Afficher plusieurs valeurs étiquetées côte à côte",
"table": "",
"statGrid": "",
"progressBars": "",
- "statusIndicator": "",
+ "statusIndicator": "Points d'état colorés montrant en ligne/hors ligne ou l'état de santé",
"countGrid": "",
"raw": "",
- "actionButton": "",
+ "actionButton": "Un bouton qui déclenche une requête lorsqu'elle est cliquée",
"customJsx": ""
},
"method": {
@@ -848,8 +848,8 @@
},
"secret": {
"apiKey": "",
- "username": "",
- "password": "",
+ "username": "Nom d'utilisateur",
+ "password": "Mot de passe",
"savedPlaceholder": ""
},
"preview": {
@@ -859,34 +859,34 @@
"rawResponse": ""
},
"notification": {
- "created": "",
- "updated": "",
- "deleted": "",
- "imported": "",
+ "created": "Widget \"{name}\" créé avec succès.",
+ "updated": "Widget \"{name}\" mis à jour avec succès.",
+ "deleted": "Widget \"{name}\" supprimé.",
+ "imported": "Widget importé avec succès.",
"aiPromptCopied": "",
"aiPromptDescription": "",
- "aiPromptCopy": "",
+ "aiPromptCopy": "Copier dans le presse-papiers",
"aiPromptNoResponse": "",
- "aiPromptCopyError": "",
- "createError": "",
- "updateError": "",
- "importError": "",
- "exportError": "",
- "duplicated": "",
- "duplicateError": "",
- "toggleError": "",
- "deleteError": "",
- "previewError": "",
- "executed": "",
- "executeError": ""
+ "aiPromptCopyError": "Échec de la copie du prompt dans le presse-papiers. Votre navigateur peut ne pas prendre en charge cette fonctionnalité.",
+ "createError": "Impossible de créer le widget. Vérifiez que votre point de terminaison API est joignable.",
+ "updateError": "Impossible de mettre à jour le widget. Vos modifications n'ont pas été enregistrées.",
+ "importError": "Impossible d'importer le widget. Assurez-vous que le fichier est un export JSON de widget personnalisé valide.",
+ "exportError": "Impossible d'exporter le widget.",
+ "duplicated": "Widget \"{name}\" dupliqué.",
+ "duplicateError": "Impossible de dupliquer le widget.",
+ "toggleError": "Impossible de changer le statut du widget.",
+ "deleteError": "Impossible de supprimer le widget.",
+ "previewError": "Impossible de récupérer l'aperçu. Vérifiez l'URL et réessayez.",
+ "executed": "Action exécutée avec succès.",
+ "executeError": "Échec de l'action: {error}"
},
"table": {
- "name": "",
- "url": "",
- "display": ""
+ "name": "Nom",
+ "url": "URL",
+ "display": "Affichage"
},
"widget": {
- "disabled": ""
+ "disabled": "Ce widget est désactivé"
}
},
"integration": {
@@ -1007,21 +1007,21 @@
"miscellaneous": "",
"smartHomeServer": "",
"indexerManager": "",
- "healthMonitoring": "",
- "search": "",
- "mediaTranscoding": "",
- "networkController": "",
- "releasesProvider": "",
- "notifications": "",
- "firewall": "",
+ "healthMonitoring": "Santé",
+ "search": "Rechercher",
+ "mediaTranscoding": "Transcodage",
+ "networkController": "Réseau",
+ "releasesProvider": "Versions",
+ "notifications": "Notifications",
+ "firewall": "Pare-feu",
"timetable": "",
- "photoService": "",
- "documents": "",
+ "photoService": "Photos",
+ "documents": "Documents",
"notes": "Notes",
"mediaMonitoring": "Supervision",
"speedtest": "Test de débit",
- "analytics": "",
- "vpn": "",
+ "analytics": "Statistiques",
+ "vpn": "VPN",
"mediaLibrary": "Bibliothèque de médias",
"uptimeMonitoring": "Surveillance des disponibilités"
},
@@ -1299,7 +1299,7 @@
},
"slug": {
"label": "Slug de la page de statut",
- "newLabel": ""
+ "newLabel": "Nouveau slug de page de statut"
}
}
},
@@ -1313,7 +1313,7 @@
"description": ""
},
"navidrome": {
- "name": "",
+ "name": "Navidrome",
"description": ""
},
"uptimeKuma": {
@@ -1385,7 +1385,7 @@
"add": "Ajouter",
"apply": "Appliquer",
"backToOverview": "Retourner à l'aperçu",
- "skip": "",
+ "skip": "Ignorer",
"change": "Modifier",
"create": "Créer",
"createAnother": "Créer et recommencer",
@@ -1407,20 +1407,20 @@
"checkLogs": "Vérifiez les logs pour plus de détails",
"tryAgain": "Réessayer",
"loading": "Chargement",
- "show": "",
- "hide": ""
+ "show": "Afficher",
+ "hide": "Masquer"
},
"here": "ici",
"iconPicker": {
"label": "URL de l'icône :",
"header": "Tapez le nom ou les objets pour filtrer les icônes... Homarr recherchera les icônes {countIcons} pour vous.",
- "headerLoading": "",
- "noResults": "",
- "error": ""
+ "headerLoading": "Tapez pour rechercher les icônes…",
+ "noResults": "Aucune icône ne correspond à \"{search}\".",
+ "error": "Impossible de charger les icônes."
},
"colorScheme": {
"options": {
- "auto": "",
+ "auto": "Auto",
"light": "Clair",
"dark": "Sombre"
}
@@ -1468,7 +1468,7 @@
"switchToDarkMode": "Activer le mode sombre",
"switchToLightMode": "Activer le mode clair",
"management": "Administration",
- "docker": "",
+ "docker": "Docker",
"preferences": "Vos préférences",
"logout": "Se déconnecter",
"login": "Connexion",
@@ -1578,7 +1578,7 @@
"label": {
"create": "Nouvelle catégorie",
"changePosition": "Modifier la position",
- "settings": ""
+ "settings": "Réglages"
}
},
"openAllInNewTabs": {
@@ -1599,9 +1599,9 @@
"menu": {
"label": {
"settings": "Paramètres",
- "refresh": "",
- "options": "",
- "actions": ""
+ "refresh": "Actualiser",
+ "options": "Options",
+ "actions": "Actions"
}
},
"create": {
@@ -1629,11 +1629,11 @@
"edit": {
"title": "Éditer l'élément",
"tab": {
- "widget": "",
- "app": ""
+ "widget": "Éditer le widget",
+ "app": "Modifier l'application"
},
"app": {
- "propagationNotice": ""
+ "propagationNotice": "Les modifications apportées à cette application seront appliquées partout où elle est utilisée sur tous les tableaux de bord."
},
"advancedOptions": {
"label": "Options avancées",
@@ -1661,11 +1661,11 @@
},
"widget": {
"integrationSelect": {
- "configureIntegrationFirst": "",
- "loading": "",
- "placeholder": "",
- "noResults": "",
- "loadError": ""
+ "configureIntegrationFirst": "Connectez d'abord une intégration",
+ "loading": "Chargement...",
+ "placeholder": "Choisir une option",
+ "noResults": "Aucun résultat trouvé",
+ "loadError": "Impossible de charger les options"
},
"app": {
"name": "App",
@@ -1746,7 +1746,7 @@
"label": "Ouvrir dans un nouvel onglet"
},
"withBorder": {
- "label": ""
+ "label": "Afficher la bordure"
},
"items": {
"label": "Signets",
@@ -1759,7 +1759,7 @@
"description": "",
"option": {
"showBroadcastMessage": {
- "label": ""
+ "label": "Afficher les messages de diffusion"
}
}
},
@@ -1899,7 +1899,7 @@
},
"timetable": {
"name": "",
- "description": "",
+ "description": "Affiche les heures de départ pour une station",
"title": "",
"noStation": "",
"option": {
@@ -1997,17 +1997,17 @@
},
"empty": "",
"emptyContent": "",
- "notFound": "",
+ "notFound": "Note introuvable",
"noNotes": "",
"integrationRequired": "",
"updatedAt": "",
"untitled": "",
- "edit": "",
- "save": "",
- "cancel": "",
+ "edit": "Modifier",
+ "save": "Sauvegarder",
+ "cancel": "Annuler",
"readOnlyViewer": "",
- "saveForbidden": "",
- "saveFailed": ""
+ "saveForbidden": "Vous n'êtes pas autorisé à modifier cette note.",
+ "saveFailed": "Impossible d'enregistrer cette note. Veuillez réessayer."
},
"iframe": {
"name": "iFrame",
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Afficher les infos sur le système de fichiers"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Onglet par défaut"
},
@@ -2430,27 +2435,27 @@
"description": "",
"option": {
"showBattery": {
- "label": ""
+ "label": "Afficher la batterie"
},
"showLoad": {
- "label": ""
+ "label": "Afficher la charge"
},
"showVoltage": {
- "label": ""
+ "label": "Afficher la tension"
}
},
"status": {
- "online": "",
- "onBattery": "",
- "lowBattery": "",
- "charging": "",
- "unknown": ""
+ "online": "En ligne",
+ "onBattery": "Sur batterie",
+ "lowBattery": "Batterie faible",
+ "charging": "Chargement",
+ "unknown": "Inconnu"
},
"field": {
- "runtime": "",
- "load": "",
- "input": "",
- "output": ""
+ "runtime": "Runtime",
+ "load": "Charger",
+ "input": "Entrée",
+ "output": "Sortie"
},
"error": {
"internalServerError": ""
@@ -2461,7 +2466,7 @@
"description": "Surveillance avancée du serveur multimédia avec des données détaillées de flux et de transcodage",
"option": {
"showStreams": {
- "label": ""
+ "label": "Afficher les flux actifs"
},
"showStats": {
"label": "Afficher le résumé des statistiques"
@@ -2474,13 +2479,13 @@
}
},
"stats": {
- "activeStreams": "",
+ "activeStreams": "Flux actif",
"totalUsers": "Utilisateurs totaux",
- "transcodes": "",
+ "transcodes": "Transcodages",
"bandwidth": "Bande passante"
},
"streams": {
- "empty": "",
+ "empty": "Aucun flux actif",
"user": "Utilisateur",
"media": "Média",
"state": "État",
@@ -2522,32 +2527,32 @@
"avgDuration": "",
"option": {
"websiteId": {
- "label": "",
- "description": "",
- "placeholder": "",
- "loading": "",
- "noWebsites": "",
- "configureIntegrationFirst": ""
+ "label": "Site Web",
+ "description": "Sélectionnez un site web suivi par votre instance Umami",
+ "placeholder": "Sélectionnez un site",
+ "loading": "Chargement des sites Web...",
+ "noWebsites": "Aucun site web trouvé",
+ "configureIntegrationFirst": "Connectez d'abord une intégration Umami"
},
"timeFrame": {
- "label": "",
- "description": "",
+ "label": "Intervalle de temps",
+ "description": "La période d'affichage des données du visiteur pour",
"option": {
- "today": "",
- "24h": "",
- "7d": "",
- "30d": "",
- "month": "",
- "lastMonth": ""
+ "today": "Aujourd'hui",
+ "24h": "Dernières 24 heures",
+ "7d": "7 derniers jours",
+ "30d": "30 derniers jours",
+ "month": "Ce mois",
+ "lastMonth": "Le mois dernier"
}
},
"eventName": {
- "label": "",
- "description": "",
- "placeholder": "",
- "loading": "",
- "noEvents": "",
- "none": "",
+ "label": "Evénement",
+ "description": "Afficher le total des occurrences d'un événement spécifique",
+ "placeholder": "Sélectionner un événement",
+ "loading": "Chargement des événements...",
+ "noEvents": "Aucun événement trouvé",
+ "none": "Aucun événement",
"configureWebsiteFirst": ""
},
"chartType": {
@@ -2597,15 +2602,15 @@
"direct": ""
},
"topReferrers": {
- "direct": ""
+ "direct": "Directe"
},
"events": {
- "selectPrompt": ""
+ "selectPrompt": "Sélectionnez les événements à afficher"
},
"error": {
"noIntegration": "",
- "noWebsite": "",
- "noData": "",
+ "noWebsite": "Aucun site web configuré",
+ "noData": "Aucune donnée disponible",
"internalServerError": ""
}
},
@@ -2705,10 +2710,10 @@
}
},
"paperlessNgx": {
- "name": "",
- "description": "",
- "documentsTotal": "",
- "documentsInbox": "",
+ "name": "Paperless-ngx",
+ "description": "Aperçu de votre archive de documents Paperless-ngx",
+ "documentsTotal": "Nombre total de documents",
+ "documentsInbox": "Boîte de réception",
"correspondents": "",
"tags": "",
"documentTypes": "",
@@ -2717,7 +2722,7 @@
"total": "",
"option": {
"showInboxRatio": {
- "label": "",
+ "label": "Afficher le ratio de la boîte de réception",
"description": ""
},
"showInboxRing": {
@@ -3158,7 +3163,7 @@
"label": "Fournisseur"
},
"providerUrl": {
- "label": ""
+ "label": "URL du fournisseur"
},
"identifier": {
"label": "Identifiant",
@@ -3209,11 +3214,11 @@
"tooltip": "Le fournisseur n'a pas pu être analysé, veuillez le définir manuellement après l'importation des images"
},
"tokens": {
- "label": "",
- "token": "",
- "configured": "",
- "notConfigured": "",
- "save": ""
+ "label": "Tokens du fournisseur",
+ "token": "Token",
+ "configured": "Token configuré",
+ "notConfigured": "Aucun token défini",
+ "save": "Sauvegarder"
}
}
},
@@ -3236,9 +3241,9 @@
"invalidIdentifier": "Identifiant non valide",
"noMatchingVersion": "Aucune version correspondante trouvée",
"noReleasesFound": "Aucune publication trouvée",
- "noProviderSelected": "",
+ "noProviderSelected": "Aucun fournisseur sélectionné",
"noProviderResponse": "Aucune réponse du fournisseur",
- "unexpected": ""
+ "unexpected": "Erreur de fournisseur inattendue"
}
}
},
@@ -3334,24 +3339,24 @@
"option": {}
},
"speedtestTracker": {
- "name": "",
+ "name": "Suivi de test de vitesse",
"description": "",
"option": {
"showLatestResult": {
- "label": ""
+ "label": "Afficher le dernier résultat"
},
"showStats": {
- "label": ""
+ "label": "Afficher les moyennes"
},
"showRecentResults": {
- "label": ""
+ "label": "Afficher le dernier résultat"
},
"showPingGraph": {
- "label": ""
+ "label": "Afficher le graphique de ping"
}
},
- "latestResult": "",
- "averages": "",
+ "latestResult": "Dernier résultat",
+ "averages": "Moyennes",
"tests": "",
"recentResults": "",
"recentResultsSpeed": "",
@@ -3386,7 +3391,7 @@
},
"showTotalMonitors": {
"label": "",
- "description": ""
+ "description": "Afficher le nombre total de moniteurs configurés"
},
"showUpCount": {
"label": "",
@@ -3401,35 +3406,35 @@
"description": ""
}
},
- "averageUptime": "",
+ "averageUptime": "Temps de disponibilité moyen (24h)",
"stats": {
- "totalMonitors": "",
+ "totalMonitors": "Nombre total de moniteurs",
"upCount": "",
"downCount": "",
"pausedCount": ""
},
"error": {
- "internalServerError": ""
+ "internalServerError": "Impossible de récupérer les données de disponibilité"
}
},
"audioStats": {
- "name": "",
+ "name": "Statistiques audio",
"description": "",
"option": {
"showArtists": {
- "label": "",
- "description": ""
+ "label": "Afficher l'artiste",
+ "description": "Afficher le nombre total d'artistes dans votre bibliothèque musicale (Navidrome)"
},
"showAlbums": {
- "label": "",
- "description": ""
+ "label": "Afficher l'album",
+ "description": "Afficher le nombre total d'albums dans votre bibliothèque musicale (Navidrome)"
},
"showSongs": {
- "label": "",
+ "label": "Afficher les titres",
"description": ""
},
"showNowPlaying": {
- "label": "",
+ "label": "Afficher la lecture en cours",
"description": ""
},
"showNowPlayingList": {
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Afficher la barre d'utilisation en arrière-plan"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json
index da3b62e8b..f2e575553 100644
--- a/packages/translation/src/lang/he.json
+++ b/packages/translation/src/lang/he.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "הצג מידע על מערכת הקבצים"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "כרטיסיית ברירת מחדל"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json
index a300ca258..55ebb428b 100644
--- a/packages/translation/src/lang/hr.json
+++ b/packages/translation/src/lang/hr.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json
index 0ac21e379..f9dbaf927 100644
--- a/packages/translation/src/lang/hu.json
+++ b/packages/translation/src/lang/hu.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Fájlrendszer-információk megjelenítése"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Alapértelmezett fül"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Háttérhasználati sáv megjelenítése"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json
index a3977762c..63629d558 100644
--- a/packages/translation/src/lang/it.json
+++ b/packages/translation/src/lang/it.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Mostra Informazioni Filesystem"
},
+ "visibleStorageVolumes": {
+ "label": "Volumi di archiviazione visibili",
+ "description": "Disponibile solo se tutte le integrazioni selezionate sono Synology. Lasciare vuoto per visualizzare tutti i volumi di archiviazione rilevati.",
+ "placeholder": "Selezionare volumi di archiviazione"
+ },
"defaultTab": {
"label": "Scheda predefinita"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Mostra barra di utilizzo in background"
+ },
+ "visibleStorageVolumes": {
+ "label": "Volumi di archiviazione visibili",
+ "description": "Disponibile solo se tutte le integrazioni selezionate sono Synology. Lasciare vuoto per visualizzare tutti i volumi di archiviazione rilevati.",
+ "placeholder": "Selezionare volumi di archiviazione"
}
},
"status": {
diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json
index 7cb5087c5..e6018ccbd 100644
--- a/packages/translation/src/lang/ja.json
+++ b/packages/translation/src/lang/ja.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "ファイルシステム情報を表示"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "デフォルトのタブ"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "バックグラウンドの使用状況バーを表示"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json
index 7c8d11572..e665078ee 100644
--- a/packages/translation/src/lang/ko.json
+++ b/packages/translation/src/lang/ko.json
@@ -782,22 +782,22 @@
"valuePath": "$.data.used",
"maxPath": "$.data.total",
"goodValues": "",
- "color": ""
+ "color": "파랑"
},
"cardStyleOption": {
- "filled": "",
+ "filled": "채워짐",
"outline": "",
"subtle": ""
},
"layoutOption": {
- "list": "",
- "grid": ""
+ "list": "리스트",
+ "grid": "그리드"
},
"sizeOption": {
- "sm": "",
- "md": "",
- "lg": "",
- "xl": ""
+ "sm": "작음",
+ "md": "중간",
+ "lg": "큼",
+ "xl": "매우 큼"
},
"labelPositionOption": {
"above": "",
@@ -805,8 +805,8 @@
},
"fieldset": {
"general": "",
- "connection": "",
- "display": ""
+ "connection": "API 연결",
+ "display": "표시 설정"
},
"displayTypeDescription": {
"singleValue": "",
@@ -821,34 +821,34 @@
"customJsx": ""
},
"method": {
- "GET": "",
- "POST": "",
- "PUT": "",
- "DELETE": "",
- "PATCH": ""
+ "GET": "GET",
+ "POST": "POST",
+ "PUT": "PUT",
+ "DELETE": "DELETE",
+ "PATCH": "PATCH"
},
"authType": {
- "none": "",
- "bearer": "",
- "basic": "",
- "apiKeyHeader": "",
- "apiKeyQuery": ""
+ "none": "없음",
+ "bearer": "Bearer 토큰",
+ "basic": "기본 인증",
+ "apiKeyHeader": "API 키(헤더)",
+ "apiKeyQuery": "API 키(쿼리)"
},
"displayType": {
- "singleValue": "",
- "keyValue": "",
- "table": "",
- "statGrid": "",
- "progressBars": "",
- "statusIndicator": "",
- "countGrid": "",
- "raw": "",
- "actionButton": "",
- "customJsx": ""
+ "singleValue": "단일 값",
+ "keyValue": "키-값",
+ "table": "테이블",
+ "statGrid": "스택 그리드",
+ "progressBars": "진행 바",
+ "statusIndicator": "상태 인디케이터",
+ "countGrid": "카운트 그리드",
+ "raw": "원시 JSON",
+ "actionButton": "동작 버튼",
+ "customJsx": "사용자 지정 JSX"
},
"secret": {
- "apiKey": "",
- "username": "",
+ "apiKey": "API 키/토큰",
+ "username": "사용자명",
"password": "비밀번호",
"savedPlaceholder": "••••••• (저장됨, 유지하려면 공백)"
},
@@ -892,14 +892,14 @@
"integration": {
"page": {
"list": {
- "title": "",
+ "title": "통합",
"search": "",
"noResults": {
"title": ""
}
},
"create": {
- "title": "",
+ "title": "새 {name} 통합",
"notification": {
"success": {
"title": "",
@@ -917,9 +917,9 @@
"label": ""
},
"new": {
- "title": "",
+ "title": "신규",
"url": {
- "label": "",
+ "label": "앱 URL",
"description": ""
}
}
@@ -927,7 +927,7 @@
}
},
"edit": {
- "title": "",
+ "title": "{name} 통합 편집",
"notification": {
"success": {
"title": "",
@@ -940,8 +940,8 @@
},
"app": {
"action": {
- "add": "",
- "remove": "",
+ "add": "앱 연결",
+ "remove": "연결 해제",
"select": ""
}
}
@@ -951,11 +951,11 @@
"message": "",
"notification": {
"success": {
- "title": "",
+ "title": "삭제 성공",
"message": ""
},
"error": {
- "title": "",
+ "title": "삭제 실패",
"message": ""
}
}
@@ -987,7 +987,7 @@
}
},
"action": {
- "create": ""
+ "create": "새 통합"
},
"grid": {
"widgetCount": "",
@@ -1004,9 +1004,9 @@
"downloadClient": "",
"usenet": "",
"torrent": "",
- "miscellaneous": "",
- "smartHomeServer": "",
- "indexerManager": "",
+ "miscellaneous": "기타",
+ "smartHomeServer": "스마트 홈",
+ "indexerManager": "인덱서",
"healthMonitoring": "건강",
"search": "검색",
"mediaTranscoding": "트랜스코딩",
@@ -1021,14 +1021,14 @@
"mediaMonitoring": "모니터링",
"speedtest": "속도 테스트",
"analytics": "분석",
- "vpn": "",
+ "vpn": "VPN",
"mediaLibrary": "미디어 라이브러리",
"uptimeMonitoring": "업타임 모니터링"
},
"testConnection": {
"action": {
- "create": "",
- "edit": ""
+ "create": "연결 테스트 및 생성",
+ "edit": "연결 테스트 및 저장"
},
"error": {
"common": {
@@ -1037,45 +1037,45 @@
}
},
"unknown": {
- "title": "",
+ "title": "알 수 없는 오류",
"description": ""
},
"parse": {
- "title": "",
+ "title": "파싱 오류",
"description": ""
},
"authorization": {
- "title": "",
+ "title": "인증 오류",
"description": ""
},
"statusCode": {
- "title": "",
+ "title": "응답 오류",
"description": "",
"otherDescription": "",
"reason": {
- "badRequest": "",
- "notFound": "",
- "tooManyRequests": "",
- "internalServerError": "",
- "serviceUnavailable": "",
- "gatewayTimeout": ""
+ "badRequest": "잘못된 요청",
+ "notFound": "찾을 수 없음",
+ "tooManyRequests": "요청이 너무 많음",
+ "internalServerError": "내부 서버 오류",
+ "serviceUnavailable": "서비스 사용 불가",
+ "gatewayTimeout": "게이트웨이 시간 초과"
}
},
"certificate": {
- "title": "",
+ "title": "인증서 오류",
"description": {
- "expired": "",
+ "expired": "인증서가 만료되었습니다.",
"notYetValid": "",
"untrusted": "",
"hostnameMismatch": ""
},
"alert": {
"permission": {
- "title": "",
+ "title": "권한 부족",
"message": ""
},
"hostnameMismatch": {
- "title": "",
+ "title": "호스트 이름이 불일치함",
"message": ""
},
"extract": {
@@ -1101,7 +1101,7 @@
},
"notification": {
"success": {
- "title": "",
+ "title": "신뢰하는 인증서",
"message": ""
},
"error": {
@@ -1127,16 +1127,16 @@
}
},
"details": {
- "title": "",
+ "title": "세부 사항",
"description": "",
"content": {
- "action": "",
+ "action": "항목 보기",
"title": ""
}
}
},
"request": {
- "title": "",
+ "title": "요청 오류",
"description": {
"connection": {
"hostUnreachable": "",
@@ -1175,7 +1175,7 @@
"message": ""
},
"commonError": {
- "title": "",
+ "title": "연결 실패",
"message": ""
},
"badRequest": {
@@ -1229,7 +1229,7 @@
}
},
"secrets": {
- "title": "",
+ "title": "비밀 구문",
"lastUpdated": "",
"notSet": {
"label": "",
@@ -1247,19 +1247,19 @@
"kind": {
"username": {
"label": "사용자 이름",
- "newLabel": ""
+ "newLabel": "새 사용자 이름"
},
"apiKey": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 API 키"
},
"password": {
"label": "비밀번호",
- "newLabel": ""
+ "newLabel": "새 패스워드"
},
"tokenId": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 토큰 ID"
},
"realm": {
"label": "",
@@ -1267,35 +1267,35 @@
},
"personalAccessToken": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 개인 액세스 토큰(PAT)"
},
"topic": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 주제"
},
"url": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 URL"
},
"opnsenseApiKey": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 API 키(Key)"
},
"opnsenseApiSecret": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 API 키(Secret)"
},
"githubAppId": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 앱 ID"
},
"githubInstallationId": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 설치 ID"
},
"privateKey": {
"label": "",
- "newLabel": ""
+ "newLabel": "새 개인 키"
},
"slug": {
"label": "",
@@ -1527,7 +1527,7 @@
"section": {
"dynamic": {
"action": {
- "create": "",
+ "create": "새 동적 섹션",
"remove": ""
},
"option": {
@@ -1553,17 +1553,17 @@
}
},
"action": {
- "create": "",
+ "create": "새 카테고리",
"edit": "",
"remove": "",
"moveUp": "위로 이동",
"moveDown": "아래로 이동",
"createAbove": "",
"createBelow": "",
- "openAllInNewTabs": ""
+ "openAllInNewTabs": "탭에서 모두 열기"
},
"create": {
- "title": "",
+ "title": "새 카테고리",
"submit": ""
},
"remove": {
@@ -1576,32 +1576,32 @@
},
"menu": {
"label": {
- "create": "",
+ "create": "새 카테고리",
"changePosition": "위치 변경",
"settings": ""
}
},
"openAllInNewTabs": {
- "title": "",
- "text": ""
+ "title": "탭에서 모두 열기",
+ "text": "일부 브라우저는 보안상의 이유로 탭의 대량 열기를 차단할 수 있습니다. 브라우저가 이 작업을 차단했기 때문에 Homarr가 모든 창을 열지 못했습니다. \"팝업 창 열기\"를 허용한 후 다시 시도해 주십시오."
}
}
},
"item": {
"action": {
- "create": "",
- "import": "",
- "edit": "",
- "moveResize": "",
- "duplicate": "",
- "remove": ""
+ "create": "새 항목",
+ "import": "항목 가져오기",
+ "edit": "항목 편집",
+ "moveResize": "항목 이동 / 크기변경",
+ "duplicate": "항목 복사",
+ "remove": "항목 제거"
},
"menu": {
"label": {
"settings": "설정",
- "refresh": "",
- "options": "",
- "actions": ""
+ "refresh": "새로고침",
+ "options": "옵션",
+ "actions": "동작"
}
},
"create": {
@@ -1610,7 +1610,7 @@
"addToBoard": ""
},
"moveResize": {
- "title": "",
+ "title": "항목 이동 / 크기변경",
"field": {
"width": {
"label": "너비"
@@ -1619,21 +1619,21 @@
"label": "높이"
},
"xOffset": {
- "label": ""
+ "label": "X 오프셋"
},
"yOffset": {
- "label": ""
+ "label": "Y 오프셋"
}
}
},
"edit": {
- "title": "",
+ "title": "항목 편집",
"tab": {
- "widget": "",
- "app": ""
+ "widget": "위젯 편집",
+ "app": "앱 편집"
},
"app": {
- "propagationNotice": ""
+ "propagationNotice": "이 앱의 변경 사항은 전체 대시보드에 적용됩니다."
},
"advancedOptions": {
"label": "고급 옵션",
@@ -1837,44 +1837,44 @@
}
},
"clock": {
- "name": "",
+ "name": "날짜 및 시간",
"description": "현재 날짜와 시간을 표시합니다.",
"option": {
"customTitleToggle": {
- "label": "",
- "description": ""
+ "label": "커스텀 제목/도시 표시",
+ "description": "시계 위에 커스텀 제목 또는 도시/국가 이름 표시."
},
"customTitle": {
- "label": ""
+ "label": "제목"
},
"is24HourFormat": {
- "label": "",
- "description": ""
+ "label": "24시간 형식",
+ "description": "12시간 형식 대신 24시간 형식 사용"
},
"showSeconds": {
- "label": ""
+ "label": "초 단위 표시"
},
"useCustomTimezone": {
- "label": ""
+ "label": "고정 시간대 사용"
},
"timezone": {
- "label": "",
- "description": ""
+ "label": "시간대",
+ "description": "IANA 표준 시간대 선택"
},
"showDate": {
- "label": ""
+ "label": "날짜 표시"
},
"dateFormat": {
- "label": "",
- "description": ""
+ "label": "날짜 형식",
+ "description": "날짜를 표시하는 형식"
},
"customTimeFormat": {
- "label": "",
- "description": ""
+ "label": "커스텀 시간 형식",
+ "description": "ISO 8601을 사용하여 시간 형식 지정 (다른 옵션 무시)"
},
"customDateFormat": {
- "label": "",
- "description": ""
+ "label": "커스텀 날짜 형식",
+ "description": "ISO 8601을 사용하여 날짜 형식 지정 (다른 옵션 무시)"
}
}
},
@@ -1913,71 +1913,71 @@
},
"notebook": {
"name": "노트북",
- "description": "",
+ "description": "마크다운을 지원하는 간단한 노트북 위젯",
"option": {
"showToolbar": {
"label": "마크다운 작성에 도움이 되는 도구 모음 표시"
},
"allowReadOnlyCheck": {
- "label": ""
+ "label": "읽기 전용 모드에서 체크인 허용"
},
"content": {
"label": "노트북의 콘텐츠"
}
},
"controls": {
- "bold": "",
- "italic": "",
- "strikethrough": "",
- "underline": "",
- "colorText": "",
- "colorHighlight": "",
- "code": "",
- "clear": "",
- "heading": "",
- "align": "",
- "blockquote": "",
- "horizontalLine": "",
- "bulletList": "",
- "orderedList": "",
- "checkList": "",
- "increaseIndent": "",
- "decreaseIndent": "",
- "link": "",
- "unlink": "",
- "image": "",
- "addTable": "",
- "deleteTable": "",
- "colorCell": "",
- "mergeCell": "",
- "addColumnLeft": "",
- "addColumnRight": "",
- "deleteColumn": "",
- "addRowTop": "",
- "addRowBelow": "",
- "deleteRow": ""
+ "bold": "진하게",
+ "italic": "이탤릭",
+ "strikethrough": "취소선",
+ "underline": "밑줄",
+ "colorText": "글자 색상",
+ "colorHighlight": "하이라이트 색상",
+ "code": "코드",
+ "clear": "서식 초기화",
+ "heading": "제목 레벨 {level}",
+ "align": "텍스트 정렬: {position}",
+ "blockquote": "인용문",
+ "horizontalLine": "가로선",
+ "bulletList": "글머리 기호 목록",
+ "orderedList": "번호순 목록",
+ "checkList": "체크리스트",
+ "increaseIndent": "들여쓰기 늘리기",
+ "decreaseIndent": "들여쓰기 줄이기",
+ "link": "링크",
+ "unlink": "링크 제거",
+ "image": "이미지 삽입",
+ "addTable": "표 추가",
+ "deleteTable": "표 삭제",
+ "colorCell": "셀 색상",
+ "mergeCell": "셀 병합 토글",
+ "addColumnLeft": "앞에 열 추가",
+ "addColumnRight": "뒤에 열 추가",
+ "deleteColumn": "열 삭제",
+ "addRowTop": "앞 행 추가",
+ "addRowBelow": "뒤 행 추가",
+ "deleteRow": "행 삭제"
},
"align": {
"left": "왼쪽",
- "center": "",
+ "center": "가운데",
"right": "오른쪽"
},
"popover": {
- "clearColor": "",
- "source": "",
- "widthPlaceholder": "",
- "columns": "",
- "rows": "",
+ "clearColor": "색상 제거",
+ "source": "소스",
+ "widthPlaceholder": "% 또는 픽셀 값",
+ "columns": "열",
+ "rows": "행",
"width": "너비",
"height": "높이"
},
- "placeholder": "",
+ "placeholder": "노트 작성 시작",
"dismiss": {
- "title": "",
- "message": "",
+ "title": "변경사항 삭제",
+ "message": "노트북에 저장되지 않은 변경 사항이 있습니다. 삭제하시겠습니까?",
"action": {
- "discard": "",
- "keepEditing": ""
+ "discard": "저장하지 않음",
+ "keepEditing": "계속 편집"
}
}
},
@@ -2010,7 +2010,7 @@
"saveFailed": ""
},
"iframe": {
- "name": "",
+ "name": "iFrame",
"description": "인터넷에서 콘텐츠를 퍼옵니다. 일부 웹사이트는 액세스를 제한할 수 있습니다.",
"option": {
"embedUrl": {
@@ -2041,12 +2041,12 @@
"label": "지리적 위치 허용"
},
"allowModals": {
- "label": ""
+ "label": "모달 허용"
}
},
"error": {
- "noUrl": "",
- "unsupportedProtocol": "",
+ "noUrl": "iFrame URL 없음",
+ "unsupportedProtocol": "URL이 지원되지 않는 프로토콜을 사용합니다. ({supportedProtocols}) 중 하나를 사용하십시오",
"noBrowerSupport": "브라우저가 iframe을 지원하지 않습니다. 브라우저를 업데이트하세요."
}
},
@@ -2161,27 +2161,27 @@
},
"calendar": {
"name": "캘린더",
- "description": "",
+ "description": "일정 기간 내에 캘린더 보기에 통합된 이벤트를 표시합니다",
"duration": {
- "allDay": ""
+ "allDay": "하루 종일"
},
"option": {
"releaseType": {
- "label": "레이더 릴리스 유형",
+ "label": "Radarr 릴리즈 유형",
"options": {
- "inCinemas": "",
- "digitalRelease": "",
- "physicalRelease": ""
+ "inCinemas": "극장 상영",
+ "digitalRelease": "디지털 출시",
+ "physicalRelease": "실물 출시"
}
},
"filterPastMonths": {
- "label": ""
+ "label": "과거 이벤트 표시 개월수"
},
"filterFutureMonths": {
- "label": ""
+ "label": "미래 이벤트 표시 개월수"
},
"showUnmonitored": {
- "label": ""
+ "label": "모니터링되지 않음 표시"
}
}
},
@@ -2190,42 +2190,42 @@
"description": "설정한 위치의 현재 날씨 정보를 표시합니다.",
"option": {
"isFormatFahrenheit": {
- "label": ""
+ "label": "화씨 온도"
},
"disableTemperatureDecimals": {
- "label": ""
+ "label": "온도 소수점 비활성화"
},
"showCurrentWindSpeed": {
- "label": "",
- "description": ""
+ "label": "현재 풍속 표시",
+ "description": "현재 날씨 기준으로만 표시됩니다"
},
"useImperialSpeed": {
- "label": ""
+ "label": "mph 풍속 사용"
},
"location": {
"label": "날씨 위치"
},
"showCity": {
- "label": ""
+ "label": "도시 표시"
},
"hasForecast": {
- "label": ""
+ "label": "예보 표시"
},
"forecastDayCount": {
- "label": "",
- "description": ""
+ "label": "예보 일수",
+ "description": "위젯이 충분히 넓지 않으면 표시되는 일수가 줄어듭니다"
},
"dateFormat": {
- "label": "",
- "description": ""
+ "label": "날짜 형식",
+ "description": "날짜를 표시하는 형식"
}
},
- "currentWindSpeed": "",
+ "currentWindSpeed": "{currentWindSpeed}{unit}",
"dailyForecast": {
- "sunrise": "",
- "sunset": "",
- "maxWindSpeed": "",
- "maxWindGusts": ""
+ "sunrise": "일출",
+ "sunset": "일몰",
+ "maxWindSpeed": "최대 풍속: {maxWindSpeed}{unit}",
+ "maxWindGusts": "최대 순간 풍속: {maxWindGusts}{unit}"
},
"kind": {
"clear": "맑음",
@@ -2259,102 +2259,107 @@
}
},
"healthMonitoring": {
- "name": "",
- "description": "",
+ "name": "시스템 상태 모니터링",
+ "description": "시스템의 상태 정보를 표시합니다.",
"tab": {
- "system": "",
- "cluster": ""
+ "system": "시스템",
+ "cluster": "클러스터"
},
"option": {
"fahrenheit": {
- "label": ""
+ "label": "CPU 온도 화씨 표시"
},
"cpu": {
- "label": ""
+ "label": "CPU 정보 표시"
},
"memory": {
- "label": ""
+ "label": "메모리 정보 표시"
},
"gpu": {
- "label": ""
+ "label": "GPU 정보 표시"
},
"showUptime": {
- "label": ""
+ "label": "작동 시간 표시"
},
"fileSystem": {
- "label": ""
+ "label": "파일시스템 정보 표시"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
},
"defaultTab": {
- "label": ""
+ "label": "기본 탭"
},
"visibleClusterSections": {
- "label": ""
+ "label": "클러스터 섹션 시각화"
},
"sectionIndicatorRequirement": {
- "label": ""
+ "label": "섹션 표시기 요구사항"
}
},
"popover": {
- "information": "",
- "processor": "",
- "memory": "",
- "memoryAvailable": "",
- "version": "",
- "uptime": "",
- "loadAverage": "",
- "minute": "",
- "minutes": "",
- "used": "",
- "available": "",
- "lastSeen": ""
+ "information": "정보",
+ "processor": "프로세서: {cpuModelName}",
+ "memory": "메모리: {memory}GiB",
+ "memoryAvailable": "사용 가능: {memoryAvailable}GiB ({percent}%)",
+ "version": "버전: {version}",
+ "uptime": "작동 시간: {months}개월 {days}일 {hours}시간 {minutes}분",
+ "loadAverage": "평균 부하량:",
+ "minute": "1분",
+ "minutes": "{count}분",
+ "used": "사용중",
+ "available": "사용 가능",
+ "lastSeen": "마지막 상태 업데이트: {lastSeen}"
},
"memory": {},
"error": {
- "internalServerError": ""
+ "internalServerError": "상태 불러오기 실패"
},
"cluster": {
"summary": {
- "cpu": "",
- "memory": ""
+ "cpu": "CPU",
+ "memory": "RAM"
},
"resource": {
"node": {
- "name": ""
+ "name": "노드"
},
"qemu": {
- "name": ""
+ "name": "가상머신"
},
"lxc": {
- "name": ""
+ "name": "LXC"
},
"storage": {
- "name": ""
+ "name": "저장 공간"
}
},
"popover": {
"rightSection": {
- "node": "",
- "vmId": "",
- "plugin": ""
+ "node": "노드",
+ "vmId": "가상머신 ID",
+ "plugin": "플러그인"
},
"detail": {
- "cpu": "",
- "memory": "",
- "storage": "",
- "uptime": "",
- "haState": "",
+ "cpu": "코어",
+ "memory": "메모리",
+ "storage": "저장 공간",
+ "uptime": "작동 시간",
+ "haState": "HA 상태",
"storageType": {
- "local": "",
- "shared": ""
+ "local": "로컬 저장소",
+ "shared": "공유 저장소"
}
}
},
"table": {
"header": {
- "name": "",
- "cpu": "",
- "memory": "",
- "node": ""
+ "name": "이름",
+ "cpu": "CPU",
+ "memory": "RAM",
+ "node": "노드"
}
}
}
@@ -2420,9 +2425,9 @@
}
},
"vpn": {
- "name": "",
- "description": "",
- "serviceUnavailable": "",
+ "name": "VPN",
+ "description": "VPN 연결 개요",
+ "serviceUnavailable": "VPN 연결되지 않음",
"option": {}
},
"ups": {
@@ -2671,35 +2676,35 @@
}
},
"mediaServer": {
- "name": "",
- "description": "",
+ "name": "현재 미디어 서버 스트림",
+ "description": "미디어 서버의 현재 스트림 표시",
"option": {
"showOnlyPlaying": {
- "label": "",
- "description": ""
+ "label": "현재 재생 중 항목만 표시",
+ "description": "비활성화 옵션은 plex에서는 지원되지 않음"
}
},
"items": {
- "currentlyPlaying": "",
- "user": "",
- "name": "",
- "id": "",
+ "currentlyPlaying": "현재 재생 중",
+ "user": "사용자",
+ "name": "이름",
+ "id": "아이디",
"metadata": {
- "title": "",
+ "title": "너드 통계",
"video": {
- "title": "",
- "resolution": ""
+ "title": "동영상",
+ "resolution": "해상도"
},
"audio": {
- "title": "",
- "channelCount": "",
- "codec": ""
+ "title": "오디오",
+ "channelCount": "오디오 채널",
+ "codec": "오디오 코덱"
},
"transcoding": {
- "title": "",
- "container": "",
- "resolution": "",
- "target": ""
+ "title": "트랜스코딩",
+ "container": "컨테이너",
+ "resolution": "해상도",
+ "target": "목표 코덱"
}
}
}
@@ -2800,133 +2805,133 @@
"noPhotos": ""
},
"downloads": {
- "name": "",
- "description": "",
+ "name": "다운로드 클라이언트",
+ "description": "Torrent 및 Usenet 클라이언트 다운로드를 확인 및 관리할 수 있습니다.",
"option": {
"columns": {
- "label": ""
+ "label": "표시할 열"
},
"enableRowSorting": {
- "label": ""
+ "label": "항목 정렬 활성화"
},
"defaultSort": {
- "label": ""
+ "label": "정렬 기준 열 기본값"
},
"descendingDefaultSort": {
- "label": ""
+ "label": "역순 정렬"
},
"showCompletedUsenet": {
- "label": ""
+ "label": "완료된 usenet 항목 표시"
},
"showCompletedTorrent": {
- "label": ""
+ "label": "완료된 torrent 항목 표시"
},
"showCompletedHttp": {
- "label": ""
+ "label": "완료된 기타 항목 표시"
},
"activeTorrentThreshold": {
"label": ""
},
"categoryFilter": {
- "label": ""
+ "label": "필터링할 카테고리/라벨"
},
"filterIsWhitelist": {
- "label": ""
+ "label": "화이트리스트로 필터링"
},
"applyFilterToRatio": {
- "label": ""
+ "label": "필터를 사용해 비율 계산"
},
"limitPerIntegration": {
- "label": "",
- "description": ""
+ "label": "통합당 항목 수 제한",
+ "description": "통합당 표시되는 항목 수를 제한하여 전체 항목이 표시되지 않습니다"
}
},
"errors": {
- "noColumns": "",
- "noCommunications": ""
+ "noColumns": "항목에서 열 선택",
+ "noCommunications": "통합에서 데이터를 불러올 수 없습니다"
},
"items": {
"actions": {
- "columnTitle": ""
+ "columnTitle": "제어"
},
"added": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "추가됨",
+ "detailsTitle": "추가된 날짜"
},
"category": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "기타",
+ "detailsTitle": "카테고리 (또는 기타 정보)"
},
"downSpeed": {
"columnTitle": "다운로드",
"detailsTitle": "다운로드 속도"
},
"index": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "#",
+ "detailsTitle": "클라이언트 내 현재 인덱스"
},
"id": {
- "columnTitle": ""
+ "columnTitle": "아이디"
},
"integration": {
"columnTitle": "통합"
},
"name": {
- "columnTitle": ""
+ "columnTitle": "작업 이름"
},
"progress": {
"columnTitle": "진행률",
- "detailsTitle": ""
+ "detailsTitle": "다운로드 진행률"
},
"ratio": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "비율",
+ "detailsTitle": "Torrent 비율 (수신/송신)"
},
"received": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "총 다운로드",
+ "detailsTitle": "전체 다운로드 용량"
},
"sent": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "총 업로드",
+ "detailsTitle": "전체 업로드 용량"
},
"size": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "파일 크기",
+ "detailsTitle": "선택/파일 총 크기"
},
"state": {
"columnTitle": "상태",
- "detailsTitle": ""
+ "detailsTitle": "직업 상태"
},
"time": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "완료 시간",
+ "detailsTitle": "완료/완료 후 경과 시간"
},
"type": {
- "columnTitle": "",
- "detailsTitle": ""
+ "columnTitle": "유형",
+ "detailsTitle": "다운로드 클라이언트 유형"
},
"upSpeed": {
"columnTitle": "업로드",
- "detailsTitle": ""
+ "detailsTitle": "업로드 속도"
}
},
"states": {
- "downloading": "",
- "queued": "",
+ "downloading": "다운로드 중",
+ "queued": "대기 중",
"paused": "일시 중지됨",
"completed": "완료됨",
- "failed": "",
- "processing": "",
- "leeching": "",
- "stalled": "",
+ "failed": "실패",
+ "processing": "처리 중",
+ "leeching": "미완료",
+ "stalled": "정지됨",
"unknown": "알 수 없음",
- "seeding": ""
+ "seeding": "전송 중"
},
"actions": {
"clients": {
- "modalTitle": "",
- "pause": "",
+ "modalTitle": "다운로드 클라이언트 목록",
+ "pause": "모든 클라이언트/항목 정지",
"resume": ""
},
"client": {
@@ -3246,7 +3251,7 @@
"option": {},
"card": {
"vpn": {
- "countConnected": ""
+ "countConnected": "{count}개 연결"
}
},
"error": {
@@ -3328,9 +3333,9 @@
}
},
"notifications": {
- "name": "",
- "description": "",
- "noItems": "",
+ "name": "알림",
+ "description": "통합에서 알림 기록 표시",
+ "noItems": "표시할 알림이 없습니다.",
"option": {}
},
"speedtestTracker": {
@@ -3373,11 +3378,11 @@
}
},
"uptimeKuma": {
- "name": "",
- "description": "",
+ "name": "Uptime Kuma",
+ "description": "Uptime Kuma 상태 페이지에서 업타임 통계를 모니터링합니다",
"option": {
"showAverageUptime": {
- "label": "",
+ "label": "평균 업타임 표시",
"description": ""
},
"showUptimeRing": {
@@ -3480,68 +3485,73 @@
}
},
"systemResources": {
- "name": "",
- "description": "",
+ "name": "시스템 리소스",
+ "description": "시스템의 CPU, 메모리, 디스크 및 기타 하드웨어 사용량",
"option": {
"hasShadow": {
- "label": ""
+ "label": "차트 음영 사용"
},
"visibleCharts": {
- "label": "",
- "description": "",
+ "label": "표시할 차트",
+ "description": "표시할 차트를 선택합니다.",
"option": {
- "cpu": "",
- "memory": "",
- "gpu": "",
- "network": ""
+ "cpu": "CPU",
+ "memory": "메모리",
+ "gpu": "GPU",
+ "network": "네트워크"
}
},
"labelDisplayMode": {
- "label": "",
+ "label": "라벨 표시 모드",
"option": {
- "textWithIcon": "",
- "text": "",
- "icon": "",
- "hidden": ""
+ "textWithIcon": "텍스트 및 아이콘 표시",
+ "text": "텍스트만 표시",
+ "icon": "아이콘만 표시",
+ "hidden": "라벨 숨기기"
}
}
},
"card": {
- "cpu": "",
- "memory": "",
- "gpu": "",
- "network": "",
- "up": "",
- "down": ""
+ "cpu": "CPU",
+ "memory": "메모리",
+ "gpu": "GPU",
+ "network": "네트워크",
+ "up": "업로드",
+ "down": "다운로드"
}
},
"systemDisks": {
- "name": "",
- "description": "",
+ "name": "시스템 디스크",
+ "description": "시스템의 디스크 사용량",
"option": {
"showTemperatureIfAvailable": {
- "label": ""
+ "label": "가능한 경우 온도 표시"
},
"displayMode": {
- "label": "",
+ "label": "디스플레이 모드",
"option": {
"percentage": {
- "label": ""
+ "label": "퍼센트 (예: 76%)"
},
"absolute": {
- "label": ""
+ "label": "절대값 (예: 800GB / 1TB)"
},
"free": {
- "label": ""
+ "label": "여유 공간 퍼센트 (예: 24% 남음)"
}
}
},
"showBackgroundBar": {
- "label": ""
+ "label": "백그라운드 사용량 바 표시"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
- "unhealthy": ""
+ "unhealthy": "비정상"
}
},
"customApi": {
@@ -3925,7 +3935,7 @@
"placeholder": "로컬 이미지 검색을 위한 타이핑 시작",
"group": {
"your": "내 이미지",
- "other": ""
+ "other": "기타 이미지"
}
},
"backgroundImageAttachment": {
@@ -3963,7 +3973,7 @@
}
},
"backgroundImageSize": {
- "label": "",
+ "label": "배경 이미지 크기",
"option": {
"cover": {
"label": "",
@@ -3982,38 +3992,38 @@
"label": "보조 색상"
},
"opacity": {
- "label": ""
+ "label": "불투명도"
},
"iconColor": {
- "label": ""
+ "label": "아이콘 색상"
},
"clearColor": {
- "label": ""
+ "label": "색상 제거"
},
"customCss": {
- "label": "",
+ "label": "이 보드에 적용할 사용자 지정 css",
"description": "또한 숙련된 사용자에게만 권장되는 CSS를 사용하여 대시보드를 사용자 지정할 수 있습니다.",
"customClassesAlert": {
- "title": "",
+ "title": "사용자 지정 클래스",
"description": ""
}
},
"disableStatus": {
- "label": "",
- "description": ""
+ "label": "앱 상태 비활성화",
+ "description": "이 보드의 모든 앱에 대한 상태 확인을 비활성화합니다"
},
"columnCount": {
- "label": ""
+ "label": "열 개수"
},
"itemRadius": {
- "label": "",
- "description": "",
+ "label": "항목 둥글기",
+ "description": "보드에 있는 타일의 모서리 둥글기를 변경합니다",
"option": {
- "xs": "",
- "sm": "",
- "md": "",
- "lg": "",
- "xl": ""
+ "xs": "매우 작게",
+ "sm": "작게",
+ "md": "보통",
+ "lg": "크게",
+ "xl": "매우 크게"
}
},
"name": {
@@ -4021,25 +4031,25 @@
},
"isPublic": {
"label": "공개",
- "description": ""
+ "description": "공개 게시판은 계정이 없어도 누구나 접근할 수 있습니다."
}
},
"content": {
"metaTitle": ""
},
"setting": {
- "title": "",
+ "title": "{boardName} 보드 설정",
"section": {
"general": {
"title": "일반",
- "unrecognizedLink": ""
+ "unrecognizedLink": "제공된 링크가 인식되지 않아 미리보기할 수 없습니다, 다만 작동할 수도 있습니다."
},
"layout": {
"title": "레이아웃",
"responsive": {
- "title": "",
+ "title": "반응형 레이아웃",
"action": {
- "add": ""
+ "add": "레이아웃 추가"
}
}
},
@@ -4047,10 +4057,10 @@
"title": "배경"
},
"appearance": {
- "title": ""
+ "title": "모양"
},
"customCss": {
- "title": ""
+ "title": "사용자 지정 css"
},
"behavior": {
"title": "동작"
@@ -5015,7 +5025,7 @@
}
},
"refresh": {
- "label": "",
+ "label": "새로고침",
"notification": {
"success": {
"title": "",
diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json
index 826affd08..f3f3fce9b 100644
--- a/packages/translation/src/lang/lt.json
+++ b/packages/translation/src/lang/lt.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json
index 628724db6..2685a3b60 100644
--- a/packages/translation/src/lang/lv.json
+++ b/packages/translation/src/lang/lv.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Rādīt failu sistēmas informāciju"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json
index 473819563..7d1e94f4d 100644
--- a/packages/translation/src/lang/nl.json
+++ b/packages/translation/src/lang/nl.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Bestandssysteem info weergeven"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Standaard tab"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json
index e387d198c..595f6b71e 100644
--- a/packages/translation/src/lang/no.json
+++ b/packages/translation/src/lang/no.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Vis filsysteminfo"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Standard fane"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Vis bakgrunnsbrukslinje"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json
index 8891696d8..31d301ceb 100644
--- a/packages/translation/src/lang/pl.json
+++ b/packages/translation/src/lang/pl.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Pokaż informacje o systemie plików"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Domyślna karta"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Pokaż pasek wykorzystania w tle"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/pt-br.json b/packages/translation/src/lang/pt-br.json
index 433db0f3f..1d8b6329e 100644
--- a/packages/translation/src/lang/pt-br.json
+++ b/packages/translation/src/lang/pt-br.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Mostrar informações do sistema de arquivos"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Aba padrão"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Exibir barra de uso em segundo plano"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json
index eb490a8ba..ab6a20c1d 100644
--- a/packages/translation/src/lang/pt.json
+++ b/packages/translation/src/lang/pt.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json
index cc5b26726..d85368be3 100644
--- a/packages/translation/src/lang/ro.json
+++ b/packages/translation/src/lang/ro.json
@@ -2,168 +2,168 @@
"init": {
"step": {
"start": {
- "title": "",
- "subtitle": "",
- "description": "",
+ "title": "Bun venit",
+ "subtitle": "Să începem cu configurarea Homarr.",
+ "description": "Pentru a începe, selectează modul în care vrei să setezi Homarr.",
"action": {
- "scratch": "",
- "importOldmarr": "",
- "restoreSqlite": "",
- "restoreSqliteDescription": "",
- "backToOptions": ""
+ "scratch": "Începe de la zero",
+ "importOldmarr": "Importă din Homarr înainte de 1.0",
+ "restoreSqlite": "Restaurează dintr-un backup SQLite",
+ "restoreSqliteDescription": "Încarcă o copie completă a bazei de date SQLite dintr-o instalare anterioară a Homarr. Aceasta va restaura toate interfețele, utilizatorii, aplicaţiile, integrările şi setările.",
+ "backToOptions": "← Înapoi la opțiunile de configurare"
}
},
"import": {
- "title": "",
- "subtitle": "",
+ "title": "Importare date",
+ "subtitle": "Puteți importa date dintr-o instalare Homarr existentă.",
"dropzone": {
- "title": "",
- "description": ""
+ "title": "Trage fişierul zip aici sau apasă pentru a-l căuta",
+ "description": "Fișierul zip încărcat va fi procesat și vei putea selecta ceea ce dorești să imporți"
},
"fileInfo": {
"action": {
- "change": ""
+ "change": "Schimbă fișierul"
}
},
"importSettings": {
- "title": "",
- "description": ""
+ "title": "Importă Setări",
+ "description": "Configurare comportamentul de importare"
},
"boardSelection": {
- "title": "",
- "description": "",
+ "title": "S-au găsit {count} secţiuni",
+ "description": "Alege toate secțiunile cu dimensiunea pe care dorești să o imporți",
"action": {
- "selectAll": "",
- "unselectAll": ""
+ "selectAll": "Selectează tot",
+ "unselectAll": "Deselectează tot"
}
},
"summary": {
- "title": "",
- "description": "",
+ "title": "Rezumat importare",
+ "description": "În rezumatul de mai jos poți vedea ce va fi importat",
"action": {
- "import": ""
+ "import": "Confirmă importul şi continuă"
},
"entities": {
"apps": "Aplicații",
"boards": "Planșe",
- "integrations": "",
- "credentialUsers": ""
+ "integrations": "Integrări",
+ "credentialUsers": "Utilizatori acreditați"
}
},
"tokenModal": {
- "title": "",
+ "title": "Introdu token-ul de import",
"field": {
"token": {
- "label": "",
- "description": ""
+ "label": "Token-ul",
+ "description": "Introdu token-ul de import afișat în instalarea de homarr anterioară"
}
},
"notification": {
"error": {
- "title": "",
- "message": ""
+ "title": "Token invalid",
+ "message": "Token-ul introdus e invalid"
}
}
}
},
"user": {
- "title": "",
- "subtitle": "",
+ "title": "Utilizator Administrator",
+ "subtitle": "Specifică credențialele pentru utilizatorul administrator.",
"notification": {
"success": {
- "title": "",
- "message": ""
+ "title": "Utilizator creat",
+ "message": "Utilizatorul a fost creat cu succes"
},
"error": {
- "title": ""
+ "title": "Crearea utilizatorului a eșuat"
}
}
},
"group": {
- "title": "",
- "subtitle": "",
+ "title": "Grup extern",
+ "subtitle": "Specifică grupul care ar trebui să fie utilizat pentru utilizatori externi.",
"form": {
"name": {
- "label": "",
- "description": ""
+ "label": "Nume grup",
+ "description": "Numele trebuie să corespundă grupului de administratori al furnizorului extern"
}
}
},
"settings": {
"title": "Setări",
- "subtitle": ""
+ "subtitle": "Configurare setări server."
},
"integrations": {
- "title": "",
- "subtitle": "",
- "description": "",
+ "title": "Integrări",
+ "subtitle": "Selectează serviciile pe care le folosești.",
+ "description": "Alegeți integrările pe care doriți să le conectați. Vă vom configura tabloul de bord cu widget-uri care se potrivesc automat.",
"action": {
- "continue": "",
- "skip": ""
+ "continue": "Continuă",
+ "skip": "Omite pentru moment"
},
"configure": {
- "progress": "",
- "skip": "",
- "finishing": "",
+ "progress": "{current} din {total}",
+ "skip": "Omite această integrare",
+ "finishing": "Se configurează tabloul de bord...",
"error": {
- "title": "",
- "message": ""
+ "title": "Configurarea a eșuat",
+ "message": "Ceva nu a mers bine în timpul configurării tabloului de bord. Te rugăm să încerci din nou."
},
"helpers": {
- "tooltip": "",
- "description": ""
+ "tooltip": "Helperi URL",
+ "description": "Acești helperi încearcă să ghicească URL-ul serviciilor tale. Dacă nu funcționează, introdu adresa manual."
}
},
"urlTemplate": {
- "label": "",
- "placeholder": "",
- "hint": "",
- "warning": "",
- "preview": "",
+ "label": "URL de bază",
+ "placeholder": "homelab.local sau 192.168.1.1",
+ "hint": "Introdu domeniul de bază sau IP-ul pentru a completa automat adresele URL ale integrărilor",
+ "warning": "Setarea adresei URL de bază acum va completa automat toate URL-urile integrărilor, scurtând timpul necesar configurării",
+ "preview": "de ex. {example}",
"mode": {
- "subdomain": "",
- "hostPort": ""
+ "subdomain": "Subdomeniu",
+ "hostPort": "Gazdă:Port"
}
},
"docker": {
- "detected": "",
- "detectedBreakdown": "",
- "summary": "",
- "appBadge": "",
- "appSectionLabel": "",
- "scanning": "",
- "scanningDescription": ""
+ "detected": "Docker a detectat {count} servicii",
+ "detectedBreakdown": "{integrations} integrări · {apps} aplicații",
+ "summary": "Homarr a detectat {apps} aplicații, dintre care {integrations} au integrări încorporate",
+ "appBadge": "Aplicație",
+ "appSectionLabel": "Aplicații de adăugat la tabloul de bord ({count} selectate)",
+ "scanning": "Scanare Docker...",
+ "scanningDescription": "Căutare containere care rulează pe sistem"
}
},
"finish": {
- "title": "",
- "subtitle": "",
- "description": "",
+ "title": "Finalizează configurarea",
+ "subtitle": "Ești gata să începi!",
+ "description": "Ai finalizat cu succes procesul de configurare. Acum poți începe să utilizezi Homarr. Selectează următoarea acțiune:",
"action": {
- "goToBoard": "",
- "createBoard": "",
- "inviteUser": "",
- "docs": ""
+ "goToBoard": "Mergi la panoul {name}",
+ "createBoard": "Creează primul tău panou",
+ "inviteUser": "Invită alți utilizatori",
+ "docs": "Citește documentația"
}
}
},
- "backToStart": ""
+ "backToStart": "Înapoi la început"
},
"user": {
"title": "Utilizatori",
"name": "Utilizator",
"page": {
"login": {
- "title": "",
- "subtitle": ""
+ "title": "Conecteaza-te la contul tau",
+ "subtitle": "Bine ai revenit! Introdu datele de autentificare"
},
"invite": {
- "title": "",
- "subtitle": "",
- "description": ""
+ "title": "Alătură-te Homarr",
+ "subtitle": "Bine ai venit la Homarr! Te rugăm să-ți creezi contul",
+ "description": "Ai fost invitat de {username}"
},
"init": {
- "title": "",
+ "title": "Instalare Homarr nouă",
"subtitle": ""
}
},
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Afișare informații despre sistemul de fișiere"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json
index e23ac57ab..62b918327 100644
--- a/packages/translation/src/lang/ru.json
+++ b/packages/translation/src/lang/ru.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Показать информацию о файловой системе"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Вкладка по умолчанию"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Показывать фоновую шкалу использования"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json
index 5336333d8..a7fbce04f 100644
--- a/packages/translation/src/lang/sk.json
+++ b/packages/translation/src/lang/sk.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Zobraziť informácie o súborovom systéme"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Predvolená karta"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json
index 17a586641..6678f65bd 100644
--- a/packages/translation/src/lang/sl.json
+++ b/packages/translation/src/lang/sl.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json
index 0f84ef06f..7b43c6234 100644
--- a/packages/translation/src/lang/sv.json
+++ b/packages/translation/src/lang/sv.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Visa information om filsystemet"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json
index 59b5bf87e..5755a9519 100644
--- a/packages/translation/src/lang/tr.json
+++ b/packages/translation/src/lang/tr.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "Dosya Sistemi Bilgilerini Göster"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "Varsayılan sekme"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": "Show background usage bar"
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json
index 0a73971ca..b77603f3d 100644
--- a/packages/translation/src/lang/uk.json
+++ b/packages/translation/src/lang/uk.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3532,12 +3537,17 @@
"label": ""
},
"free": {
- "label": ""
+ "label": "Відсоток вільного простору (напр., 24% вільно)"
}
}
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
@@ -3587,19 +3597,19 @@
"label": ""
},
"showGpu": {
- "label": ""
+ "label": "Показати графічний процесор"
},
"showLoadAvg": {
- "label": ""
+ "label": "Показати середній рівень навантаження"
},
"showNet": {
- "label": ""
+ "label": "Показати мережу"
},
"showTemp": {
- "label": ""
+ "label": "Показувати температуру"
},
"showBattery": {
- "label": ""
+ "label": "Показувати заряд батереї"
},
"showServices": {
"label": ""
@@ -3613,7 +3623,7 @@
},
"noRecords": "",
"error": {
- "internalServerError": ""
+ "internalServerError": "Не вдається підключитися до Beszel. Перевірте параметри інтеграції."
},
"column": {
"system": "",
@@ -3665,7 +3675,7 @@
"label": ""
},
"showUptime": {
- "label": ""
+ "label": "Показати час роботи"
},
"showAgent": {
"label": ""
@@ -3686,7 +3696,7 @@
"net": "",
"temp": "",
"battery": "",
- "services": "",
+ "services": "Служби",
"uptime": "",
"agent": ""
}
@@ -3769,12 +3779,12 @@
"title": "",
"subtitle": "",
"series": "",
- "cache": ""
+ "cache": "Кеш/Баффери"
},
"disk": {
"title": "",
"subtitle": "",
- "series": ""
+ "series": "Використано"
},
"diskIO": {
"title": "",
@@ -3971,7 +3981,7 @@
},
"contain": {
"label": "",
- "description": ""
+ "description": "Масштабує зображення максимально великою в межах контейнера без обрізання або розтягування зображення."
}
}
},
@@ -4286,7 +4296,7 @@
"private": "Ця дошка є приватною"
},
"noResults": {
- "title": ""
+ "title": "У вас ще немає дошок"
},
"modal": {
"createBoard": {
@@ -4655,7 +4665,7 @@
"table": {
"header": {
"id": "ІДЕНТИФІКАТОР",
- "createdBy": "",
+ "createdBy": "Створено",
"actions": ""
}
}
diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json
index 8febe135e..36207f3d7 100644
--- a/packages/translation/src/lang/vi.json
+++ b/packages/translation/src/lang/vi.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": ""
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": ""
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json
index 10ae7d3a8..bfa7bcc0f 100644
--- a/packages/translation/src/lang/zh.json
+++ b/packages/translation/src/lang/zh.json
@@ -2284,6 +2284,11 @@
"fileSystem": {
"label": "顯示檔案系統訊息"
},
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
+ },
"defaultTab": {
"label": "預設頁面"
},
@@ -3538,6 +3543,11 @@
},
"showBackgroundBar": {
"label": ""
+ },
+ "visibleStorageVolumes": {
+ "label": "",
+ "description": "",
+ "placeholder": ""
}
},
"status": {
diff --git a/packages/validation/src/email.ts b/packages/validation/src/email.ts
new file mode 100644
index 000000000..fd076a3a8
--- /dev/null
+++ b/packages/validation/src/email.ts
@@ -0,0 +1,16 @@
+import { z } from "zod/v4";
+
+export const utf8EmailSchema = z.email({ pattern: z.regexes.unicodeEmail });
+
+export const optionalEmailSchema = utf8EmailSchema.or(z.string().length(0)).optional();
+
+export const nullableEmailSchema = utf8EmailSchema
+ .or(z.literal(""))
+ .transform((value) => (value === "" ? null : value))
+ .optional()
+ .nullable();
+
+export const requiredNullableEmailSchema = utf8EmailSchema
+ .or(z.literal(""))
+ .transform((value) => (value === "" ? null : value))
+ .nullable();
diff --git a/packages/validation/src/form/i18n.spec.ts b/packages/validation/src/form/i18n.spec.ts
index 3ff2cba94..9232ecf91 100644
--- a/packages/validation/src/form/i18n.spec.ts
+++ b/packages/validation/src/form/i18n.spec.ts
@@ -4,6 +4,7 @@ import { z } from "zod/v4";
import type { TranslationFunction } from "@homarr/translation";
import { createCustomErrorParams, zodErrorMap } from "./i18n";
+import { utf8EmailSchema } from "../email";
const expectError = (error: z.core.$ZodIssue, key: string) => {
expect(error.message).toContain(key);
@@ -111,4 +112,19 @@ describe("i18n", () => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
expectError(result.error.issues[0]!, "boardAlreadyExists");
});
+
+ test("should validate UTF8SMTP email with umlauts", () => {
+ const result = utf8EmailSchema.safeParse("jörg@example.com");
+ expect(result.success).toBe(true);
+ });
+
+ test("should validate UTF8SMTP email with unicode domain", () => {
+ const result = utf8EmailSchema.safeParse("user@münchen.de");
+ expect(result.success).toBe(true);
+ });
+
+ test("should validate standard ASCII emails", () => {
+ const result = utf8EmailSchema.safeParse("user@example.com");
+ expect(result.success).toBe(true);
+ });
});
diff --git a/packages/validation/src/user.ts b/packages/validation/src/user.ts
index 824567fa6..b63e18b68 100644
--- a/packages/validation/src/user.ts
+++ b/packages/validation/src/user.ts
@@ -6,6 +6,7 @@ import type { TranslationObject } from "@homarr/translation";
import { zodEnumFromArray } from "./enums";
import { createCustomErrorParams } from "./form/i18n";
+import { nullableEmailSchema, optionalEmailSchema } from "./email";
// We always want the lowercase version of the username to compare it in a case-insensitive way
export const usernameSchema = z.string().trim().toLowerCase().min(3).max(255);
@@ -42,7 +43,7 @@ export const userBaseCreateSchema = z.object({
username: usernameSchema,
password: userPasswordSchema,
confirmPassword: z.string(),
- email: z.string().email().or(z.string().length(0)).optional(),
+ email: optionalEmailSchema,
});
export const userCreateSchema = addConfirmPasswordRefinement(userBaseCreateSchema).and(
@@ -85,13 +86,7 @@ export const userRegistrationApiSchema = userRegistrationSchema.and(
export const userEditProfileSchema = z.object({
id: z.string(),
name: usernameSchema,
- email: z
- .string()
- .email()
- .or(z.literal(""))
- .transform((value) => (value === "" ? null : value))
- .optional()
- .nullable(),
+ email: nullableEmailSchema,
});
const baseChangePasswordSchema = z.object({
diff --git a/packages/widgets/src/_inputs/common.tsx b/packages/widgets/src/_inputs/common.tsx
index c7be65262..3d575bfb0 100644
--- a/packages/widgets/src/_inputs/common.tsx
+++ b/packages/widgets/src/_inputs/common.tsx
@@ -11,7 +11,7 @@ export interface CommonWidgetInputProps {
itemId?: string;
}
-type UseWidgetInputTranslationReturnType = (key: "label" | "description") => string;
+type UseWidgetInputTranslationReturnType = (key: "label" | "description" | "placeholder") => string;
/**
* Short description why as and unknown convertions are used below:
diff --git a/packages/widgets/src/_inputs/index.ts b/packages/widgets/src/_inputs/index.ts
index ac9ef1a67..2e6943ac0 100644
--- a/packages/widgets/src/_inputs/index.ts
+++ b/packages/widgets/src/_inputs/index.ts
@@ -17,6 +17,7 @@ import { WidgetUmamiEventInput } from "./widget-umami-event-input";
import { WidgetUmamiEventNamesInput } from "./widget-umami-event-names-input";
import { WidgetUmamiWebsiteInput } from "./widget-umami-website-input";
import { WidgetIntegrationSelectInput } from "./widget-integration-select-input";
+import { WidgetIntegrationMultiSelectInput } from "./widget-integration-multi-select-input";
const mapping = {
anchorNote: WidgetAnchorNoteInput,
@@ -37,6 +38,7 @@ const mapping = {
umamiWebsite: WidgetUmamiWebsiteInput,
customWidgetSelect: WidgetCustomWidgetSelectInput,
integrationSelect: WidgetIntegrationSelectInput,
+ integrationMultiSelect: WidgetIntegrationMultiSelectInput,
} satisfies Record;
export const getInputForType = (type: TType) => {
diff --git a/packages/widgets/src/_inputs/widget-integration-multi-select-input.tsx b/packages/widgets/src/_inputs/widget-integration-multi-select-input.tsx
new file mode 100644
index 000000000..f2fa0b542
--- /dev/null
+++ b/packages/widgets/src/_inputs/widget-integration-multi-select-input.tsx
@@ -0,0 +1,60 @@
+"use client";
+
+import { MultiSelect, Text } from "@mantine/core";
+
+import { useScopedI18n } from "@homarr/translation/client";
+
+import type { CommonWidgetInputProps } from "./common";
+import { useWidgetInputTranslation } from "./common";
+import { useFormContext } from "./form";
+
+const useIntegrationSelectTranslation = () => useScopedI18n("widget.integrationSelect");
+
+export const WidgetIntegrationMultiSelectInput = ({
+ property,
+ kind,
+ options,
+}: CommonWidgetInputProps<"integrationMultiSelect">) => {
+ const t = useIntegrationSelectTranslation();
+ const tInput = useWidgetInputTranslation(kind, property);
+ const form = useFormContext();
+
+ const integrationIds = form.values.integrationIds as string[];
+ const inputProps = form.getInputProps(`options.${property}`);
+ const selectedValues = (inputProps.value as string[] | undefined) ?? [];
+
+ const { data: selectData = [], isPending, isError } = options.useOptions(integrationIds);
+ const data = [
+ ...selectData,
+ ...selectedValues
+ .filter((selectedValue) => !selectData.some((option) => option.value === selectedValue))
+ .map((selectedValue) => ({ value: selectedValue, label: selectedValue })),
+ ];
+
+ if (integrationIds.length === 0) {
+ return (
+
+ {t("configureIntegrationFirst")}
+
+ );
+ }
+
+ const description = options.withDescription ? tInput("description") : undefined;
+ const placeholder = isPending ? t("loading") : tInput("placeholder");
+ const loadError = isError ? t("loadError") : undefined;
+
+ return (
+
+ );
+};
diff --git a/packages/widgets/src/archive-team-warrior/component.tsx b/packages/widgets/src/archive-team-warrior/component.tsx
index 032858c2f..5ac03eadc 100644
--- a/packages/widgets/src/archive-team-warrior/component.tsx
+++ b/packages/widgets/src/archive-team-warrior/component.tsx
@@ -3,7 +3,7 @@
import { Avatar, Badge, Card, Group, SimpleGrid, Stack, Text } from "@mantine/core";
import { clientApi } from "@homarr/api/client";
-import { humanFileSize } from "@homarr/common";
+import { formatByteRate } from "@homarr/common";
import { getIconUrl } from "@homarr/definitions";
import type { WidgetComponentProps } from "../definition";
@@ -84,4 +84,4 @@ const Metric = ({ label, value }: { label: string; value: number | string }) =>
);
-const formatBandwidth = (value?: number) => humanFileSize(Math.round(value ?? 0), "/s");
+const formatBandwidth = (value?: number) => formatByteRate(Math.round(value ?? 0));
diff --git a/packages/widgets/src/bazarr/component.module.css b/packages/widgets/src/bazarr/component.module.css
new file mode 100644
index 000000000..9b5857379
--- /dev/null
+++ b/packages/widgets/src/bazarr/component.module.css
@@ -0,0 +1,77 @@
+.root {
+ container-type: size;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ min-height: 0;
+ padding: clamp(6px, 3cqi, 14px);
+ gap: clamp(4px, 2cqi, 10px);
+ overflow: hidden;
+}
+
+.grid {
+ display: grid;
+ flex: 1;
+ min-height: 0;
+ gap: clamp(4px, 2cqi, 10px);
+ grid-template-columns: repeat(var(--stat-cols, 2), minmax(0, 1fr));
+ grid-auto-rows: 1fr;
+ align-content: stretch;
+}
+
+.statTile {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ min-height: 0;
+ min-width: 0;
+ gap: clamp(2px, 1.5cqi, 5px);
+ padding: clamp(4px, 2.5cqi, 10px);
+ border-radius: var(--mantine-radius-md);
+ background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6));
+ overflow: hidden;
+}
+
+.statTileWarning {
+ background-color: light-dark(var(--mantine-color-orange-0), var(--mantine-color-dark-5));
+}
+
+.statIcon {
+ color: var(--mantine-color-dimmed);
+ flex-shrink: 0;
+}
+
+.statLabel {
+ font-size: clamp(8px, 2.5cqi, 12px);
+ color: var(--mantine-color-dimmed);
+ line-height: 1.2;
+ text-align: center;
+ max-width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.statValue {
+ font-size: clamp(14px, 5.5cqi, 24px);
+ font-weight: 700;
+ color: var(--mantine-primary-color-filled);
+ line-height: 1.1;
+ text-align: center;
+}
+
+.statValueWarning {
+ color: var(--mantine-color-orange-6);
+}
+
+.emptyState {
+ display: flex;
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ min-height: 0;
+ color: var(--mantine-color-dimmed);
+ font-size: clamp(11px, 3cqi, 14px);
+ text-align: center;
+}
diff --git a/packages/widgets/src/bazarr/component.tsx b/packages/widgets/src/bazarr/component.tsx
new file mode 100644
index 000000000..094c32ee1
--- /dev/null
+++ b/packages/widgets/src/bazarr/component.tsx
@@ -0,0 +1,103 @@
+"use client";
+
+import type { CSSProperties } from "react";
+import { Text } from "@mantine/core";
+import { IconAlertTriangle, IconDeviceTv, IconMovie, IconPlugConnected } from "@tabler/icons-react";
+
+import { clientApi } from "@homarr/api/client";
+import { useScopedI18n } from "@homarr/translation/client";
+
+import { WidgetEmptyState } from "../common/empty-state";
+import type { WidgetComponentProps } from "../definition";
+import classes from "./component.module.css";
+
+const statVisibilityByOption = {
+ showMissingEpisodes: "episodes",
+ showMissingMovies: "movies",
+ showProviderIssues: "providers",
+ showHealthIssues: "status",
+} as const;
+
+const statIcons = {
+ episodes: IconDeviceTv,
+ movies: IconMovie,
+ providers: IconPlugConnected,
+ status: IconAlertTriangle,
+} as const;
+
+const gridColsByWidth = [
+ { minWidth: 380, cols: 2 },
+ { minWidth: 0, cols: 1 },
+] as const;
+
+const iconSizeByWidth = [
+ { minWidth: 320, size: 22 },
+ { minWidth: 200, size: 18 },
+ { minWidth: 0, size: 16 },
+] as const;
+
+export default function BazarrWidget({ integrationIds, options, width }: WidgetComponentProps<"bazarr">) {
+ const t = useScopedI18n("widget.bazarr");
+ const { data: badges } = clientApi.widget.bazarr.getBadges.useQuery(
+ { integrationId: integrationIds[0] ?? "" },
+ { enabled: Boolean(integrationIds[0]) },
+ );
+
+ if (!badges) return ;
+
+ const statValues = {
+ episodes: badges.episodes,
+ movies: badges.movies,
+ providers: badges.providers,
+ status: badges.status,
+ } as const;
+
+ const visibleStatKeys = Object.entries(statVisibilityByOption)
+ .filter(([optionKey]) => options[optionKey as keyof typeof options])
+ .map(([, statKey]) => statKey);
+
+ const gridCols = getGridCols(width);
+ const iconSize = getIconSize(width);
+
+ if (visibleStatKeys.length === 0) {
+ return (
+
+ );
+ }
+
+ return (
+
+
+ {visibleStatKeys.map((statKey) => {
+ const Icon = statIcons[statKey];
+ const value = statValues[statKey];
+ const isWarning = (statKey === "providers" || statKey === "status") && value > 0;
+
+ return (
+
+
+ {value}
+ {t(statKey)}
+
+ );
+ })}
+
+
+ );
+}
+
+function getGridCols(width: number): number {
+ const match = gridColsByWidth.find(({ minWidth }) => width >= minWidth);
+ return match?.cols ?? 1;
+}
+
+function getIconSize(width: number): number {
+ const match = iconSizeByWidth.find(({ minWidth }) => width >= minWidth);
+ return match?.size ?? 16;
+}
diff --git a/packages/widgets/src/bazarr/index.ts b/packages/widgets/src/bazarr/index.ts
new file mode 100644
index 000000000..f2e79f570
--- /dev/null
+++ b/packages/widgets/src/bazarr/index.ts
@@ -0,0 +1,36 @@
+import { IconBadgeCc, IconServerOff } from "@tabler/icons-react";
+
+import { createWidgetDefinition } from "../definition";
+import { optionsBuilder } from "../options";
+
+export const { definition, componentLoader } = createWidgetDefinition("bazarr", {
+ icon: IconBadgeCc,
+ supportedIntegrations: ["bazarr"],
+ integrationsRequired: true,
+ createOptions() {
+ return optionsBuilder.from((factory) => ({
+ showMissingEpisodes: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showMissingMovies: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showProviderIssues: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showHealthIssues: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ }));
+ },
+ errors: {
+ INTERNAL_SERVER_ERROR: {
+ icon: IconServerOff,
+ message: (t) => t("widget.bazarr.error.internalServerError"),
+ },
+ },
+}).withDynamicImport(() => import("./component"));
diff --git a/packages/widgets/src/beszel-system-grid/component.tsx b/packages/widgets/src/beszel-system-grid/component.tsx
index 5d4671f5f..51e5d014c 100644
--- a/packages/widgets/src/beszel-system-grid/component.tsx
+++ b/packages/widgets/src/beszel-system-grid/component.tsx
@@ -27,10 +27,18 @@ import classes from "./component.module.css";
import type { WidgetComponentProps } from "../definition";
import type { BeszelSystemRow } from "../beszel/_shared/types";
import { statusColorMap, thresholdColor } from "../beszel/_shared/colors";
-import { formatByteRate, formatLoadAvg, formatPercent, formatTemp, formatUptime } from "../beszel/_shared/format";
+import {
+ formatByteRate,
+ formatLoadAvg,
+ formatPercent,
+ formatTemp,
+ formatUptime,
+ getProgressTrackSize,
+} from "../beszel/_shared/format";
import { useBeszelFilteredSystems } from "../beszel/_shared/hooks";
import { BeszelIntegrationErrorIndicator } from "../beszel/_shared/error-indicator";
import { BeszelSystemStatsModal } from "../beszel/_shared/system-stats-modal";
+import { DiskUsage } from "../beszel/_shared/disk-usage";
interface SizeConfig {
iconSize: number;
@@ -106,22 +114,14 @@ const getMaxVisibleMetrics = (cellHeight: number, size: SizeConfig): number => {
return Math.max(1, Math.floor(available / size.rowHeight));
};
-const MIN_CELL_WIDTH = 120;
+const MIN_CELL_WIDTH = 180;
const MIN_CELL_HEIGHT = 80;
-const getColCount = (width: number, itemCount: number): number => {
+const getColCount = (width: number, height: number, itemCount: number): number => {
if (itemCount <= 1) return 1;
const maxCols = Math.min(itemCount, Math.max(1, Math.floor(width / MIN_CELL_WIDTH)));
-
- let best = 1;
- for (let c = 1; c <= maxCols; c++) {
- const emptyCells = (c - (itemCount % c)) % c;
- const bestEmpty = (best - (itemCount % best)) % best;
- if (emptyCells < bestEmpty || (emptyCells === bestEmpty && c > best)) {
- best = c;
- }
- }
- return best;
+ const aspectRatio = width / Math.max(height, MIN_CELL_HEIGHT);
+ return Math.min(maxCols, Math.max(1, Math.ceil(Math.sqrt(itemCount * aspectRatio))));
};
interface MetricRowProps {
@@ -133,20 +133,25 @@ interface MetricRowProps {
}
const MetricValue = ({ value, progress, size }: Pick) => (
-
-
+
+
{value}
{progress && (
-
+
)}
);
const MetricRow = ({ icon, label, value, progress, size }: MetricRowProps) => (
-
+
{icon}
-
+
{label}
@@ -195,14 +200,13 @@ const metricRenderers = [
{
key: "showDisk",
render: (s: BeszelSystemRow, t: SystemCardProps["t"], sz: SizeConfig) => (
- }
- label={t("metric.disk")}
- value={formatPercent(s.disk)}
- progress={{ value: s.disk, color: thresholdColor(s.disk) }}
- size={sz}
- />
+
+
+
+ {t("metric.disk")}
+
+
+
),
visible: (s: BeszelSystemRow, o: SystemCardProps["options"]) => o.showDisk,
},
@@ -399,7 +403,7 @@ export default function BeszelSystemGridWidget({
);
}
- const cols = getColCount(width, filteredSystems.length);
+ const cols = getColCount(width, height, filteredSystems.length);
const rows = Math.ceil(filteredSystems.length / cols) || 1;
const rawCellHeight = height / rows;
const scrollEnabled = rawCellHeight < MIN_CELL_HEIGHT;
diff --git a/packages/widgets/src/beszel-system-grid/index.ts b/packages/widgets/src/beszel-system-grid/index.ts
index 9551adfc6..69dc7e2ba 100644
--- a/packages/widgets/src/beszel-system-grid/index.ts
+++ b/packages/widgets/src/beszel-system-grid/index.ts
@@ -6,6 +6,7 @@ import { optionsBuilder } from "../options";
export const { definition, componentLoader } = createWidgetDefinition("beszelSystemGrid", {
icon: IconLayoutGrid,
+ queryKey: [["widget", "beszel"]],
supportedIntegrations: ["beszel", "mock"],
integrationsRequired: true,
createOptions() {
diff --git a/packages/widgets/src/beszel-system-stats/component.tsx b/packages/widgets/src/beszel-system-stats/component.tsx
index c82196639..91dcd7292 100644
--- a/packages/widgets/src/beszel-system-stats/component.tsx
+++ b/packages/widgets/src/beszel-system-stats/component.tsx
@@ -1,53 +1,21 @@
"use client";
import { useCallback, useMemo } from "react";
-import { Button, Box, Center, Loader, Menu, ScrollArea, Select, SimpleGrid, Stack, Text } from "@mantine/core";
-import { IconPlugConnectedX, IconServer, IconQuestionMark, IconServerOff } from "@tabler/icons-react";
+import { Box, Button, Center, Loader, Menu, ScrollArea, Select, Stack, Text } from "@mantine/core";
+import { IconQuestionMark, IconServer, IconServerOff } from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client";
import { useSession } from "@homarr/auth/client";
import { constructBoardPermissions } from "@homarr/auth/shared";
import { useOptionalBoard } from "@homarr/boards/context";
-import type { BeszelContainerStatsRecord, BeszelSystemStatsRecord } from "@homarr/integrations/types";
import { useScopedI18n } from "@homarr/translation/client";
import classes from "./component.module.css";
import type { WidgetComponentProps } from "../definition";
-import { containerColors } from "../beszel/_shared/colors";
import type { BeszelTimePeriod } from "../beszel/_shared/chart";
-import {
- BeszelChartPanel,
- CPU_Y_AXIS_DOMAIN,
- useContainerNames,
- useDockerChartData,
- useSystemChartData,
-} from "../beszel/_shared/chart";
-import {
- chartAxisFormatters,
- formatByteRate,
- formatGB,
- formatPercent,
- formatStorageBytes,
-} from "../beszel/_shared/format";
import { BeszelIntegrationErrorIndicator } from "../beszel/_shared/error-indicator";
-import { makeTooltipProps } from "../beszel/_shared/tooltip";
-import { useLiveStats } from "../beszel/_shared/use-live-stats";
-
-const tooltipPercent = makeTooltipProps(formatPercent);
-const tooltipGB = makeTooltipProps(formatGB, true);
-const tooltipRate = makeTooltipProps(formatByteRate, true);
-const tooltipPercentTotal = makeTooltipProps(formatPercent, true);
-const tooltipBytesTotal = makeTooltipProps(formatStorageBytes, true);
-
-const CHART_HEIGHT = 180;
-const MB = 1024 * 1024;
-const gridColumns = [1, 2] as const;
-
-function statsWhenShown(show: boolean | undefined, data: T | undefined): T | undefined {
- if (!show || !data) return undefined;
- return data;
-}
+import { BeszelStatsView } from "../beszel/_shared/stats-view";
export default function BeszelSystemStatsWidget({
options,
@@ -70,14 +38,12 @@ export default function BeszelSystemStatsWidget({
} = clientApi.widget.beszel.getSystems.useQuery({ integrationIds });
const systems = useMemo(
- () => systemsResult.flatMap((r) => r.systems.map((s) => ({ value: s.id, label: s.name }))),
+ () => systemsResult.flatMap((result) => result.systems.map((system) => ({ value: system.id, label: system.name }))),
[systemsResult],
);
-
const selectedSystem = options.systemId || systems[0]?.value || "";
- const selectedLabel = systems.find((s) => s.value === selectedSystem)?.label;
- const systemExists = systems.some((s) => s.value === selectedSystem);
- const systemReady = !systemsPending && (selectedSystem === "" || systemExists);
+ const selectedLabel = systems.find((system) => system.value === selectedSystem)?.label;
+ const systemExists = systems.some((system) => system.value === selectedSystem);
const handleSelectSystem = useCallback(
(value: string) => {
@@ -89,119 +55,13 @@ export default function BeszelSystemStatsWidget({
[setOptions, hasChangeAccess, boardId, itemId, saveItemOptions],
);
- const showDocker = options.showDockerCpu || options.showDockerMemory || options.showDockerNetwork;
- const isLive = options.timePeriod === "1m";
-
- const { data: statsResult, error: statsError } = clientApi.widget.beszel.getSystemStats.useQuery(
- {
- integrationIds,
- systemId: selectedSystem,
- timePeriod: options.timePeriod as "1m" | "1h" | "12h" | "24h" | "1w" | "30d",
- includeDocker: showDocker,
- },
- {
- refetchInterval: isLive ? false : 5_000,
- enabled: !isLive && systemReady && selectedSystem !== "",
- },
- );
-
- const { data: liveData, error: liveError } = useLiveStats(integrationIds, selectedSystem, isLive && systemReady);
-
- let activeStats:
- | { systemStats: BeszelSystemStatsRecord[]; containerStats: BeszelContainerStatsRecord[]; error?: string }
- | null
- | undefined = statsResult;
- if (isLive) {
- activeStats = liveData;
- }
-
- const mappers = useMemo(
- () => ({
- cpu: (s: { cpu: number }) => ({ [t("chart.cpu.series")]: s.cpu }),
- memory: (s: { mu: number; mb: number }) => ({
- [t("chart.memory.series")]: s.mu,
- [t("chart.memory.cache")]: s.mb ?? 0,
- }),
- disk: (s: { du: number }) => ({ [t("chart.disk.series")]: s.du }),
- diskIO: (s: { dr?: number; dw?: number }) => ({
- [t("chart.diskIO.read")]: (s.dr ?? 0) * MB,
- [t("chart.diskIO.write")]: (s.dw ?? 0) * MB,
- }),
- network: (s: { ns: number; nr: number; b?: [number, number] }) => ({
- [t("chart.network.sent")]: s.b?.[0] ?? s.ns,
- [t("chart.network.recv")]: s.b?.[1] ?? s.nr,
- }),
- }),
- [t],
- );
-
- const series = useMemo(
- () => ({
- cpu: [{ name: t("chart.cpu.series"), color: "teal.6" }],
- memory: [
- { name: t("chart.memory.series"), color: "teal.5" },
- { name: t("chart.memory.cache"), color: "teal.8" },
- ],
- disk: [{ name: t("chart.disk.series"), color: "grape.6" }],
- diskIO: [
- { name: t("chart.diskIO.write"), color: "orange.6" },
- { name: t("chart.diskIO.read"), color: "blue.6" },
- ],
- network: [
- { name: t("chart.network.sent"), color: "blue.6" },
- { name: t("chart.network.recv"), color: "teal.6" },
- ],
- }),
- [t],
- );
-
- const systemStats = activeStats?.systemStats;
- const containerStatsRaw = activeStats?.containerStats;
-
- const timePeriod = options.timePeriod as BeszelTimePeriod;
- const cpuData = useSystemChartData(statsWhenShown(options.showCpu, systemStats), mappers.cpu, timePeriod);
- const memoryData = useSystemChartData(statsWhenShown(options.showMemory, systemStats), mappers.memory, timePeriod);
- const diskData = useSystemChartData(statsWhenShown(options.showDisk, systemStats), mappers.disk, timePeriod);
- const diskIOData = useSystemChartData(statsWhenShown(options.showDiskIO, systemStats), mappers.diskIO, timePeriod);
- const networkData = useSystemChartData(statsWhenShown(options.showNetwork, systemStats), mappers.network, timePeriod);
-
- const containerNames = useContainerNames(statsWhenShown(showDocker, containerStatsRaw));
- const dockerCpuData = useDockerChartData(
- statsWhenShown(options.showDockerCpu, containerStatsRaw),
- containerNames,
- "cpu",
- timePeriod,
- );
- const dockerMemData = useDockerChartData(
- statsWhenShown(options.showDockerMemory, containerStatsRaw),
- containerNames,
- "memory",
- timePeriod,
- );
- const dockerNetData = useDockerChartData(
- statsWhenShown(options.showDockerNetwork, containerStatsRaw),
- containerNames,
- "network",
- timePeriod,
- );
-
- const containerSeries = useMemo(
- () => containerNames.map((name, i) => ({ name, color: containerColors[i % containerColors.length] as string })),
- [containerNames],
- );
-
- const cols = gridColumns[Number(width > 600)];
-
if (systemsError) throw systemsError;
- if (!isLive && statsError) throw statsError;
-
- if (systemsPending) {
+ if (systemsPending)
return (
);
- }
if (systems.length === 0) {
return (
@@ -219,7 +79,7 @@ export default function BeszelSystemStatsWidget({
);
}
- if (!systemsPending && !systemExists && systems.length > 0) {
+ if (!systemExists) {
return (
@@ -239,22 +99,6 @@ export default function BeszelSystemStatsWidget({
);
}
- if (isLive && liveError && !liveData) {
- return (
-
-
-
-
- {t("error.liveConnectionFailed")}
-
- setOptions({ newOptions: { timePeriod: "1h" } })}>
- {t("error.switchToHistorical")}
-
-
-
- );
- }
-
return (
@@ -263,7 +107,7 @@ export default function BeszelSystemStatsWidget({
{!isEditMode && systems.length > 1 && (
@@ -279,161 +123,37 @@ export default function BeszelSystemStatsWidget({
- {systems.map((s) => (
+ {systems.map((system) => (
handleSelectSystem(s.value)}
+ fw={system.value === selectedSystem ? 600 : 400}
+ c={system.value !== selectedSystem ? "dimmed" : undefined}
+ onClick={() => handleSelectSystem(system.value)}
>
- {s.label}
+ {system.label}
))}
)}
-
- {!isLive && !activeStats && systemReady && selectedSystem !== "" && (
-
-
-
- )}
-
- {!isLive && activeStats && "error" in activeStats && activeStats.error && (
-
-
-
-
- {activeStats.error}
-
-
-
- )}
-
- {activeStats && (!("error" in activeStats) || !activeStats.error) && (
-
- {options.showCpu && cpuData.length > 0 && (
-
- )}
-
- {options.showMemory && memoryData.length > 0 && (
-
- )}
-
- {options.showDisk && diskData.length > 0 && (
-
- )}
-
- {options.showDiskIO && diskIOData.length > 0 && (
-
- )}
-
- {options.showNetwork && networkData.length > 0 && (
-
- )}
-
- {showDocker && containerSeries.length > 0 && (
- <>
- {options.showDockerCpu && dockerCpuData.length > 0 && (
-
- )}
-
- {options.showDockerMemory && dockerMemData.length > 0 && (
-
- )}
-
- {options.showDockerNetwork && dockerNetData.length > 0 && (
-
- )}
- >
- )}
-
- )}
+ 600 ? 2 : 1}
+ visibility={{
+ cpu: options.showCpu,
+ memory: options.showMemory,
+ disk: options.showDisk,
+ diskIO: options.showDiskIO,
+ network: options.showNetwork,
+ dockerCpu: options.showDockerCpu,
+ dockerMemory: options.showDockerMemory,
+ dockerNetwork: options.showDockerNetwork,
+ }}
+ onSwitchToHistorical={() => setOptions({ newOptions: { timePeriod: "1h" } })}
+ />
diff --git a/packages/widgets/src/beszel-system-stats/index.ts b/packages/widgets/src/beszel-system-stats/index.ts
index a184963e7..af2907b25 100644
--- a/packages/widgets/src/beszel-system-stats/index.ts
+++ b/packages/widgets/src/beszel-system-stats/index.ts
@@ -16,6 +16,7 @@ const timePeriodOptions = [
export const { definition, componentLoader } = createWidgetDefinition("beszelSystemStats", {
icon: IconChartAreaLine,
+ queryKey: [["widget", "beszel"]],
supportedIntegrations: ["beszel", "mock"],
integrationsRequired: true,
createOptions() {
diff --git a/packages/widgets/src/beszel-system-table/component.tsx b/packages/widgets/src/beszel-system-table/component.tsx
index 49b3dca74..5352eb170 100644
--- a/packages/widgets/src/beszel-system-table/component.tsx
+++ b/packages/widgets/src/beszel-system-table/component.tsx
@@ -26,10 +26,18 @@ import { useScopedI18n } from "@homarr/translation/client";
import type { WidgetComponentProps } from "../definition";
import type { BeszelSystemRow } from "../beszel/_shared/types";
import { loadAvgColor, statusColorMap, thresholdColor } from "../beszel/_shared/colors";
-import { formatByteRate, formatLoadAvg, formatPercent, formatTemp, formatUptime } from "../beszel/_shared/format";
+import {
+ formatByteRate,
+ formatLoadAvg,
+ formatPercent,
+ formatTemp,
+ formatUptime,
+ getProgressTrackSize,
+} from "../beszel/_shared/format";
import { useBeszelFilteredSystems } from "../beszel/_shared/hooks";
import { BeszelIntegrationErrorIndicator } from "../beszel/_shared/error-indicator";
import { BeszelSystemStatsModal } from "../beszel/_shared/system-stats-modal";
+import { DiskUsage } from "../beszel/_shared/disk-usage";
const directionMultiplier: Record = { asc: 1, desc: -1 };
@@ -97,11 +105,16 @@ export default function BeszelSystemTableWidget({
}, [filteredSystems, sortStatus]);
const PercentCell = ({ value }: { value: number }) => (
-
-
+
+
{formatPercent(value)}
-
+
);
@@ -156,7 +169,15 @@ export default function BeszelSystemTableWidget({
),
sortable: true,
- render: (record) => ,
+ render: (record) => (
+
+ ),
},
options.showGpu && {
accessor: "gpu",
diff --git a/packages/widgets/src/beszel-system-table/index.ts b/packages/widgets/src/beszel-system-table/index.ts
index 538649afd..ba90cb5e9 100644
--- a/packages/widgets/src/beszel-system-table/index.ts
+++ b/packages/widgets/src/beszel-system-table/index.ts
@@ -25,6 +25,7 @@ const sortDirectionOptions = [
export const { definition, componentLoader } = createWidgetDefinition("beszelSystemTable", {
icon: IconTable,
+ queryKey: [["widget", "beszel"]],
supportedIntegrations: ["beszel", "mock"],
integrationsRequired: true,
createOptions() {
diff --git a/packages/widgets/src/beszel/_shared/chart.spec.ts b/packages/widgets/src/beszel/_shared/chart.spec.ts
new file mode 100644
index 000000000..5a86bf2bb
--- /dev/null
+++ b/packages/widgets/src/beszel/_shared/chart.spec.ts
@@ -0,0 +1,87 @@
+import { describe, expect, test } from "vitest";
+
+import type { BeszelSystemStatsRecord } from "@homarr/integrations/types";
+
+import { buildDiskChartData, padLiveTimeGrid } from "./chart";
+
+const record = (
+ created: string,
+ du: number,
+ efs: BeszelSystemStatsRecord["stats"]["efs"],
+): BeszelSystemStatsRecord => ({
+ id: created,
+ system: "system-1",
+ type: "1m",
+ created,
+ updated: created,
+ stats: {
+ cpu: 0,
+ m: 0,
+ mu: 0,
+ mp: 0,
+ mb: 0,
+ s: 0,
+ su: 0,
+ d: 938.8,
+ du,
+ dp: 51.15,
+ efs,
+ },
+});
+
+describe("buildDiskChartData", () => {
+ test("keeps root and extra filesystem usage in GiB without stacking or byte conversion", () => {
+ const data = buildDiskChartData(
+ [
+ record("2026-07-11T13:46:00.000Z", 455.81, {
+ sda: { d: 1906.8, du: 1656.45, r: 0, w: 0 },
+ sdb: { d: 5587.04, du: 3936.86, r: 0, w: 0 },
+ sdc: { d: 3724.18, du: 1589.84, r: 0, w: 0 },
+ }),
+ ],
+ ["sda", "sdb", "sdc"],
+ "Root",
+ "1h",
+ );
+
+ expect(data).toHaveLength(1);
+ expect(data[0]).toMatchObject({ Root: 455.81, sda: 1656.45, sdb: 3936.86, sdc: 1589.84 });
+ });
+
+ test("uses zero for a filesystem missing from an individual sample and orders historical records oldest first", () => {
+ const data = buildDiskChartData(
+ [
+ record("2026-07-11T13:47:00.000Z", 2, { sda: { d: 10, du: 4, r: 0, w: 0 } }),
+ record("2026-07-11T13:46:00.000Z", 1, undefined),
+ ],
+ ["sda"],
+ "Root",
+ "1h",
+ );
+
+ expect(data.map((point) => ({ Root: point.Root, sda: point.sda }))).toEqual([
+ { Root: 1, sda: 0 },
+ { Root: 2, sda: 4 },
+ ]);
+ });
+});
+
+describe("padLiveTimeGrid", () => {
+ test("keeps a fixed 60-second window with the newest sample at the right edge", () => {
+ const data = padLiveTimeGrid([{ time: "13:51:30", rawTime: "2026-07-11T13:51:30.217Z", CPU: 18.07 }]);
+
+ expect(data).toHaveLength(60);
+ expect(data[0]).not.toHaveProperty("CPU");
+ expect(data[58]).not.toHaveProperty("CPU");
+ expect(data[59]).toMatchObject({ CPU: 18.07 });
+ });
+
+ test("leaves null gaps for missing seconds instead of stretching existing points", () => {
+ const data = padLiveTimeGrid([
+ { time: "13:51:28", rawTime: "2026-07-11T13:51:28.000Z", CPU: 10 },
+ { time: "13:51:30", rawTime: "2026-07-11T13:51:30.000Z", CPU: 20 },
+ ]);
+
+ expect(data.slice(-3).map((point) => point.CPU)).toEqual([10, undefined, 20]);
+ });
+});
diff --git a/packages/widgets/src/beszel/_shared/chart.tsx b/packages/widgets/src/beszel/_shared/chart.tsx
index 8d8a5e319..7ba5b66fe 100644
--- a/packages/widgets/src/beszel/_shared/chart.tsx
+++ b/packages/widgets/src/beszel/_shared/chart.tsx
@@ -30,6 +30,7 @@ function prepareRecords(records: T[], timePeriod: BeszelTimePeriod) {
}
function padTimeGrid(data: Record[], timePeriod: BeszelTimePeriod) {
+ if (timePeriod === "1m") return padLiveTimeGrid(data);
const days = periodDays[timePeriod];
if (!days) return data;
@@ -50,6 +51,38 @@ function padTimeGrid(data: Record[], timePeriod: BeszelTimePeri
return result.toSorted((a, b) => new Date(a.rawTime as string).getTime() - new Date(b.rawTime as string).getTime());
}
+export function padLiveTimeGrid(data: Record[], pointCount = 60) {
+ if (data.length === 0) return data;
+
+ const end = dayjs(
+ data.reduce((latest, point) => {
+ const timestamp = new Date(point.rawTime as string).getTime();
+ return Number.isFinite(timestamp) ? Math.max(latest, timestamp) : latest;
+ }, 0),
+ ).startOf("second");
+ const pointsBySecond = new Map(
+ data.map(
+ (point) =>
+ [
+ dayjs(point.rawTime as string)
+ .startOf("second")
+ .valueOf(),
+ point,
+ ] as const,
+ ),
+ );
+
+ return Array.from({ length: pointCount }, (_, index) => {
+ const timestamp = end.subtract(pointCount - index - 1, "second");
+ return (
+ pointsBySecond.get(timestamp.valueOf()) ?? {
+ time: timestamp.format(timeFormats["1m"]),
+ rawTime: timestamp.toISOString(),
+ }
+ );
+ });
+}
+
const yAxisBase = { tickMargin: 0, tick: { fontSize: 10 } } as const;
const chartStyle = { minWidth: 0, minHeight: 1 } as const;
const panelStyle = { minWidth: 0, overflow: "hidden" } as const;
@@ -174,6 +207,40 @@ const defaultContainerExtractors: Record = {
network: (c) => (c?.b ? c.b[0] + c.b[1] : (c?.ns ?? 0) + (c?.nr ?? 0)),
};
+export const useDiskChartData = (
+ systemStats: BeszelSystemStatsRecord[] | undefined,
+ efsPaths: string[],
+ rootSeriesName: string,
+ timePeriod: BeszelTimePeriod = "1h",
+) =>
+ useMemo(
+ () => buildDiskChartData(systemStats, efsPaths, rootSeriesName, timePeriod),
+ [systemStats, efsPaths, rootSeriesName, timePeriod],
+ );
+
+export const buildDiskChartData = (
+ systemStats: BeszelSystemStatsRecord[] | undefined,
+ efsPaths: string[],
+ rootSeriesName: string,
+ timePeriod: BeszelTimePeriod = "1h",
+) => {
+ if (!systemStats?.length) return [];
+ const { fmt, ordered } = prepareRecords(systemStats, timePeriod);
+ const mapped = ordered.map((record) => {
+ const point: Record = {
+ time: fmt(record.created),
+ rawTime: record.created,
+ [rootSeriesName]: record.stats.du,
+ };
+ const efs = record.stats.efs ?? {};
+ for (const path of efsPaths) {
+ point[path] = efs[path]?.du ?? 0;
+ }
+ return point;
+ });
+ return padTimeGrid(mapped, timePeriod);
+};
+
export const useDockerChartData = (
containerStats: BeszelContainerStatsRecord[] | undefined,
containerNames: string[],
diff --git a/packages/widgets/src/beszel/_shared/disk-usage.tsx b/packages/widgets/src/beszel/_shared/disk-usage.tsx
new file mode 100644
index 000000000..9aa2a14ad
--- /dev/null
+++ b/packages/widgets/src/beszel/_shared/disk-usage.tsx
@@ -0,0 +1,105 @@
+import { Box, Group, HoverCard, Progress, Stack, Text, UnstyledButton } from "@mantine/core";
+
+import type { BeszelSystemRow } from "./types";
+import { thresholdColor } from "./colors";
+import { formatPercent, getProgressTrackSize } from "./format";
+
+interface DiskUsageProps {
+ system: BeszelSystemRow;
+ fontSize: string;
+ progressSize: "xs" | "sm";
+ valueMiw: number;
+ valueGap?: number;
+}
+
+const mountLabel = (path: string) =>
+ path === "/" ? "ROOT" : (path.split("/").filter(Boolean).at(-1) ?? path).toUpperCase();
+const severityColor = (value: number) => `var(--mantine-color-${thresholdColor(value)}-6)`;
+
+export const DiskUsage = ({ system, fontSize, progressSize, valueMiw, valueGap = 6 }: DiskUsageProps) => {
+ const filesystems = Object.entries(system.extraFilesystems).filter(([path]) => path !== "/");
+ const trackSize = getProgressTrackSize(progressSize);
+ const dotSize = progressSize === "xs" ? 2 : 3;
+ const dotGap = 2;
+
+ return (
+
+
+ {formatPercent(system.disk)}
+
+
+
+ {filesystems.length > 0 ? (
+
+
+
+
+ {filesystems.map(([path, value]) => (
+
+ ))}
+
+
+
+ ) : (
+
+
+
+
+
+ )}
+
+
+
+ {[["/", system.disk] as const, ...filesystems].map(([path, value]) => (
+
+
+ {mountLabel(path)}
+
+
+
+ {formatPercent(value)}
+
+
+
+
+ ))}
+
+
+
+
+ );
+};
diff --git a/packages/widgets/src/beszel/_shared/format.spec.ts b/packages/widgets/src/beszel/_shared/format.spec.ts
new file mode 100644
index 000000000..ec4545063
--- /dev/null
+++ b/packages/widgets/src/beszel/_shared/format.spec.ts
@@ -0,0 +1,21 @@
+import { describe, expect, test } from "vitest";
+
+import { chartAxisFormatters, formatGB, getProgressTrackSize } from "./format";
+
+describe("Beszel storage formatting", () => {
+ test("keeps smaller values in GB", () => {
+ expect(formatGB(455.81)).toBe("455.81 GB");
+ expect(chartAxisFormatters.gb(455.81)).toBe("456G");
+ });
+
+ test("promotes large GiB values to TB", () => {
+ expect(formatGB(3323)).toBe("3.25 TB");
+ expect(formatGB(3936.86)).toBe("3.84 TB");
+ expect(chartAxisFormatters.gb(3323)).toBe("3.2T");
+ });
+
+ test("maps progress sizes consistently", () => {
+ expect(getProgressTrackSize("xs")).toBe(6);
+ expect(getProgressTrackSize("sm")).toBe(9);
+ });
+});
diff --git a/packages/widgets/src/beszel/_shared/format.ts b/packages/widgets/src/beszel/_shared/format.ts
index 8e84c74e4..dc483daa6 100644
--- a/packages/widgets/src/beszel/_shared/format.ts
+++ b/packages/widgets/src/beszel/_shared/format.ts
@@ -29,14 +29,22 @@ export const formatStorageBytes = (bytes: number): string => formatScaled(bytes,
export const formatGB = (value: number): string => {
if (!value || !Number.isFinite(value)) return "0 GB";
+ if (Math.abs(value) >= 1024) return `${(value / 1024).toFixed(2)} TB`;
return `${value.toFixed(2)} GB`;
};
export const formatPercent = (value: number): string => `${value.toFixed(1)}%`;
+export const getProgressTrackSize = (size: "xs" | "sm"): number => (size === "xs" ? 6 : 9);
+
export const chartAxisFormatters = {
percent: formatPercent,
- gb: (value: number) => (!value ? "0" : `${Number(value).toFixed(0)}G`),
+ gb: (value: number) => {
+ const numericValue = Number(value);
+ if (!numericValue) return "0";
+ if (Math.abs(numericValue) >= 1024) return `${(numericValue / 1024).toFixed(1)}T`;
+ return `${numericValue.toFixed(0)}G`;
+ },
mb: (value: number) => (!value ? "0" : `${Number(value).toFixed(0)}M`),
bytes: (value: number) => formatScaledCompact(Number(value), byteUnits, "0"),
rate: (value: number) => formatScaledCompact(Number(value), rateUnits, "0"),
diff --git a/packages/widgets/src/beszel/_shared/stats-view.tsx b/packages/widgets/src/beszel/_shared/stats-view.tsx
new file mode 100644
index 000000000..48706d4ad
--- /dev/null
+++ b/packages/widgets/src/beszel/_shared/stats-view.tsx
@@ -0,0 +1,339 @@
+"use client";
+
+import { useMemo } from "react";
+import { Button, Center, Group, SimpleGrid, Skeleton, Stack, Text } from "@mantine/core";
+import { IconPlugConnectedX, IconServerOff } from "@tabler/icons-react";
+
+import { clientApi } from "@homarr/api/client";
+import type { BeszelContainerStatsRecord, BeszelSystemStatsRecord } from "@homarr/integrations/types";
+import { useScopedI18n } from "@homarr/translation/client";
+
+import { containerColors } from "./colors";
+import type { BeszelTimePeriod } from "./chart";
+import {
+ BeszelChartPanel,
+ CPU_Y_AXIS_DOMAIN,
+ useContainerNames,
+ useDiskChartData,
+ useDockerChartData,
+ useSystemChartData,
+} from "./chart";
+import { chartAxisFormatters, formatByteRate, formatGB, formatPercent, formatStorageBytes } from "./format";
+import { makeTooltipProps } from "./tooltip";
+import { useLiveStats } from "./use-live-stats";
+
+const CHART_HEIGHT = 180;
+const MB = 1024 * 1024;
+const tooltipPercent = makeTooltipProps(formatPercent);
+const tooltipGB = makeTooltipProps(formatGB, true);
+const tooltipRate = makeTooltipProps(formatByteRate, true);
+const tooltipPercentTotal = makeTooltipProps(formatPercent, true);
+const tooltipBytesTotal = makeTooltipProps(formatStorageBytes, true);
+
+const ChartSkeleton = () => (
+
+
+
+
+
+
+
+);
+
+export interface BeszelStatsVisibility {
+ cpu: boolean;
+ memory: boolean;
+ disk: boolean;
+ diskIO: boolean;
+ network: boolean;
+ dockerCpu: boolean;
+ dockerMemory: boolean;
+ dockerNetwork: boolean;
+}
+
+interface BeszelStatsViewProps {
+ integrationIds: string[];
+ systemId: string;
+ timePeriod: BeszelTimePeriod;
+ visibility: BeszelStatsVisibility;
+ columns: 1 | 2;
+ onSwitchToHistorical?: () => void;
+}
+
+const whenVisible = (visible: boolean, data: T | undefined) => (visible ? data : undefined);
+
+export function BeszelStatsView({
+ integrationIds,
+ systemId,
+ timePeriod,
+ visibility,
+ columns,
+ onSwitchToHistorical,
+}: BeszelStatsViewProps) {
+ const t = useScopedI18n("widget.beszelSystemStats");
+ const showDocker = visibility.dockerCpu || visibility.dockerMemory || visibility.dockerNetwork;
+ const isLive = timePeriod === "1m";
+
+ const { data: historicalData, error: historicalError } = clientApi.widget.beszel.getSystemStats.useQuery(
+ { integrationIds, systemId, timePeriod, includeDocker: showDocker },
+ { refetchInterval: isLive ? false : 5_000, enabled: !isLive && systemId !== "" },
+ );
+ const { data: liveData, error: liveError } = useLiveStats(integrationIds, systemId, isLive && systemId !== "");
+
+ const activeStats:
+ | { systemStats: BeszelSystemStatsRecord[]; containerStats: BeszelContainerStatsRecord[]; error?: string }
+ | null
+ | undefined = isLive ? liveData : historicalData;
+
+ const mappers = useMemo(
+ () => ({
+ cpu: (s: { cpu: number }) => ({ [t("chart.cpu.series")]: s.cpu }),
+ memory: (s: { mu: number; mb: number }) => ({
+ [t("chart.memory.series")]: s.mu,
+ [t("chart.memory.cache")]: s.mb ?? 0,
+ }),
+ diskIO: (s: { dr?: number; dw?: number }) => ({
+ [t("chart.diskIO.read")]: (s.dr ?? 0) * MB,
+ [t("chart.diskIO.write")]: (s.dw ?? 0) * MB,
+ }),
+ network: (s: { ns?: number; nr?: number; b?: [number, number] }) => ({
+ [t("chart.network.sent")]: s.b?.[0] ?? s.ns ?? 0,
+ [t("chart.network.recv")]: s.b?.[1] ?? s.nr ?? 0,
+ }),
+ }),
+ [t],
+ );
+
+ const series = useMemo(
+ () => ({
+ cpu: [{ name: t("chart.cpu.series"), color: "teal.6" }],
+ memory: [
+ { name: t("chart.memory.series"), color: "teal.5" },
+ { name: t("chart.memory.cache"), color: "teal.8" },
+ ],
+ diskIO: [
+ { name: t("chart.diskIO.write"), color: "orange.6" },
+ { name: t("chart.diskIO.read"), color: "blue.6" },
+ ],
+ network: [
+ { name: t("chart.network.sent"), color: "blue.6" },
+ { name: t("chart.network.recv"), color: "teal.6" },
+ ],
+ }),
+ [t],
+ );
+
+ const systemStats = activeStats?.systemStats;
+ const containerStats = activeStats?.containerStats;
+ const cpuData = useSystemChartData(whenVisible(visibility.cpu, systemStats), mappers.cpu, timePeriod);
+ const memoryData = useSystemChartData(whenVisible(visibility.memory, systemStats), mappers.memory, timePeriod);
+ const diskIOData = useSystemChartData(whenVisible(visibility.diskIO, systemStats), mappers.diskIO, timePeriod);
+ const networkData = useSystemChartData(whenVisible(visibility.network, systemStats), mappers.network, timePeriod);
+
+ const efsPaths = useMemo(() => {
+ const paths = new Set();
+ for (const record of systemStats ?? []) {
+ for (const path of Object.keys(record.stats.efs ?? {})) paths.add(path);
+ }
+ return [...paths];
+ }, [systemStats]);
+ const rootSeriesName = t("chart.disk.series");
+ const diskData = useDiskChartData(whenVisible(visibility.disk, systemStats), efsPaths, rootSeriesName, timePeriod);
+ const diskSeries = useMemo(
+ () => [
+ { name: rootSeriesName, color: "grape.6" },
+ ...efsPaths.map((path, index) => ({
+ name: path,
+ color: containerColors[(index + 1) % containerColors.length] as string,
+ })),
+ ],
+ [efsPaths, rootSeriesName],
+ );
+
+ const containerNames = useContainerNames(whenVisible(showDocker, containerStats));
+ const containerSeries = useMemo(
+ () =>
+ containerNames.map((name, index) => ({ name, color: containerColors[index % containerColors.length] as string })),
+ [containerNames],
+ );
+ const dockerCpuData = useDockerChartData(
+ whenVisible(visibility.dockerCpu, containerStats),
+ containerNames,
+ "cpu",
+ timePeriod,
+ );
+ const dockerMemoryData = useDockerChartData(
+ whenVisible(visibility.dockerMemory, containerStats),
+ containerNames,
+ "memory",
+ timePeriod,
+ );
+ const dockerNetworkData = useDockerChartData(
+ whenVisible(visibility.dockerNetwork, containerStats),
+ containerNames,
+ "network",
+ timePeriod,
+ );
+
+ if (historicalError) throw historicalError;
+
+ if (isLive && liveError) {
+ return (
+
+
+
+
+ {t("error.liveConnectionFailed")}
+
+ {onSwitchToHistorical && (
+
+ {t("error.switchToHistorical")}
+
+ )}
+
+
+ );
+ }
+
+ if (!activeStats) {
+ const visibleChartCount = Object.values(visibility).filter(Boolean).length;
+ return (
+
+ {Array.from({ length: visibleChartCount }, (_, index) => (
+
+ ))}
+
+ );
+ }
+
+ if ("error" in activeStats && activeStats.error) {
+ return (
+
+
+
+
+ {activeStats.error}
+
+
+
+ );
+ }
+
+ return (
+
+ {visibility.cpu && cpuData.length > 0 && (
+
+ )}
+ {visibility.memory && memoryData.length > 0 && (
+
+ )}
+ {visibility.disk && diskData.length > 0 && (
+
+ )}
+ {visibility.diskIO && diskIOData.length > 0 && (
+
+ )}
+ {visibility.network && networkData.length > 0 && (
+
+ )}
+ {showDocker && containerSeries.length > 0 && (
+ <>
+ {visibility.dockerCpu && dockerCpuData.length > 0 && (
+
+ )}
+ {visibility.dockerMemory && dockerMemoryData.length > 0 && (
+
+ )}
+ {visibility.dockerNetwork && dockerNetworkData.length > 0 && (
+
+ )}
+ >
+ )}
+
+ );
+}
diff --git a/packages/widgets/src/beszel/_shared/system-stats-modal.tsx b/packages/widgets/src/beszel/_shared/system-stats-modal.tsx
index 1071ccc53..fda3146d2 100644
--- a/packages/widgets/src/beszel/_shared/system-stats-modal.tsx
+++ b/packages/widgets/src/beszel/_shared/system-stats-modal.tsx
@@ -1,25 +1,15 @@
"use client";
-import { useMemo, useState } from "react";
-import { SegmentedControl, SimpleGrid, Stack } from "@mantine/core";
+import { useState } from "react";
+import { SegmentedControl, Stack } from "@mantine/core";
-import { clientApi } from "@homarr/api/client";
import { createModal } from "@homarr/modals";
-import { useScopedI18n } from "@homarr/translation/client";
import type { BeszelTimePeriod } from "./chart";
-import { BeszelChartPanel, CPU_Y_AXIS_DOMAIN, useSystemChartData } from "./chart";
-import { chartAxisFormatters, formatByteRate, formatGB, formatPercent } from "./format";
-import { makeTooltipProps } from "./tooltip";
-
-const tooltipPercent = makeTooltipProps(formatPercent);
-const tooltipGB = makeTooltipProps(formatGB, true);
-const tooltipRate = makeTooltipProps(formatByteRate, true);
-
-const CHART_HEIGHT = 180;
-const MB = 1024 * 1024;
+import { BeszelStatsView } from "./stats-view";
const timePeriodOptions: { value: BeszelTimePeriod; label: string }[] = [
+ { value: "1m", label: "Live" },
{ value: "1h", label: "1H" },
{ value: "12h", label: "12H" },
{ value: "24h", label: "24H" },
@@ -27,141 +17,41 @@ const timePeriodOptions: { value: BeszelTimePeriod; label: string }[] = [
{ value: "30d", label: "30D" },
];
+const allCharts = {
+ cpu: true,
+ memory: true,
+ disk: true,
+ diskIO: true,
+ network: true,
+ dockerCpu: true,
+ dockerMemory: true,
+ dockerNetwork: true,
+} as const;
+
interface BeszelSystemStatsModalProps {
integrationId: string;
systemId: string;
}
export const BeszelSystemStatsModal = createModal(({ innerProps }) => {
- const t = useScopedI18n("widget.beszelSystemStats");
const [timePeriod, setTimePeriod] = useState("1h");
- const { data } = clientApi.widget.beszel.getSystemStats.useQuery({
- integrationIds: [innerProps.integrationId],
- systemId: innerProps.systemId,
- timePeriod,
- includeDocker: false,
- });
-
- const mappers = useMemo(
- () => ({
- cpu: (s: { cpu: number }) => ({ [t("chart.cpu.series")]: s.cpu }),
- memory: (s: { mu: number; mb: number }) => ({
- [t("chart.memory.series")]: s.mu,
- [t("chart.memory.cache")]: s.mb ?? 0,
- }),
- disk: (s: { du: number }) => ({ [t("chart.disk.series")]: s.du }),
- diskIO: (s: { dr?: number; dw?: number }) => ({
- [t("chart.diskIO.read")]: (s.dr ?? 0) * MB,
- [t("chart.diskIO.write")]: (s.dw ?? 0) * MB,
- }),
- network: (s: { ns: number; nr: number; b?: [number, number] }) => ({
- [t("chart.network.sent")]: s.b?.[0] ?? s.ns,
- [t("chart.network.recv")]: s.b?.[1] ?? s.nr,
- }),
- }),
- [t],
- );
-
- const series = useMemo(
- () => ({
- cpu: [{ name: t("chart.cpu.series"), color: "teal.6" }],
- memory: [
- { name: t("chart.memory.series"), color: "teal.5" },
- { name: t("chart.memory.cache"), color: "teal.8" },
- ],
- disk: [{ name: t("chart.disk.series"), color: "grape.6" }],
- diskIO: [
- { name: t("chart.diskIO.write"), color: "orange.6" },
- { name: t("chart.diskIO.read"), color: "blue.6" },
- ],
- network: [
- { name: t("chart.network.sent"), color: "blue.6" },
- { name: t("chart.network.recv"), color: "teal.6" },
- ],
- }),
- [t],
- );
-
- const systemStats = data?.systemStats;
- const cpuData = useSystemChartData(systemStats, mappers.cpu, timePeriod);
- const memoryData = useSystemChartData(systemStats, mappers.memory, timePeriod);
- const diskData = useSystemChartData(systemStats, mappers.disk, timePeriod);
- const diskIOData = useSystemChartData(systemStats, mappers.diskIO, timePeriod);
- const networkData = useSystemChartData(systemStats, mappers.network, timePeriod);
-
return (
setTimePeriod(v as BeszelTimePeriod)}
+ onChange={(value) => setTimePeriod(value as BeszelTimePeriod)}
data={timePeriodOptions}
/>
-
- {cpuData.length > 0 && (
-
- )}
- {memoryData.length > 0 && (
-
- )}
- {diskData.length > 0 && (
-
- )}
- {diskIOData.length > 0 && (
-
- )}
- {networkData.length > 0 && (
-
- )}
-
+ setTimePeriod("1h")}
+ />
);
}).withOptions({
diff --git a/packages/widgets/src/beszel/_shared/use-live-stats.ts b/packages/widgets/src/beszel/_shared/use-live-stats.ts
index b07bbbd2c..f2ab5df34 100644
--- a/packages/widgets/src/beszel/_shared/use-live-stats.ts
+++ b/packages/widgets/src/beszel/_shared/use-live-stats.ts
@@ -1,15 +1,65 @@
"use client";
+import { useCallback, useEffect, useRef, useState } from "react";
+import { skipToken } from "@tanstack/react-query";
+
import { clientApi } from "@homarr/api/client";
+import type { BeszelContainerStatsRecord, BeszelSystemStatsRecord } from "@homarr/integrations/types";
+
+// Beszel emits roughly one record per second. Keep a sliding one-minute window
+// without synthesizing points for missed updates.
+const MAX_BUFFER = 60;
export const useLiveStats = (integrationIds: string[], systemId: string, enabled: boolean) => {
- const { data, error } = clientApi.widget.beszel.getSystemStats.useQuery(
- { integrationIds, systemId, timePeriod: "1m" as const, includeDocker: true },
- { enabled: enabled && systemId !== "", refetchInterval: 5_000 },
+ const [systemStats, setSystemStats] = useState([]);
+ const [containerStats, setContainerStats] = useState([]);
+ const [error, setError] = useState(null);
+
+ // Append to buffer, trimming to MAX_BUFFER
+ const appendSystemStats = useCallback((record: BeszelSystemStatsRecord) => {
+ setSystemStats((prev) => {
+ const next = [...prev, record];
+ return next.length > MAX_BUFFER ? next.slice(-MAX_BUFFER) : next;
+ });
+ }, []);
+
+ const appendContainerStats = useCallback((record: BeszelContainerStatsRecord) => {
+ setContainerStats((prev) => {
+ const next = [...prev, record];
+ return next.length > MAX_BUFFER ? next.slice(-MAX_BUFFER) : next;
+ });
+ }, []);
+
+ clientApi.widget.beszel.subscribeSystemStats.useSubscription(
+ enabled && systemId !== "" ? { integrationIds, systemId } : skipToken,
+ {
+ onData(event) {
+ setError(null);
+ if (event.type === "system_stats") {
+ appendSystemStats(event.record);
+ } else {
+ appendContainerStats(event.record);
+ }
+ },
+ onError(err) {
+ setError(err instanceof Error ? err : new Error(String(err)));
+ },
+ },
);
- return {
- data: data ? { systemStats: data.systemStats, containerStats: data.containerStats } : null,
- error: error ?? (data?.error ? new Error(data.error) : null),
- };
+ // Reset buffers when system changes or integration changes
+ const prevKeyRef = useRef("");
+ const currentKey = `${integrationIds.join(",")}:${systemId}:${enabled}`;
+ useEffect(() => {
+ if (prevKeyRef.current !== currentKey) {
+ prevKeyRef.current = currentKey;
+ setSystemStats([]);
+ setContainerStats([]);
+ setError(null);
+ }
+ }, [currentKey]);
+
+ const data = systemStats.length > 0 || containerStats.length > 0 ? { systemStats, containerStats } : null;
+
+ return { data, error };
};
diff --git a/packages/widgets/src/definition.ts b/packages/widgets/src/definition.ts
index a6e769d5d..aaf60269f 100644
--- a/packages/widgets/src/definition.ts
+++ b/packages/widgets/src/definition.ts
@@ -1,6 +1,6 @@
import type React from "react";
import type { LoaderComponent } from "next/dynamic";
-import type { QueryClient } from "@tanstack/react-query";
+import type { QueryClient, QueryKey } from "@tanstack/react-query";
import type { DefaultErrorData } from "@trpc/server/unstable-core-do-not-import";
import type { IntegrationKind, WidgetKind } from "@homarr/definitions";
@@ -69,6 +69,7 @@ export const createWidgetDefinition =
- {humanFileSize(bytesUsage)}
+ {formatBytes(bytesUsage)}
);
},
@@ -184,7 +184,11 @@ export default function DockerWidget({ options, width, isEditMode }: WidgetCompo
const t = useScopedI18n("docker");
const isTiny = width <= 256;
- const { data } = clientApi.docker.getContainers.useQuery(undefined, {
+ const {
+ data,
+ refetch,
+ isFetching,
+ } = clientApi.docker.getContainers.useQuery(undefined, {
refetchInterval: 30_000,
});
const containers = data?.containers ?? [];
@@ -297,12 +301,23 @@ export default function DockerWidget({ options, width, isEditMode }: WidgetCompo
- {t("table.totalMemory", { memory: humanFileSize(totals.memory) })}
+ {t("table.totalMemory", { memory: formatBytes(totals.memory) })}
-
- {t("table.updated", { when: relativeTime })}
-
+
+ void refetch()}
+ aria-label={t("table.refresh.lastUpdated", { when: relativeTime })}
+ >
+
+
+
)}
diff --git a/packages/widgets/src/docker/index.ts b/packages/widgets/src/docker/index.ts
index 76cdb97f3..4a988c779 100644
--- a/packages/widgets/src/docker/index.ts
+++ b/packages/widgets/src/docker/index.ts
@@ -25,6 +25,7 @@ const columnTranslationKeyMap = {
export const { definition, componentLoader } = createWidgetDefinition("dockerContainers", {
icon: IconBrandDocker,
+ queryKey: [["docker", "getContainers"]],
createOptions() {
return optionsBuilder.from((factory) => ({
columns: factory.multiSelect({
diff --git a/packages/widgets/src/downloads/component.tsx b/packages/widgets/src/downloads/component.tsx
index 0edfb9ba5..ff9b71664 100644
--- a/packages/widgets/src/downloads/component.tsx
+++ b/packages/widgets/src/downloads/component.tsx
@@ -43,7 +43,7 @@ import { MantineReactTable, useMantineReactTable } from "mantine-react-table";
import { clientApi } from "@homarr/api/client";
import { useIntegrationsWithInteractAccess } from "@homarr/auth/client";
-import { humanFileSize, useIntegrationConnected } from "@homarr/common";
+import { formatByteRate, formatBytes, useIntegrationConnected } from "@homarr/common";
import { getIconUrl, getIntegrationKindsByCategory } from "@homarr/definitions";
import type { ExtendedClientStatus, ExtendedDownloadClientItem } from "@homarr/integrations";
import { useScopedI18n } from "@homarr/translation/client";
@@ -386,7 +386,7 @@ export default function DownloadClientsWidget({
sortUndefined: "last",
Cell: ({ cell }) => {
const downSpeed = cell.getValue();
- return downSpeed ? {humanFileSize(downSpeed, "/s")} : null;
+ return downSpeed ? {formatByteRate(downSpeed)} : null;
},
},
{
@@ -466,7 +466,7 @@ export default function DownloadClientsWidget({
...columnsDefBase({ key: "received", showHeader: true }),
Cell: ({ cell }) => {
const received = cell.getValue();
- return {humanFileSize(received)} ;
+ return {formatBytes(received)} ;
},
},
{
@@ -474,14 +474,14 @@ export default function DownloadClientsWidget({
sortUndefined: "last",
Cell: ({ cell }) => {
const sent = cell.getValue();
- return sent && {humanFileSize(sent)} ;
+ return sent && {formatBytes(sent)} ;
},
},
{
...columnsDefBase({ key: "size", showHeader: true }),
Cell: ({ cell }) => {
const size = cell.getValue();
- return {humanFileSize(size)} ;
+ return {formatBytes(size)} ;
},
},
{
@@ -521,7 +521,7 @@ export default function DownloadClientsWidget({
sortUndefined: "last",
Cell: ({ cell }) => {
const upSpeed = cell.getValue();
- return upSpeed && {humanFileSize(upSpeed, "/s")} ;
+ return upSpeed && {formatByteRate(upSpeed)} ;
},
},
],
@@ -669,21 +669,21 @@ const ItemInfoModal = ({ items, currentIndex, opened, onClose }: ItemInfoModalPr
{item.type !== "miscellaneous" && (
)}
{item.type !== "miscellaneous" && (
-
+
)}
-
-
+
+
interact);
- const totalSpeed = humanFileSize(
- clients.reduce((count, { status }) => count + (status?.rates.down ?? 0), 0),
- "/s",
- );
+ const totalSpeed = formatByteRate(clients.reduce((count, { status }) => count + (status?.rates.down ?? 0), 0));
const utils = clientApi.useUtils();
const invalidateDownloads = { onSettled: () => void utils.widget.downloads.getJobsAndStatuses.invalidate() };
@@ -849,21 +846,21 @@ const ClientsControl = ({ clients, filters, setFilters, availableStatuses }: Cli
{client.status.rates.up !== undefined ? (
- {`↑ ${humanFileSize(client.status.rates.up, "/s")}`}
+ {`↑ ${formatByteRate(client.status.rates.up)}`}
{"-"}
- {humanFileSize(client.status.totalUp ?? 0)}
+ {formatBytes(client.status.totalUp ?? 0)}
) : undefined}
- {`↓ ${humanFileSize(client.status.rates.down, "/s")}`}
+ {`↓ ${formatByteRate(client.status.rates.down)}`}
{"-"}
- {humanFileSize(Math.floor(client.status.totalDown ?? 0))}
+ {formatBytes(Math.floor(client.status.totalDown ?? 0))}
diff --git a/packages/widgets/src/filter-storage-volumes.spec.ts b/packages/widgets/src/filter-storage-volumes.spec.ts
new file mode 100644
index 000000000..51d84169a
--- /dev/null
+++ b/packages/widgets/src/filter-storage-volumes.spec.ts
@@ -0,0 +1,146 @@
+import { describe, expect, test } from "vitest";
+
+import {
+ filterStorageVolumes,
+ normalizeStorageDeviceName,
+ toScopedStorageVolumeValue,
+} from "./filter-storage-volumes";
+import { matchFileSystemAndSmart } from "./health-monitoring/system-health";
+
+describe("normalizeStorageDeviceName", () => {
+ test("strips partition suffixes from block device paths", () => {
+ expect(normalizeStorageDeviceName("/dev/sda1")).toBe("/dev/sda");
+ expect(normalizeStorageDeviceName("/dev/sda")).toBe("/dev/sda");
+ });
+
+ test("preserves Synology-style volume names", () => {
+ expect(normalizeStorageDeviceName("volume_1")).toBe("volume_1");
+ expect(normalizeStorageDeviceName("volume_2")).toBe("volume_2");
+ });
+
+ test("strips NVMe partition suffixes without collapsing the namespace id", () => {
+ expect(normalizeStorageDeviceName("/dev/nvme0n1")).toBe("/dev/nvme0n1");
+ expect(normalizeStorageDeviceName("/dev/nvme0n1p2")).toBe("/dev/nvme0n1");
+ expect(normalizeStorageDeviceName("/dev/nvme0n2p1")).toBe("/dev/nvme0n2");
+ });
+
+ test("does not collapse unrelated md devices", () => {
+ expect(normalizeStorageDeviceName("/dev/md0")).toBe("/dev/md0");
+ expect(normalizeStorageDeviceName("/dev/md1")).toBe("/dev/md1");
+ });
+});
+
+describe("toScopedStorageVolumeValue", () => {
+ test("scopes unscoped volume names to the query integration", () => {
+ expect(toScopedStorageVolumeValue("nas-a", "volume_1")).toBe("nas-a:volume_1");
+ });
+
+ test("re-scopes already-prefixed values using the query integration", () => {
+ expect(toScopedStorageVolumeValue("nas-b", "nas-a:volume_1")).toBe("nas-b:volume_1");
+ });
+});
+
+describe("filterStorageVolumes", () => {
+ const integrationId = "nas-1";
+
+ test("matches SMART entries using normalized partition identifiers", () => {
+ const entries = [
+ { deviceName: "/dev/sda1", used: "1", available: "2", percentage: 50 },
+ { deviceName: "/dev/sdb1", used: "1", available: "2", percentage: 50 },
+ ];
+ const smartEntries = [
+ { deviceName: "/dev/sda", temperature: 35, overallStatus: "GOOD" },
+ { deviceName: "/dev/sdb", temperature: 40, overallStatus: "GOOD" },
+ ];
+
+ const visibleVolumes = [`${integrationId}:/dev/sda1`];
+
+ expect(filterStorageVolumes(entries, visibleVolumes, integrationId)).toHaveLength(1);
+ expect(filterStorageVolumes(smartEntries, visibleVolumes, integrationId)).toHaveLength(1);
+ });
+
+ test("keeps exact Synology volume matches", () => {
+ const entries = [{ deviceName: "volume_1" }, { deviceName: "volume_2" }];
+ const visibleVolumes = [`${integrationId}:volume_1`];
+
+ expect(filterStorageVolumes(entries, visibleVolumes, integrationId)).toEqual([{ deviceName: "volume_1" }]);
+ });
+
+ test("does not apply another integration's scoped selection", () => {
+ const entries = [{ deviceName: "volume_1" }, { deviceName: "volume_2" }];
+ const visibleVolumes = ["nas-b:volume_1"];
+
+ expect(filterStorageVolumes(entries, visibleVolumes, integrationId)).toEqual([]);
+ });
+
+ test("does not treat different md devices as the same volume", () => {
+ const entries = [{ deviceName: "/dev/md0" }, { deviceName: "/dev/md1" }];
+ const visibleVolumes = [`${integrationId}:/dev/md0`];
+
+ expect(filterStorageVolumes(entries, visibleVolumes, integrationId)).toEqual([{ deviceName: "/dev/md0" }]);
+ });
+});
+
+describe("matchFileSystemAndSmart", () => {
+ test("joins partitioned filesystem entries with base SMART device names", () => {
+ const result = matchFileSystemAndSmart(
+ [{ deviceName: "/dev/sda1", used: "100", available: "900", percentage: 10 }],
+ [{ deviceName: "/dev/sda", temperature: 42, overallStatus: "GOOD" }],
+ );
+
+ expect(result).toEqual([
+ {
+ deviceName: "/dev/sda",
+ used: "100",
+ available: "900",
+ percentage: 10,
+ temperature: 42,
+ overallStatus: "GOOD",
+ },
+ ]);
+ });
+
+ test("joins Synology volume names without stripping volume suffixes", () => {
+ const result = matchFileSystemAndSmart(
+ [{ deviceName: "volume_1", used: "100", available: "900", percentage: 10 }],
+ [{ deviceName: "volume_1", temperature: 39, overallStatus: "normal" }],
+ );
+
+ expect(result[0]).toMatchObject({
+ deviceName: "volume_1",
+ temperature: 39,
+ overallStatus: "normal",
+ });
+ });
+
+ test("joins NVMe partitions with their base device SMART data", () => {
+ const result = matchFileSystemAndSmart(
+ [{ deviceName: "/dev/nvme0n1p2", used: "100", available: "900", percentage: 10 }],
+ [{ deviceName: "/dev/nvme0n1", temperature: 41, overallStatus: "GOOD" }],
+ );
+
+ expect(result).toEqual([
+ {
+ deviceName: "/dev/nvme0n1",
+ used: "100",
+ available: "900",
+ percentage: 10,
+ temperature: 41,
+ overallStatus: "GOOD",
+ },
+ ]);
+ });
+
+ test("does not join SMART data from a different md device", () => {
+ const result = matchFileSystemAndSmart(
+ [{ deviceName: "/dev/md0", used: "100", available: "900", percentage: 10 }],
+ [{ deviceName: "/dev/md1", temperature: 41, overallStatus: "GOOD" }],
+ );
+
+ expect(result[0]).toMatchObject({
+ deviceName: "/dev/md0",
+ temperature: null,
+ overallStatus: "",
+ });
+ });
+});
diff --git a/packages/widgets/src/filter-storage-volumes.ts b/packages/widgets/src/filter-storage-volumes.ts
new file mode 100644
index 000000000..5e88584be
--- /dev/null
+++ b/packages/widgets/src/filter-storage-volumes.ts
@@ -0,0 +1,67 @@
+interface StorageVolumeEntry {
+ deviceName: string;
+}
+
+const partitionSuffixPatterns: ReadonlyArray<{ pattern: RegExp; baseGroupIndex: number }> = [
+ // SCSI/SATA/VirtIO: /dev/sda1 -> /dev/sda
+ { pattern: /^(\/dev\/(?:sd|vd|hd|xvd)[a-z]+)[0-9]+$/, baseGroupIndex: 1 },
+ // NVMe: /dev/nvme0n1p2 -> /dev/nvme0n1
+ { pattern: /^(\/dev\/nvme[0-9]+n[0-9]+)p[0-9]+$/, baseGroupIndex: 1 },
+ // eMMC: /dev/mmcblk0p1 -> /dev/mmcblk0
+ { pattern: /^(\/dev\/mmcblk[0-9]+)p[0-9]+$/, baseGroupIndex: 1 },
+];
+
+export const normalizeStorageDeviceName = (deviceName: string): string => {
+ for (const { pattern, baseGroupIndex } of partitionSuffixPatterns) {
+ const match = deviceName.match(pattern);
+ if (match) {
+ return match[baseGroupIndex] ?? deviceName;
+ }
+ }
+
+ return deviceName;
+};
+
+export const toScopedStorageVolumeValue = (integrationId: string, value: string): string => {
+ const separatorIndex = value.indexOf(":");
+ const volumeName = separatorIndex === -1 ? value : value.slice(separatorIndex + 1);
+ return `${integrationId}:${volumeName}`;
+};
+
+const storageDeviceNamesMatch = (leftDeviceName: string, rightDeviceName: string): boolean => {
+ return (
+ leftDeviceName === rightDeviceName ||
+ normalizeStorageDeviceName(leftDeviceName) === normalizeStorageDeviceName(rightDeviceName)
+ );
+};
+
+const matchesVisibleStorageVolume = (
+ visibleVolume: string,
+ integrationId: string,
+ deviceName: string,
+): boolean => {
+ const separatorIndex = visibleVolume.indexOf(":");
+ if (separatorIndex === -1) {
+ return storageDeviceNamesMatch(visibleVolume, deviceName);
+ }
+
+ const visibleIntegrationId = visibleVolume.slice(0, separatorIndex);
+ const visibleVolumeName = visibleVolume.slice(separatorIndex + 1);
+ return visibleIntegrationId === integrationId && storageDeviceNamesMatch(visibleVolumeName, deviceName);
+};
+
+export const filterStorageVolumes = (
+ entries: TEntry[],
+ visibleStorageVolumes: string[] | undefined,
+ integrationId: string,
+): TEntry[] => {
+ if (!visibleStorageVolumes || visibleStorageVolumes.length === 0) {
+ return entries;
+ }
+
+ return entries.filter((entry) =>
+ visibleStorageVolumes.some((visibleVolume) =>
+ matchesVisibleStorageVolume(visibleVolume, integrationId, entry.deviceName),
+ ),
+ );
+};
diff --git a/packages/widgets/src/health-monitoring/cluster/resource-popover.tsx b/packages/widgets/src/health-monitoring/cluster/resource-popover.tsx
index eae3e3b30..606596342 100644
--- a/packages/widgets/src/health-monitoring/cluster/resource-popover.tsx
+++ b/packages/widgets/src/health-monitoring/cluster/resource-popover.tsx
@@ -16,7 +16,7 @@ import {
import dayjs from "dayjs";
import duration from "dayjs/plugin/duration";
-import { capitalize, humanFileSize } from "@homarr/common";
+import { capitalize, formatBytes, formatBytesPair } from "@homarr/common";
import type { ComputeResource, Resource, StorageResource } from "@homarr/integrations/types";
import { useScopedI18n } from "@homarr/translation/client";
@@ -93,16 +93,18 @@ const RightSection = ({ label, value }: RightSectionProps) => {
const ComputeResourceDetails = ({ item }: { item: ComputeResource }) => {
const t = useScopedI18n("widget.healthMonitoring.cluster.popover.detail");
+ const memory = formatBytesPair(item.memory.used, item.memory.total);
+ const storage = formatBytesPair(item.storage.used, item.storage.total);
return (
}>
{t("cpu")} - {item.cpu.cores}
}>
- {t("memory")} - {humanFileSize(item.memory.used)} / {humanFileSize(item.memory.total)}
+ {t("memory")} - {memory.used} / {memory.available}
}>
- {t("storage")} - {humanFileSize(item.storage.used)} / {humanFileSize(item.storage.total)}
+ {t("storage")} - {storage.used} / {storage.available}
}>
{t("uptime")} - {dayjs(dayjs().add(-item.uptime, "seconds")).fromNow(true)}
@@ -121,6 +123,7 @@ const ComputeResourceDetails = ({ item }: { item: ComputeResource }) => {
const StorageResourceDetails = ({ item }: { item: StorageResource }) => {
const t = useScopedI18n("widget.healthMonitoring.cluster.popover.detail");
const storagePercent = item.total ? (item.used / item.total) * 100 : 0;
+ const storage = formatBytesPair(item.used, item.total);
return (
@@ -133,7 +136,7 @@ const StorageResourceDetails = ({ item }: { item: StorageResource }) => {
/>
- {t("storage")} - {humanFileSize(item.used)} / {humanFileSize(item.total)}
+ {t("storage")} - {storage.used} / {storage.available}
@@ -152,11 +155,11 @@ const DiskStats = ({ item }: { item: ComputeResource }) => {
}>
- {humanFileSize(item.storage.write)}
+ {formatBytes(item.storage.write)}
- {humanFileSize(item.storage.read)}
+ {formatBytes(item.storage.read)}
@@ -172,11 +175,11 @@ const NetStats = ({ item }: { item: ComputeResource }) => {
}>
- {humanFileSize(item.network.in)}
+ {formatBytes(item.network.in)}
- {humanFileSize(item.network.out)}
+ {formatBytes(item.network.out)}
diff --git a/packages/widgets/src/health-monitoring/index.ts b/packages/widgets/src/health-monitoring/index.ts
index dd176a189..fe31514de 100644
--- a/packages/widgets/src/health-monitoring/index.ts
+++ b/packages/widgets/src/health-monitoring/index.ts
@@ -4,6 +4,7 @@ import { getIntegrationKindsByCategory } from "@homarr/definitions";
import { createWidgetDefinition } from "../definition";
import { optionsBuilder } from "../options";
+import { createStorageVolumeMultiSelectOptions } from "../storage-volume-options";
export const { definition, componentLoader } = createWidgetDefinition("healthMonitoring", {
icon: IconHeartRateMonitor,
@@ -28,6 +29,7 @@ export const { definition, componentLoader } = createWidgetDefinition("healthMon
fileSystem: factory.switch({
defaultValue: true,
}),
+ visibleStorageVolumes: factory.integrationMultiSelect(createStorageVolumeMultiSelectOptions()),
visibleClusterSections: factory.multiSelect({
options: [
{
@@ -77,6 +79,11 @@ export const { definition, componentLoader } = createWidgetDefinition("healthMon
return integrationKinds.every((kind) => kind === "proxmox") || integrationKinds.length === 0;
},
},
+ visibleStorageVolumes: {
+ shouldHide(_, integrationKinds) {
+ return integrationKinds.length === 0 || !integrationKinds.every((kind) => kind === "synology");
+ },
+ },
showUptime: {
shouldHide(_, integrationKinds) {
// Uptime is only shown on cluster health tab
@@ -104,7 +111,7 @@ export const { definition, componentLoader } = createWidgetDefinition("healthMon
},
);
},
- supportedIntegrations: getIntegrationKindsByCategory("healthMonitoring"),
+ supportedIntegrations: getIntegrationKindsByCategory("healthMonitoring").filter((kind) => kind !== "patchmon"),
errors: {
INTERNAL_SERVER_ERROR: {
icon: IconServerOff,
diff --git a/packages/widgets/src/health-monitoring/system-health.tsx b/packages/widgets/src/health-monitoring/system-health.tsx
index 8b77b1d2f..3614a570c 100644
--- a/packages/widgets/src/health-monitoring/system-health.tsx
+++ b/packages/widgets/src/health-monitoring/system-health.tsx
@@ -32,12 +32,13 @@ import duration from "dayjs/plugin/duration";
import { clientApi } from "@homarr/api/client";
import { useRequiredBoard } from "@homarr/boards/context";
-import { humanFileSize } from "@homarr/common";
+import { formatBytes } from "@homarr/common";
import type { TranslationFunction } from "@homarr/translation";
import { useI18n } from "@homarr/translation/client";
-import type { WidgetComponentProps } from "../definition";
+import { filterStorageVolumes, normalizeStorageDeviceName } from "../filter-storage-volumes";
import { WidgetEmptyState } from "../common/empty-state";
+import type { WidgetComponentProps } from "../definition";
import { CpuRing } from "./rings/cpu-ring";
import { CpuTempRing } from "./rings/cpu-temp-ring";
import { GpuRing } from "./rings/gpu-ring";
@@ -65,7 +66,13 @@ export const SystemHealthMonitoring = ({
return (
{healthData.map(({ integrationId, integrationName, healthInfo }) => {
- const disksData = matchFileSystemAndSmart(healthInfo.fileSystem, healthInfo.smart);
+ const filteredFileSystem = filterStorageVolumes(
+ healthInfo.fileSystem,
+ options.visibleStorageVolumes,
+ integrationId,
+ );
+ const filteredSmart = filterStorageVolumes(healthInfo.smart, options.visibleStorageVolumes, integrationId);
+ const disksData = matchFileSystemAndSmart(filteredFileSystem, filteredSmart);
const memoryUsage = formatMemoryUsage(healthInfo.memAvailableInBytes, healthInfo.memUsedInBytes);
return (
{
// them (e.g. Unraid, dashdot). Format the former and pass the latter through untouched.
const formatFileSize = (value: string) => {
const bytes = Number(value);
- return Number.isFinite(bytes) ? humanFileSize(Math.round(bytes)) : value;
+ return Number.isFinite(bytes) ? formatBytes(Math.round(bytes)) : value;
};
interface FileSystem {
@@ -289,8 +296,12 @@ interface SmartData {
export const matchFileSystemAndSmart = (fileSystems: FileSystem[], smartData: SmartData[]) => {
return fileSystems
.map((fileSystem) => {
- const baseDeviceName = fileSystem.deviceName.replace(/[0-9]+$/, "");
- const smartDisk = smartData.find((smart) => smart.deviceName === baseDeviceName);
+ const normalizedFileSystemName = normalizeStorageDeviceName(fileSystem.deviceName);
+ const smartDisk = smartData.find(
+ (smart) =>
+ smart.deviceName === fileSystem.deviceName ||
+ normalizeStorageDeviceName(smart.deviceName) === normalizedFileSystemName,
+ );
return {
deviceName: smartDisk?.deviceName ?? fileSystem.deviceName,
diff --git a/packages/widgets/src/immich/server-stats/component.tsx b/packages/widgets/src/immich/server-stats/component.tsx
index 919b0caf0..3b82499f7 100644
--- a/packages/widgets/src/immich/server-stats/component.tsx
+++ b/packages/widgets/src/immich/server-stats/component.tsx
@@ -5,7 +5,7 @@ import { Group, Stack, Text } from "@mantine/core";
import { IconDatabase, IconPhoto, IconUsers, IconVideo } from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client";
-import { humanFileSize } from "@homarr/common";
+import { formatBytes } from "@homarr/common";
import { useI18n } from "@homarr/translation/client";
import { WidgetEmptyState } from "../../common/empty-state";
@@ -46,7 +46,7 @@ export default function ImmichServerStatsWidget({
}
label={t("widget.immich-serverStats.storage")}
- value={humanFileSize(stats.totalLibraryUsageInBytes)}
+ value={formatBytes(stats.totalLibraryUsageInBytes)}
/>
)}
diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx
index ca8a5f62f..061fc4b2d 100644
--- a/packages/widgets/src/index.tsx
+++ b/packages/widgets/src/index.tsx
@@ -12,6 +12,7 @@ import * as audioStats from "./audio-stats";
import * as app from "./app";
import * as archiveTeamWarrior from "./archive-team-warrior";
import * as bookmarks from "./bookmarks";
+import * as bazarr from "./bazarr";
import * as calendar from "./calendar";
import * as clock from "./clock";
import * as coolify from "./coolify";
@@ -32,11 +33,13 @@ import * as mediaRequestsList from "./media-requests/list";
import * as mediaRequestsStats from "./media-requests/stats";
import * as mediaServer from "./media-server";
import * as mediaTranscoding from "./media-transcoding";
+import * as mediaMissing from "./media-missing";
import * as minecraftServerStatus from "./minecraft/server-status";
import * as networkControllerStatus from "./network-controller/network-status";
import * as networkControllerSummary from "./network-controller/summary";
import * as notebook from "./notebook";
import * as paperlessNgx from "./paperless-ngx";
+import * as patchmon from "./patchmon";
import * as notifications from "./notifications";
import type { WidgetOptionDefinition } from "./options";
import * as releases from "./releases";
@@ -49,6 +52,7 @@ import * as stockPrice from "./stocks";
import * as systemDisks from "./system-disks";
import * as systemResources from "./system-resources";
import * as timetable from "./timetable";
+import * as traefik from "./traefik";
import * as tracearr from "./tracearr";
import * as umami from "./umami";
import * as ups from "./ups";
@@ -89,10 +93,12 @@ export const widgetImports = {
downloads,
"mediaRequests-requestList": mediaRequestsList,
"mediaRequests-requestStats": mediaRequestsStats,
+ mediaMissing,
networkControllerSummary,
networkControllerStatus,
rssFeed,
bookmarks,
+ bazarr,
indexerManager,
healthMonitoring,
mediaTranscoding,
@@ -109,6 +115,7 @@ export const widgetImports = {
"immich-serverStats": immichServerStats,
"immich-albumCarousel": immichAlbumCarousel,
paperlessNgx,
+ patchmon,
tracearr,
speedtestTracker,
uptimeKuma,
@@ -120,6 +127,7 @@ export const widgetImports = {
beszelSystemGrid,
beszelAlerts,
beszelSystemStats,
+ traefik,
customApi,
} satisfies WidgetImportRecord;
diff --git a/packages/widgets/src/media-missing/component.module.css b/packages/widgets/src/media-missing/component.module.css
new file mode 100644
index 000000000..5b1c9f568
--- /dev/null
+++ b/packages/widgets/src/media-missing/component.module.css
@@ -0,0 +1,49 @@
+.card {
+ position: relative;
+ overflow: hidden;
+ display: flex;
+ text-decoration: none;
+ color: inherit;
+ border: 1px solid var(--border-color);
+ transition:
+ border-color 120ms ease,
+ transform 120ms ease,
+ box-shadow 120ms ease;
+
+ @mixin dark {
+ --border-color: var(--mantine-color-dark-4);
+ }
+ @mixin light {
+ --border-color: var(--mantine-color-gray-3);
+ }
+
+ &:hover {
+ border-color: var(--mantine-primary-color-filled);
+ transform: translateY(-1px);
+ box-shadow: var(--mantine-shadow-sm);
+ }
+}
+
+.backdrop {
+ position: absolute;
+ inset: 0;
+ background-size: cover;
+ background-position: center;
+ filter: blur(20px) saturate(1.2);
+ transform: scale(1.3);
+ opacity: 0.16;
+ pointer-events: none;
+}
+
+.content {
+ position: relative;
+ z-index: 1;
+ flex: 1;
+ min-width: 0;
+}
+
+.poster {
+ flex-shrink: 0;
+ object-fit: cover;
+ box-shadow: var(--mantine-shadow-sm);
+}
diff --git a/packages/widgets/src/media-missing/component.tsx b/packages/widgets/src/media-missing/component.tsx
new file mode 100644
index 000000000..69c1edf21
--- /dev/null
+++ b/packages/widgets/src/media-missing/component.tsx
@@ -0,0 +1,217 @@
+"use client";
+
+import type { ReactNode } from "react";
+import { Badge, Box, Center, Group, Image, Paper, RingProgress, ScrollArea, SimpleGrid, Stack, Tabs, Text, ThemeIcon } from "@mantine/core";
+import { IconDownload, IconMovie, IconQuestionMark, IconVideo } from "@tabler/icons-react";
+
+import { clientApi } from "@homarr/api/client";
+import type { MissingMediaItem, QueuedMediaItem } from "@homarr/integrations/types";
+import { useScopedI18n } from "@homarr/translation/client";
+
+import { WidgetEmptyState } from "../common/empty-state";
+import type { WidgetComponentProps } from "../definition";
+import { NoIntegrationDataError } from "../errors/no-data-integration";
+import classes from "./component.module.css";
+
+export default function MediaMissingWidget({ integrationIds, options, width, height }: WidgetComponentProps<"mediaMissing">) {
+ const t = useScopedI18n("widget.mediaMissing");
+ const pageSize = Number(options.pageSize);
+ const { data } = clientApi.widget.mediaOrganizer.getData.useQuery(
+ { integrationIds, pageSize },
+ { staleTime: 60 * 1000, refetchOnWindowFocus: false, refetchOnReconnect: false },
+ );
+
+ if (!data) return ;
+ if (data.length === 0) throw new NoIntegrationDataError();
+ if (!options.showMissing && !options.showQueued)
+ return (
+
+
+ {t("empty.noTabsEnabled")}
+
+
+ );
+
+ const missing = data.flatMap((entry) =>
+ entry.missing.map((item) => ({ item, integrationId: entry.integrationId })),
+ );
+ const queued = data.flatMap((entry) =>
+ entry.queued.map((item) => ({ item, integrationId: entry.integrationId })),
+ );
+ const missingCount = data.reduce((sum, entry) => sum + entry.missingCount, 0);
+ const queuedCount = data.reduce((sum, entry) => sum + entry.queuedCount, 0);
+
+ const isThin = width > 0 && width < 160;
+ const isShort = height > 0 && height < 180;
+ const targetCardWidth = isShort ? 130 : 200;
+ const columns = width > 0 ? Math.max(1, Math.min(Math.floor(width / targetCardWidth), 4)) : 1;
+ const density: Density = isThin ? "thin" : width > 0 && width / columns < 180 ? "compact" : "comfortable";
+
+ const tabLabel = (label: string, shown: number, total: number) =>
+ isThin ? total : `${label} (${shown}/${total})`;
+
+ const renderPanel = (entries: { item: MissingMediaItem | QueuedMediaItem; integrationId: string }[], emptyLabel: string) => (
+
+
+ {entries.length === 0 ? (
+
+ {emptyLabel}
+
+ ) : (
+
+ {entries.map(({ item, integrationId }) => (
+
+ ))}
+
+ )}
+
+
+ );
+
+ return (
+
+
+ {options.showMissing && (
+ }>
+ {tabLabel(t("tab.missing"), missing.length, missingCount)}
+
+ )}
+ {options.showQueued && (
+ }>
+ {tabLabel(t("tab.queued"), queued.length, queuedCount)}
+
+ )}
+
+
+ {options.showMissing && (
+
+ {renderPanel(missing, t("empty.missing"))}
+
+ )}
+ {options.showQueued && (
+
+ {renderPanel(queued, t("empty.queued"))}
+
+ )}
+
+ );
+}
+
+type Density = "thin" | "compact" | "comfortable";
+
+const CARD_HEIGHT: Record = { thin: 52, compact: 56, comfortable: 68 };
+
+const posterSizes: Record = { thin: 34, compact: 40, comfortable: 52 };
+
+const Poster = ({ src, type, density }: { src?: string | null; type: "movie" | "episode"; density: Density }) => {
+ const size = posterSizes[density];
+ const w = Math.round(size * 0.68);
+
+ if (src) {
+ return ;
+ }
+
+ return (
+
+ {type === "movie" ? : }
+
+ );
+};
+
+const episodeCode = (item: MissingMediaItem | QueuedMediaItem) =>
+ item.type === "episode" && item.seasonNumber !== undefined && item.episodeNumber !== undefined
+ ? `S${String(item.seasonNumber).padStart(2, "0")}E${String(item.episodeNumber).padStart(2, "0")}`
+ : null;
+
+const TypeBadge = ({ item, density }: { item: MissingMediaItem | QueuedMediaItem; density: Density }) => {
+ const t = useScopedI18n("widget.mediaMissing");
+ const color = item.type === "movie" ? "yellow" : "blue";
+ const code = episodeCode(item);
+
+ if (density !== "comfortable") {
+ return (
+
+ {code ?? t(`type.${item.type}`)}
+
+ );
+ }
+
+ return (
+
+
+ {t(`type.${item.type}`)}
+
+ {code && (
+
+ {code}
+
+ )}
+
+ );
+};
+
+const primaryTitle = (item: MissingMediaItem | QueuedMediaItem) =>
+ item.type === "episode" ? (item.seriesTitle ?? item.title) : item.title;
+
+const progressColor = (percent: number) => (percent >= 90 ? "green" : percent >= 40 ? "cyan" : "orange");
+
+const ringSizes: Record = {
+ thin: { size: 30, thickness: 3, fz: "8px" },
+ compact: { size: 34, thickness: 3, fz: "9px" },
+ comfortable: { size: 40, thickness: 4, fz: "10px" },
+};
+
+const ProgressRing = ({ percent, density }: { percent: number; density: Density }) => {
+ const color = progressColor(percent);
+ const ring = ringSizes[density];
+ return (
+
+ {percent}
+
+ }
+ />
+ );
+};
+
+const CardShell = ({ item, density, children }: { item: MissingMediaItem | QueuedMediaItem; density: Density; children: ReactNode }) => (
+
+ {item.imageUrl && (
+
+ )}
+ {children}
+
+);
+
+const MediaCard = ({ item, density }: { item: MissingMediaItem | QueuedMediaItem; density: Density }) => {
+ const isQueued = "percentComplete" in item;
+
+ return (
+
+
+
+
+
+
+ {primaryTitle(item)}
+
+ {density === "comfortable" && (
+
+ {item.type === "episode" ? item.title : item.year}
+
+ )}
+
+ {isQueued && }
+
+
+ );
+};
diff --git a/packages/widgets/src/media-missing/index.ts b/packages/widgets/src/media-missing/index.ts
new file mode 100644
index 000000000..eaa44be6d
--- /dev/null
+++ b/packages/widgets/src/media-missing/index.ts
@@ -0,0 +1,26 @@
+import { IconMovie } from "@tabler/icons-react";
+
+import { getIntegrationKindsByCategory } from "@homarr/definitions";
+
+import { createWidgetDefinition } from "../definition";
+import { optionsBuilder } from "../options";
+
+const pageSizeOptions = ["10", "20", "30", "50"] as const;
+
+export const { componentLoader, definition } = createWidgetDefinition("mediaMissing", {
+ icon: IconMovie,
+ createOptions() {
+ return optionsBuilder.from((factory) => ({
+ showMissing: factory.switch({ defaultValue: true }),
+ showQueued: factory.switch({ defaultValue: true }),
+ pageSize: factory.select({
+ defaultValue: "10",
+ options: pageSizeOptions.map((value) => ({
+ value,
+ label: value,
+ })),
+ }),
+ }));
+ },
+ supportedIntegrations: getIntegrationKindsByCategory("mediaOrganizer"),
+}).withDynamicImport(() => import("./component"));
diff --git a/packages/widgets/src/media-transcoding/panels/queue.panel.tsx b/packages/widgets/src/media-transcoding/panels/queue.panel.tsx
index 99e8e9e2a..ec4bb6614 100644
--- a/packages/widgets/src/media-transcoding/panels/queue.panel.tsx
+++ b/packages/widgets/src/media-transcoding/panels/queue.panel.tsx
@@ -14,7 +14,7 @@ import {
} from "@mantine/core";
import { IconHeartbeat, IconTransform } from "@tabler/icons-react";
-import { humanFileSize } from "@homarr/common";
+import { formatBytes } from "@homarr/common";
import type { TdarrQueue } from "@homarr/integrations";
import { useI18n } from "@homarr/translation/client";
@@ -72,7 +72,7 @@ export function QueuePanel(props: QueuePanelProps) {
- {humanFileSize(item.fileSize)}
+ {formatBytes(item.fileSize)}
))}
diff --git a/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx b/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx
index af7c4b15b..c09647138 100644
--- a/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx
+++ b/packages/widgets/src/media-transcoding/panels/statistics.panel.tsx
@@ -3,7 +3,7 @@ import { Card, Center, Group, RingProgress, ScrollArea, Stack, Text, Title, Tool
import { IconDatabaseHeart, IconFileDescription, IconHeartbeat, IconTransform } from "@tabler/icons-react";
import { useRequiredBoard } from "@homarr/boards/context";
-import { humanFileSize } from "@homarr/common";
+import { formatBytes } from "@homarr/common";
import type { TdarrPieSegment, TdarrStatistics } from "@homarr/integrations";
import { useI18n } from "@homarr/translation/client";
import type { TablerIcon } from "@homarr/ui";
@@ -41,7 +41,7 @@ export function StatisticsPanel(props: StatisticsPanelProps) {
diff --git a/packages/widgets/src/modals/widget-edit-modal.tsx b/packages/widgets/src/modals/widget-edit-modal.tsx
index d1713298c..3edb6ffe5 100644
--- a/packages/widgets/src/modals/widget-edit-modal.tsx
+++ b/packages/widgets/src/modals/widget-edit-modal.tsx
@@ -19,6 +19,7 @@ import { getInputForType } from "../_inputs";
import { FormProvider, useForm } from "../_inputs/form";
import type { BoardItemAdvancedOptions } from "../../../validation/src/shared";
import type { OptionsBuilderResult } from "../options";
+import { OPTIONS_SUPER_REFINE } from "../options";
import type { IntegrationSelectOption } from "../widget-integration-select";
import { WidgetIntegrationSelect } from "../widget-integration-select";
import { WidgetAdvancedOptionsModal } from "./widget-advanced-options-modal";
@@ -54,24 +55,29 @@ export const WidgetEditModal = createModal>(({ actions, i
});
const { definition } = widgetImports[innerProps.kind];
const options = definition.createOptions(innerProps.settings) as Record;
+ const optionsSuperRefine = (options as Record)[OPTIONS_SUPER_REFINE] as
+ | ((data: Record, ctx: z.RefinementCtx) => void)
+ | undefined;
+ const optionsFieldSchema = objectEntries(options).reduce(
+ (acc, [key, value]: [string, { type: string; validate?: z.ZodType }]) => {
+ if (value.validate) {
+ acc[key] = value.type === "multiText" ? z.array(value.validate).optional() : value.validate;
+ }
+
+ return acc;
+ },
+ {} as Record>,
+ );
+ const optionsSchema = optionsSuperRefine
+ ? z.object(optionsFieldSchema).superRefine(optionsSuperRefine)
+ : z.object(optionsFieldSchema);
const form = useForm({
mode: "controlled",
initialValues: innerProps.value,
validate: schemaResolver(
z.object({
- options: z.object(
- objectEntries(options).reduce(
- (acc, [key, value]: [string, { type: string; validate?: z.ZodType }]) => {
- if (value.validate) {
- acc[key] = value.type === "multiText" ? z.array(value.validate).optional() : value.validate;
- }
-
- return acc;
- },
- {} as Record>,
- ),
- ),
+ options: optionsSchema,
integrationIds: z.array(z.string()),
advancedOptions: z.object({
customCssClasses: z.array(z.string()),
diff --git a/packages/widgets/src/notebook/notebook.tsx b/packages/widgets/src/notebook/notebook.tsx
index 229b3730a..9fdd692fb 100644
--- a/packages/widgets/src/notebook/notebook.tsx
+++ b/packages/widgets/src/notebook/notebook.tsx
@@ -39,6 +39,8 @@ import {
IconRowRemove,
IconTableOff,
IconTablePlus,
+ IconTextDirectionLtr,
+ IconTextDirectionRtl,
IconX,
} from "@tabler/icons-react";
import { Color } from "@tiptap/extension-color";
@@ -66,6 +68,7 @@ import { useI18n, useScopedI18n } from "@homarr/translation/client";
import type { TablerIcon } from "@homarr/ui";
import type { WidgetComponentProps } from "../definition";
+import { NotebookTextDirection, setTextDirection } from "./text-direction";
import "@mantine/tiptap/styles.css";
import "./notebook.css";
@@ -171,6 +174,7 @@ export function Notebook({ options, setOptions, isEditMode, boardId, itemId }: W
}),
TaskList.configure({ itemTypeName: "taskItem" }),
TextAlign.configure({ types: ["heading", "paragraph"] }),
+ NotebookTextDirection,
TextStyle,
],
shouldRerenderOnTransaction: true,
@@ -347,6 +351,22 @@ export function Notebook({ options, setOptions, isEditMode, boardId, itemId }: W
position: t("widget.notebook.align.right"),
})}
/>
+ editor && setTextDirection(editor, "ltr").run()}
+ >
+
+
+ editor && setTextDirection(editor, "rtl").run()}
+ >
+
+
diff --git a/packages/widgets/src/notebook/text-direction.spec.ts b/packages/widgets/src/notebook/text-direction.spec.ts
new file mode 100644
index 000000000..62b0313df
--- /dev/null
+++ b/packages/widgets/src/notebook/text-direction.spec.ts
@@ -0,0 +1,34 @@
+import { Editor } from "@tiptap/react";
+import { StarterKit } from "@tiptap/starter-kit";
+import { describe, expect, it } from "vitest";
+
+import { NotebookTextDirection, setTextDirection } from "./text-direction";
+
+describe("notebook text direction", () => {
+ it("persists right-to-left direction in the notebook HTML", () => {
+ const editor = new Editor({
+ content: "יש לי 16GB
",
+ extensions: [StarterKit, NotebookTextDirection],
+ });
+
+ setTextDirection(editor, "rtl").run();
+
+ expect(editor.getHTML()).toBe('יש לי 16GB
');
+ editor.destroy();
+ });
+
+ it("reads and changes an existing direction attribute", () => {
+ const editor = new Editor({
+ content: 'Heading ',
+ extensions: [StarterKit, NotebookTextDirection],
+ });
+
+ expect(editor.getHTML()).toBe('Heading ');
+
+ editor.commands.setTextSelection(1);
+ setTextDirection(editor, "ltr").run();
+
+ expect(editor.getHTML()).toContain('Heading ');
+ editor.destroy();
+ });
+});
diff --git a/packages/widgets/src/notebook/text-direction.ts b/packages/widgets/src/notebook/text-direction.ts
new file mode 100644
index 000000000..7ab9ea022
--- /dev/null
+++ b/packages/widgets/src/notebook/text-direction.ts
@@ -0,0 +1,28 @@
+import { Extension } from "@tiptap/react";
+import type { Editor } from "@tiptap/react";
+
+export type TextDirection = "ltr" | "rtl";
+
+export const NotebookTextDirection = Extension.create({
+ name: "notebookTextDirection",
+
+ addGlobalAttributes() {
+ return [
+ {
+ types: ["heading", "paragraph"],
+ attributes: {
+ dir: {
+ default: null,
+ parseHTML: (element) => element.getAttribute("dir"),
+ renderHTML: ({ dir }: { dir?: TextDirection }) => (dir ? { dir } : {}),
+ },
+ },
+ },
+ ];
+ },
+});
+
+export function setTextDirection(editor: Editor, direction: TextDirection) {
+ const nodeType = editor.isActive("heading") ? "heading" : "paragraph";
+ return editor.chain().focus().updateAttributes(nodeType, { dir: direction });
+}
diff --git a/packages/widgets/src/notifications/component.tsx b/packages/widgets/src/notifications/component.tsx
index 3b7cc5ba7..3b04393d0 100644
--- a/packages/widgets/src/notifications/component.tsx
+++ b/packages/widgets/src/notifications/component.tsx
@@ -1,7 +1,7 @@
"use client";
import { useMemo } from "react";
-import { Card, Flex, Group, ScrollArea, Stack, Text } from "@mantine/core";
+import { Avatar, Card, Flex, Group, ScrollArea, Stack, Text } from "@mantine/core";
import { IconClock } from "@tabler/icons-react";
import { clientApi } from "@homarr/api/client";
@@ -34,18 +34,39 @@ export default function NotificationsWidget({ options, integrationIds }: WidgetC
{sortedNotifications.length > 0 ? (
sortedNotifications.map((notification) => (
-
-
- {notification.title && (
-
- {notification.title}
-
+
+
+ {!options.hideLogos && notification.source?.iconUrl && (
+
)}
-
- {notification.body}
-
-
+
+ {notification.title && (
+
+ {notification.title}
+
+ )}
+
+ {notification.body}
+
+
+
+
))
diff --git a/packages/widgets/src/notifications/index.ts b/packages/widgets/src/notifications/index.ts
index 577d698a0..553ef5d9f 100644
--- a/packages/widgets/src/notifications/index.ts
+++ b/packages/widgets/src/notifications/index.ts
@@ -8,7 +8,9 @@ import { optionsBuilder } from "../options";
export const { componentLoader, definition } = createWidgetDefinition("notifications", {
icon: IconMessage,
createOptions() {
- return optionsBuilder.from(() => ({}));
+ return optionsBuilder.from((factory) => ({
+ hideLogos: factory.switch({ defaultValue: false }),
+ }));
},
supportedIntegrations: getIntegrationKindsByCategory("notifications"),
}).withDynamicImport(() => import("./component"));
diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts
index bf82ef226..c699e68da 100644
--- a/packages/widgets/src/options.ts
+++ b/packages/widgets/src/options.ts
@@ -2,7 +2,7 @@ import type React from "react";
import type { DraggableAttributes, UniqueIdentifier } from "@dnd-kit/core";
import type { ActionIconProps } from "@mantine/core";
import { z } from "zod/v4";
-import type { ZodType } from "zod/v4";
+import type { RefinementCtx, ZodType } from "zod/v4";
import type { IntegrationKind } from "@homarr/definitions";
@@ -72,6 +72,15 @@ interface IntegrationSelectInput extends CommonInput {
};
}
+interface IntegrationMultiSelectInput extends CommonInput {
+ withDescription?: boolean;
+ useOptions: (integrationIds: string[]) => {
+ data: { value: string; label: string }[];
+ isPending: boolean;
+ isError: boolean;
+ };
+}
+
interface NumberInput extends CommonInput {
validate: z.ZodNumber;
step?: number;
@@ -196,6 +205,12 @@ const optionsFactory = {
searchable: input.searchable ?? true,
useOptions: input.useOptions,
}),
+ integrationMultiSelect: (input: IntegrationMultiSelectInput) => ({
+ type: "integrationMultiSelect" as const,
+ defaultValue: input.defaultValue ?? [],
+ withDescription: input.withDescription ?? false,
+ useOptions: input.useOptions,
+ }),
customWidgetSelect: (input?: CommonInput) => ({
type: "customWidgetSelect" as const,
defaultValue: input?.defaultValue ?? "",
@@ -242,9 +257,12 @@ type ConfigurationInput = Partial<
Record>
>;
+export const OPTIONS_SUPER_REFINE = Symbol("optionsSuperRefine");
+
const createOptions = (
optionsCallback: (factory: WidgetOptionFactory) => TOptions,
configuration?: ConfigurationInput,
+ optionsSuperRefine?: (data: inferOptionsFromDefinition, ctx: RefinementCtx) => void,
) => {
const obj = {} as Record;
const options = optionsCallback(optionsFactory);
@@ -256,9 +274,18 @@ const createOptions = (
};
}
- return obj as {
+ const result = obj as {
[key in keyof TOptions]: TOptions[key] & FieldConfiguration;
};
+
+ if (optionsSuperRefine) {
+ Object.defineProperty(result, OPTIONS_SUPER_REFINE, {
+ value: optionsSuperRefine,
+ enumerable: false,
+ });
+ }
+
+ return result;
};
type OptionsBuilder = typeof createOptions;
diff --git a/packages/widgets/src/patchmon/component.module.css b/packages/widgets/src/patchmon/component.module.css
new file mode 100644
index 000000000..bb7dc2784
--- /dev/null
+++ b/packages/widgets/src/patchmon/component.module.css
@@ -0,0 +1,371 @@
+.root {
+ container-type: size;
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ min-height: 0;
+ padding: clamp(6px, 3cqi, 14px);
+ gap: clamp(4px, 2cqi, 10px);
+ overflow: hidden;
+}
+
+.compactRoot {
+ padding: clamp(4px, 3cqi, 8px);
+ gap: 2px;
+}
+
+.content {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ min-height: 0;
+ gap: clamp(4px, 2cqi, 8px);
+}
+
+.hero {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: clamp(8px, 3cqi, 18px);
+ flex-shrink: 0;
+ padding-bottom: clamp(4px, 2cqi, 10px);
+ border-bottom: 1px solid light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-4));
+}
+
+.heroExpanded {
+ flex: 1;
+ border-bottom: none;
+ justify-content: center;
+ padding-bottom: 0;
+}
+
+.heroTextOnly {
+ justify-content: center;
+}
+
+.heroRingOnly {
+ justify-content: center;
+ padding-bottom: 0;
+ border-bottom: none;
+}
+
+.heroWithText {
+ justify-content: center;
+ width: 100%;
+}
+
+.heroWithText .heroText {
+ flex: 0 1 auto;
+}
+
+.heroExpanded.heroRingOnly {
+ flex: 1;
+}
+
+.heroTextOnly .heroText {
+ align-items: center;
+ text-align: center;
+}
+
+.heroTextOnly .heroValue {
+ font-size: clamp(22px, 10cqi, 36px);
+}
+
+.heroText {
+ display: flex;
+ flex-direction: column;
+ gap: clamp(2px, 1cqi, 4px);
+ min-width: 0;
+ flex: 1;
+}
+
+.heroLabel {
+ font-size: clamp(9px, 2.8cqi, 13px);
+ color: var(--mantine-color-dimmed);
+ line-height: 1.2;
+}
+
+.heroValue {
+ font-size: clamp(18px, 8cqi, 32px);
+ font-weight: 700;
+ line-height: 1.1;
+}
+
+.ring {
+ flex-shrink: 0;
+}
+
+.compactPrimary {
+ display: flex;
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ min-height: 0;
+ min-width: 0;
+}
+
+.statsSection {
+ flex: 1;
+ min-height: 0;
+}
+
+.statsSectionCompact {
+ flex: 0 1 auto;
+}
+
+.grid {
+ display: grid;
+ height: 100%;
+ min-height: 0;
+ gap: clamp(4px, 2cqi, 10px);
+ grid-template-columns: repeat(var(--stat-cols, 2), minmax(0, 1fr));
+ grid-auto-rows: 1fr;
+ align-content: stretch;
+}
+
+.statTile {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ min-height: 0;
+ min-width: 0;
+ gap: clamp(2px, 1.5cqmin, 5px);
+ padding: clamp(4px, 2.5cqi, 10px);
+ border-radius: var(--mantine-radius-md);
+ background-color: var(--stat-bg, light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6)));
+ overflow: hidden;
+}
+
+.statIcon {
+ flex-shrink: 0;
+}
+
+.statLabel {
+ font-size: clamp(8px, 2.5cqmin, 12px);
+ color: var(--mantine-color-dimmed);
+ line-height: 1.2;
+ text-align: center;
+ max-width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.statValue {
+ font-size: clamp(14px, 5.5cqmin, 24px);
+ font-weight: 700;
+ line-height: 1.1;
+ text-align: center;
+}
+
+.compactStatGrid {
+ display: grid;
+ flex: 1;
+ grid-template-columns: repeat(var(--compact-stat-cols, 1), minmax(0, 1fr));
+ grid-auto-rows: minmax(0, 1fr);
+ gap: clamp(3px, 2cqi, 6px);
+ min-width: 0;
+ min-height: 0;
+ width: 100%;
+}
+
+.compactStatTile {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ min-width: 0;
+ min-height: 0;
+ padding: clamp(4px, 3cqi, 8px);
+ border-radius: var(--mantine-radius-md);
+ background-color: var(--stat-bg, light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6)));
+ overflow: hidden;
+}
+
+.compactStatValue {
+ font-size: clamp(22px, 17cqmin, 42px);
+ font-weight: 700;
+ line-height: 1;
+ text-align: center;
+}
+
+.compactStatLabel {
+ max-width: 100%;
+ overflow: hidden;
+ color: var(--mantine-color-dimmed);
+ font-size: clamp(8px, 2.4cqmin, 11px);
+ line-height: 1.1;
+ text-align: center;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.emptyState {
+ display: flex;
+ flex: 1;
+ align-items: center;
+ justify-content: center;
+ min-height: 0;
+ color: var(--mantine-color-dimmed);
+ font-size: clamp(11px, 3cqi, 14px);
+ text-align: center;
+}
+
+.osSectionWrapper {
+ flex: 1;
+ min-height: 0;
+ display: flex;
+ flex-direction: column;
+}
+
+.osSectionWithStats {
+ padding-top: clamp(4px, 2cqi, 8px);
+ border-top: 1px solid light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-4));
+}
+
+.osSection {
+ min-height: 0;
+}
+
+.osHeading {
+ flex-shrink: 0;
+}
+
+.osScroll {
+ flex: 1;
+ min-height: 0;
+}
+
+.osRow {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+ min-width: 0;
+}
+
+.osLabel {
+ font-size: clamp(9px, 2.5cqmin, 12px);
+ line-height: 1.2;
+}
+
+.osBarGroup {
+ width: 100%;
+ min-width: 0;
+}
+
+.osBar {
+ flex: 1;
+ min-width: 0;
+}
+
+.osCount {
+ flex: 0 0 auto;
+ min-width: 1.5rem;
+ text-align: right;
+ font-size: clamp(9px, 2.5cqmin, 12px);
+}
+
+.compactOsBars {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: center;
+ gap: clamp(3px, 2cqmin, 5px);
+ min-width: 0;
+ min-height: 0;
+ width: 100%;
+}
+
+.compactOsBar {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+ min-width: 0;
+}
+
+.compactOsLabel {
+ max-width: 100%;
+ overflow: hidden;
+ font-size: clamp(9px, 2.5cqmin, 12px);
+ line-height: 1.1;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.osDonutContent {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex: 1;
+ min-height: 0;
+ max-width: 100%;
+ overflow: visible;
+}
+
+.osDonutContentWithLegend {
+ justify-content: space-evenly;
+ gap: clamp(8px, 3cqi, 16px);
+}
+
+.osDonut {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex: 0 1 auto;
+ min-width: 0;
+ max-width: 100%;
+ overflow: visible;
+}
+
+.osLegend {
+ display: flex;
+ flex: 1 1 0;
+ flex-direction: column;
+ gap: 4px;
+ min-width: 0;
+ max-width: 50%;
+}
+
+.osLegendItem {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ min-width: 0;
+ font-size: clamp(9px, 2.2cqmin, 12px);
+ line-height: 1.2;
+}
+
+.osLegendSwatch {
+ width: 8px;
+ height: 8px;
+ flex: 0 0 auto;
+ border-radius: var(--mantine-radius-xl);
+ background-color: var(--os-color);
+}
+
+.osLegendLabel {
+ min-width: 0;
+ flex: 1 1 auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.osLegendValue {
+ flex: 0 0 auto;
+}
+
+.footer {
+ flex-shrink: 0;
+ max-width: 100%;
+ overflow: hidden;
+ font-size: clamp(9px, 2.2cqmin, 12px);
+ line-height: 1.2;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.compactFooter {
+ font-size: clamp(8px, 2.2cqmin, 10px);
+}
diff --git a/packages/widgets/src/patchmon/component.tsx b/packages/widgets/src/patchmon/component.tsx
new file mode 100644
index 000000000..f1dae3e29
--- /dev/null
+++ b/packages/widgets/src/patchmon/component.tsx
@@ -0,0 +1,458 @@
+"use client";
+
+import type { CSSProperties } from "react";
+import { RingProgress, ScrollArea, Text, Tooltip } from "@mantine/core";
+import {
+ IconCircleCheck,
+ IconClockCheck,
+ IconDatabase,
+ IconPackages,
+ IconRefreshAlert,
+ IconServer,
+ IconShieldExclamation,
+ IconShieldX,
+} from "@tabler/icons-react";
+import dayjs from "dayjs";
+import relativeTime from "dayjs/plugin/relativeTime";
+
+import { clientApi } from "@homarr/api/client";
+import { useScopedI18n } from "@homarr/translation/client";
+import type { TablerIcon } from "@homarr/ui";
+
+import { WidgetEmptyState } from "../common/empty-state";
+import type { WidgetComponentProps } from "../definition";
+import classes from "./component.module.css";
+import { getGridCols, shouldShowComplianceHeroText } from "./layout-utils";
+import { OsDistributionSection } from "./os-distribution-section";
+import type { PatchMonStatKey } from "./stat-colors";
+import { resolveStatColor, severityToIconColor, severityToMantineBgColor, severityToMantineColor } from "./stat-colors";
+
+dayjs.extend(relativeTime);
+
+const statVisibilityByOption = {
+ showTotalHosts: "totalHosts",
+ showHostsNeedingUpdates: "hostsNeedingUpdates",
+ showSecurityUpdates: "securityUpdates",
+ showUpToDateHosts: "upToDateHosts",
+ showHostsWithSecurityUpdates: "hostsWithSecurityUpdates",
+ showRecentUpdates24h: "recentUpdates24h",
+ showTotalOutdatedPackages: "totalOutdatedPackages",
+ showTotalRepos: "totalRepos",
+} as const;
+
+const statIcons: Record = {
+ totalHosts: IconServer,
+ hostsNeedingUpdates: IconRefreshAlert,
+ securityUpdates: IconShieldExclamation,
+ upToDateHosts: IconCircleCheck,
+ hostsWithSecurityUpdates: IconShieldX,
+ recentUpdates24h: IconClockCheck,
+ totalOutdatedPackages: IconPackages,
+ totalRepos: IconDatabase,
+};
+
+const iconSizeByWidth = [
+ { minWidth: 320, size: 22 },
+ { minWidth: 200, size: 18 },
+ { minWidth: 0, size: 16 },
+] as const;
+
+const ringSizeByWidth = [
+ { minWidth: 400, size: 88 },
+ { minWidth: 320, size: 72 },
+ { minWidth: 220, size: 56 },
+ { minWidth: 0, size: 40 },
+] as const;
+
+type LayoutMode = "mini" | "compact" | "comfortable" | "spacious";
+type CompactPrimaryContent = "hero" | "os" | "stats" | null;
+
+const getLayoutMode = (width: number, height: number): LayoutMode => {
+ const minDim = Math.min(width, height);
+ if (minDim < 140) return "mini";
+ if (minDim < 220) return "compact";
+ if (width >= 380 && height >= 350) return "spacious";
+ return "comfortable";
+};
+
+export default function PatchMonWidget({ integrationIds, options, width, height }: WidgetComponentProps<"patchmon">) {
+ const t = useScopedI18n("widget.patchmon");
+ const integrationId = integrationIds[0] ?? "";
+ const { data: stats } = clientApi.widget.patchmon.getStats.useQuery({ integrationId }, { staleTime: 60 * 1000 });
+
+ if (!stats) return ;
+
+ const statValues: Record = {
+ totalHosts: stats.totalHosts,
+ hostsNeedingUpdates: stats.hostsNeedingUpdates,
+ securityUpdates: stats.securityUpdates,
+ upToDateHosts: stats.upToDateHosts,
+ hostsWithSecurityUpdates: stats.hostsWithSecurityUpdates,
+ recentUpdates24h: stats.recentUpdates24h,
+ totalOutdatedPackages: stats.totalOutdatedPackages,
+ totalRepos: stats.totalRepos,
+ };
+
+ const visibleStatKeys = Object.entries(statVisibilityByOption)
+ .filter(([optionKey]) => options[optionKey as keyof typeof options])
+ .map(([, statKey]) => statKey);
+
+ const colorContext = { totalHosts: stats.totalHosts };
+ const layout = getLayoutMode(width, height);
+ const isLandscape = width / height > 2.5;
+ const isTinySquare = width < 160 && height < 160;
+ const isShortLandscape = width >= 160 && height < 160;
+ const isCompactSurface = isTinySquare || isShortLandscape;
+ const isNarrow = width < 180;
+ const osDisplayMode = options.osDisplayMode as "bars" | "donut";
+ const showOsData = options.showOsDistribution && stats.osDistribution.length > 0;
+
+ const showIcons = layout !== "mini";
+ const showLabels = layout !== "mini";
+ const showHero = options.showComplianceHero && (!isLandscape || isCompactSurface) && width >= 90 && height >= 90;
+ const showHeroText = showHero && shouldShowComplianceHeroText(width);
+ const showHeroRingOnly = showHero && !showHeroText;
+ const compactPrimaryContent = isCompactSurface
+ ? getCompactPrimaryContent({
+ showHero,
+ showOsDistribution: showOsData,
+ visibleStatKeys,
+ })
+ : null;
+ const showStats = visibleStatKeys.length > 0 && !isCompactSurface;
+ const showOsSection = showOsData && !isCompactSurface && height > 200;
+ const showCompactFooter = isCompactSurface && height >= 110;
+ const showFooter = isCompactSurface ? showCompactFooter : !isLandscape && height > 220;
+ const showOsLegend = osDisplayMode === "donut" && width >= 380 && height >= 300;
+
+ const hasContent = compactPrimaryContent !== null || showStats || showOsSection || showHero;
+
+ const gridCols = isLandscape
+ ? Math.min(visibleStatKeys.length, 4)
+ : Math.min(getGridCols(width), visibleStatKeys.length || 1);
+ const iconSize = getIconSize(width);
+ const ringSize = getRingSize(width, height, showHeroRingOnly);
+
+ const compliancePercent = stats.totalHosts > 0 ? Math.round((stats.upToDateHosts / stats.totalHosts) * 100) : 100;
+ const complianceSeverity = resolveStatColor("upToDateHosts", stats.upToDateHosts, colorContext, options);
+ const complianceColor = complianceSeverity === "neutral" ? "blue" : complianceSeverity;
+
+ const timeAgo = dayjs(stats.lastUpdated).fromNow();
+ const compactTimeAgo = getCompactTimeAgo(stats.lastUpdated);
+ const footerText = isNarrow ? compactTimeAgo : t("lastUpdated", { time: timeAgo });
+
+ if (isCompactSurface) {
+ const compactContentHeight = showCompactFooter ? height - 18 : height;
+ const compactStatCols = Math.max(1, Math.floor(width / 120));
+ const compactStatKeys = visibleStatKeys.slice(0, Math.min(visibleStatKeys.length, compactStatCols * 2));
+ const compactContent =
+ compactPrimaryContent === "hero" ? (
+
+ ) : compactPrimaryContent === "os" ? (
+
+
+
+ ) : compactPrimaryContent === "stats" ? (
+ = 180 || height >= 140}
+ getLabel={t}
+ />
+ ) : null;
+
+ if (!compactContent) {
+ return (
+
+ );
+ }
+
+ return (
+
+ {compactContent}
+ {showCompactFooter && (
+
+ {footerText}
+
+ )}
+
+ );
+ }
+
+ if (!hasContent) {
+ return (
+
+ );
+ }
+
+ const statGridContent = showStats && (
+
+
+ {visibleStatKeys.map((statKey) => {
+ const severity = resolveStatColor(statKey, statValues[statKey], colorContext, options);
+ const Icon = statIcons[statKey];
+
+ const tile = (
+
+ {showIcons && (
+
+ )}
+
+
+ {statValues[statKey]}
+
+
+ {showLabels && {t(statKey)} }
+
+ );
+
+ if (!showLabels) {
+ return (
+
+ {tile}
+
+ );
+ }
+
+ return tile;
+ })}
+
+
+ );
+
+ const osContent = showOsSection && (
+ 0 ? classes.osSectionWithStats : ""}`}>
+
+
+ );
+
+ const needsScroll = layout === "mini" || layout === "compact";
+
+ return (
+
+ {showHero && (
+
+ )}
+
+ {(statGridContent || osContent) &&
+ (needsScroll ? (
+
+
+ {statGridContent}
+ {osContent}
+
+
+ ) : (
+
+ {statGridContent}
+ {osContent}
+
+ ))}
+
+ {showFooter && (
+
+ {footerText}
+
+ )}
+
+ );
+}
+
+function ComplianceHero({
+ compliancePercent,
+ complianceColor,
+ upToDateHosts,
+ totalHosts,
+ ringSize,
+ showText,
+ expanded = false,
+ compact = false,
+ getLabel,
+}: {
+ compliancePercent: number;
+ complianceColor: string;
+ upToDateHosts: number;
+ totalHosts: number;
+ ringSize: number;
+ showText: boolean;
+ expanded?: boolean;
+ compact?: boolean;
+ getLabel: (key: "compliance" | "complianceRatio", params?: { upToDate: number; total: number }) => string;
+}) {
+ const heroClasses = [
+ compact && classes.compactPrimary,
+ classes.hero,
+ expanded && classes.heroExpanded,
+ showText ? classes.heroWithText : classes.heroRingOnly,
+ ]
+ .filter(Boolean)
+ .join(" ");
+
+ return (
+
+ {showText && (
+
+ {getLabel("compliance")}
+
+ {getLabel("complianceRatio", { upToDate: upToDateHosts, total: totalHosts })}
+
+
+ )}
+
+ {compliancePercent}%
+
+ }
+ />
+
+ );
+}
+
+function getIconSize(width: number): number {
+ const match = iconSizeByWidth.find(({ minWidth }) => width >= minWidth);
+ return match?.size ?? 16;
+}
+
+function getRingSize(width: number, height: number, compact: boolean): number {
+ if (compact) {
+ return Math.max(36, Math.min(64, width - 28, height - 28));
+ }
+
+ const match = ringSizeByWidth.find(({ minWidth }) => width >= minWidth);
+ return match?.size ?? 44;
+}
+
+function getCompactPrimaryContent({
+ showHero,
+ showOsDistribution,
+ visibleStatKeys,
+}: {
+ showHero: boolean;
+ showOsDistribution: boolean;
+ visibleStatKeys: PatchMonStatKey[];
+}): CompactPrimaryContent {
+ if (showHero) return "hero";
+ if (showOsDistribution) return "os";
+ return visibleStatKeys.length > 0 ? "stats" : null;
+}
+
+function getCompactTimeAgo(lastUpdated: string): string {
+ const minutes = Math.max(0, dayjs().diff(dayjs(lastUpdated), "minute"));
+
+ if (minutes < 1) return "now";
+ if (minutes < 60) return `${minutes}m ago`;
+
+ const hours = Math.floor(minutes / 60);
+ if (hours < 24) return `${hours}h ago`;
+
+ const days = Math.floor(hours / 24);
+ return `${days}d ago`;
+}
+
+function CompactStatGrid({
+ statKeys,
+ statValues,
+ colorContext,
+ options,
+ columns,
+ showIcon,
+ getLabel,
+}: {
+ statKeys: PatchMonStatKey[];
+ statValues: Record;
+ colorContext: { totalHosts: number };
+ options: WidgetComponentProps<"patchmon">["options"];
+ columns: number;
+ showIcon: boolean;
+ getLabel: (key: PatchMonStatKey) => string;
+}) {
+ return (
+
+ {statKeys.map((statKey) => {
+ const severity = resolveStatColor(statKey, statValues[statKey], colorContext, options);
+ const Icon = statIcons[statKey];
+ const label = getLabel(statKey);
+
+ return (
+
+
+ {showIcon && (
+
+ )}
+
+
+ {statValues[statKey]}
+
+
+ {label}
+
+
+ );
+ })}
+
+ );
+}
diff --git a/packages/widgets/src/patchmon/index.ts b/packages/widgets/src/patchmon/index.ts
new file mode 100644
index 000000000..6f97be83f
--- /dev/null
+++ b/packages/widgets/src/patchmon/index.ts
@@ -0,0 +1,234 @@
+import { IconServerOff, IconShieldCheck } from "@tabler/icons-react";
+import { z } from "zod/v4";
+
+import { createWidgetDefinition } from "../definition";
+import { optionsBuilder } from "../options";
+import { PATCHMON_STAT_COLOR_PRESETS } from "./stat-colors";
+import { patchmonOptionsSuperRefine } from "./threshold-validation";
+
+export const { definition, componentLoader } = createWidgetDefinition("patchmon", {
+ icon: IconShieldCheck,
+ supportedIntegrations: ["patchmon"],
+ integrationsRequired: true,
+ createOptions() {
+ return optionsBuilder.from(
+ (factory) => ({
+ showComplianceHero: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showTotalHosts: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showHostsNeedingUpdates: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showSecurityUpdates: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ showUpToDateHosts: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ showHostsWithSecurityUpdates: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ showRecentUpdates24h: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ showTotalOutdatedPackages: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ showTotalRepos: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ enableThresholdColors: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ useCustomThresholds: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ hostsNeedingUpdatesThresholdMode: factory.select({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.hostsNeedingUpdates.mode,
+ withDescription: true,
+ options: [
+ { value: "absolute", label: (t) => t("widget.patchmon.option.thresholdMode.option.absolute") },
+ { value: "percent", label: (t) => t("widget.patchmon.option.thresholdMode.option.percent") },
+ ] as const,
+ }),
+ hostsNeedingUpdatesWarningAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.hostsNeedingUpdates.warningAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ hostsNeedingUpdatesCriticalAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.hostsNeedingUpdates.criticalAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ securityUpdatesThresholdMode: factory.select({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.securityUpdates.mode,
+ withDescription: true,
+ options: [
+ { value: "absolute", label: (t) => t("widget.patchmon.option.thresholdMode.option.absolute") },
+ { value: "percent", label: (t) => t("widget.patchmon.option.thresholdMode.option.percent") },
+ ] as const,
+ }),
+ securityUpdatesWarningAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.securityUpdates.warningAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ securityUpdatesCriticalAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.securityUpdates.criticalAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ hostsWithSecurityUpdatesThresholdMode: factory.select({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.hostsWithSecurityUpdates.mode,
+ withDescription: true,
+ options: [
+ { value: "absolute", label: (t) => t("widget.patchmon.option.thresholdMode.option.absolute") },
+ { value: "percent", label: (t) => t("widget.patchmon.option.thresholdMode.option.percent") },
+ ] as const,
+ }),
+ hostsWithSecurityUpdatesWarningAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.hostsWithSecurityUpdates.warningAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ hostsWithSecurityUpdatesCriticalAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.hostsWithSecurityUpdates.criticalAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ upToDateHostsThresholdMode: factory.select({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.upToDateHosts.mode,
+ withDescription: true,
+ options: [
+ { value: "absolute", label: (t) => t("widget.patchmon.option.thresholdMode.option.absolute") },
+ { value: "percent", label: (t) => t("widget.patchmon.option.thresholdMode.option.percent") },
+ ] as const,
+ }),
+ upToDateHostsWarningAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.upToDateHosts.warningAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ upToDateHostsCriticalAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.upToDateHosts.criticalAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ totalOutdatedPackagesThresholdMode: factory.select({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.totalOutdatedPackages.mode,
+ withDescription: true,
+ options: [
+ { value: "absolute", label: (t) => t("widget.patchmon.option.thresholdMode.option.absolute") },
+ { value: "percent", label: (t) => t("widget.patchmon.option.thresholdMode.option.percent") },
+ ] as const,
+ }),
+ totalOutdatedPackagesWarningAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.totalOutdatedPackages.warningAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ totalOutdatedPackagesCriticalAt: factory.number({
+ defaultValue: PATCHMON_STAT_COLOR_PRESETS.totalOutdatedPackages.criticalAt,
+ withDescription: true,
+ step: 1,
+ validate: z.number().int().min(0),
+ }),
+ showOsDistribution: factory.switch({
+ defaultValue: false,
+ withDescription: true,
+ }),
+ osDisplayMode: factory.select({
+ defaultValue: "bars",
+ withDescription: true,
+ options: [
+ { value: "bars", label: (t) => t("widget.patchmon.option.osDisplayMode.option.bars") },
+ { value: "donut", label: (t) => t("widget.patchmon.option.osDisplayMode.option.donut") },
+ ] as const,
+ }),
+ osDistributionLimit: factory.select({
+ defaultValue: "0",
+ withDescription: true,
+ options: [
+ { value: "3", label: (t) => t("widget.patchmon.option.osDistributionLimit.option.3") },
+ { value: "5", label: (t) => t("widget.patchmon.option.osDistributionLimit.option.5") },
+ { value: "10", label: (t) => t("widget.patchmon.option.osDistributionLimit.option.10") },
+ { value: "0", label: (t) => t("widget.patchmon.option.osDistributionLimit.option.all") },
+ ] as const,
+ }),
+ showOsVersion: factory.switch({
+ defaultValue: true,
+ withDescription: true,
+ }),
+ }),
+ {
+ useCustomThresholds: {
+ shouldHide: (options) => !options.enableThresholdColors,
+ },
+ hostsNeedingUpdatesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ hostsNeedingUpdatesWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ hostsNeedingUpdatesCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ securityUpdatesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ securityUpdatesWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ securityUpdatesCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ hostsWithSecurityUpdatesThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ hostsWithSecurityUpdatesWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ hostsWithSecurityUpdatesCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ upToDateHostsThresholdMode: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ upToDateHostsWarningAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ upToDateHostsCriticalAt: { shouldHide: (options) => !options.enableThresholdColors || !options.useCustomThresholds },
+ totalOutdatedPackagesThresholdMode: {
+ shouldHide: (options) =>
+ !options.enableThresholdColors || !options.useCustomThresholds || !options.showTotalOutdatedPackages,
+ },
+ totalOutdatedPackagesWarningAt: {
+ shouldHide: (options) =>
+ !options.enableThresholdColors || !options.useCustomThresholds || !options.showTotalOutdatedPackages,
+ },
+ totalOutdatedPackagesCriticalAt: {
+ shouldHide: (options) =>
+ !options.enableThresholdColors || !options.useCustomThresholds || !options.showTotalOutdatedPackages,
+ },
+ osDisplayMode: {
+ shouldHide: (options) => !options.showOsDistribution,
+ },
+ osDistributionLimit: {
+ shouldHide: (options) => !options.showOsDistribution,
+ },
+ showOsVersion: {
+ shouldHide: (options) => !options.showOsDistribution,
+ },
+ },
+ patchmonOptionsSuperRefine,
+ );
+ },
+ errors: {
+ INTERNAL_SERVER_ERROR: {
+ icon: IconServerOff,
+ message: (t) => t("widget.patchmon.error.internalServerError"),
+ },
+ },
+}).withDynamicImport(() => import("./component"));
diff --git a/packages/widgets/src/patchmon/layout-utils.ts b/packages/widgets/src/patchmon/layout-utils.ts
new file mode 100644
index 000000000..dd8ca1282
--- /dev/null
+++ b/packages/widgets/src/patchmon/layout-utils.ts
@@ -0,0 +1,15 @@
+const gridColsByWidth = [
+ { minWidth: 500, cols: 4 },
+ { minWidth: 380, cols: 3 },
+ { minWidth: 220, cols: 2 },
+ { minWidth: 0, cols: 1 },
+] as const;
+
+export function getGridCols(width: number): number {
+ const match = gridColsByWidth.find(({ minWidth }) => width >= minWidth);
+ return match?.cols ?? 1;
+}
+
+export function shouldShowComplianceHeroText(width: number): boolean {
+ return getGridCols(width) >= 2;
+}
diff --git a/packages/widgets/src/patchmon/os-distribution-section.tsx b/packages/widgets/src/patchmon/os-distribution-section.tsx
new file mode 100644
index 000000000..cb21cb203
--- /dev/null
+++ b/packages/widgets/src/patchmon/os-distribution-section.tsx
@@ -0,0 +1,167 @@
+"use client";
+
+import type { CSSProperties } from "react";
+import { DonutChart } from "@mantine/charts";
+import { Group, Progress, ScrollArea, Stack, Text } from "@mantine/core";
+
+import type { PatchMonOsDistributionEntry } from "@homarr/integrations";
+import { useScopedI18n } from "@homarr/translation/client";
+
+import classes from "./component.module.css";
+
+const OS_COLORS = [
+ "blue.6",
+ "orange.6",
+ "green.6",
+ "grape.6",
+ "cyan.6",
+ "pink.6",
+ "yellow.6",
+ "teal.6",
+] as const;
+
+interface OsDistributionSectionProps {
+ entries: PatchMonOsDistributionEntry[];
+ limit: number;
+ showOsVersion: boolean;
+ displayMode: "bars" | "donut";
+ width: number;
+ height: number;
+ showLegend: boolean;
+ compact?: boolean;
+}
+
+export const formatOsLabel = (entry: PatchMonOsDistributionEntry, showVersion: boolean) =>
+ showVersion && entry.osVersion ? `${entry.name} ${entry.osVersion}` : entry.name;
+
+const getMantineColorVariable = (color: string) => `var(--mantine-color-${color.replace(".", "-")})`;
+
+export function OsDistributionSection({
+ entries,
+ limit,
+ showOsVersion,
+ displayMode,
+ width,
+ height,
+ showLegend,
+ compact = false,
+}: OsDistributionSectionProps) {
+ const t = useScopedI18n("widget.patchmon");
+
+ if (entries.length === 0) {
+ return null;
+ }
+
+ const visibleEntries = limit > 0 ? entries.slice(0, limit) : entries;
+
+ if (displayMode === "donut") {
+ const chartData = visibleEntries.map((entry, i) => ({
+ name: formatOsLabel(entry, showOsVersion),
+ value: entry.count,
+ color: OS_COLORS[i % OS_COLORS.length] as string,
+ }));
+ const donutSize = compact
+ ? Math.max(36, Math.min(width - 18, height - 10, 96))
+ : Math.max(48, Math.min(width - 24, height * 0.55, showLegend ? 140 : 180));
+
+ return (
+
+ {!compact && (
+
+ {t("osDistribution")}
+
+ )}
+
+
+
+
+ {showLegend && (
+
+ {chartData.map((entry) => (
+
+
+
+ {entry.name}
+
+
+ {entry.value}
+
+
+ ))}
+
+ )}
+
+
+ );
+ }
+
+ const maxCount = Math.max(...visibleEntries.map((entry) => entry.count), 1);
+
+ if (compact) {
+ const maxRows = Math.max(2, Math.min(visibleEntries.length, Math.floor(height / 28), width < 160 ? 2 : 4));
+ const compactEntries = visibleEntries.slice(0, maxRows);
+ if (compactEntries.length === 0) return null;
+
+ return (
+
+ {compactEntries.map((entry, i) => (
+
+
+ {formatOsLabel(entry, showOsVersion)}
+
+
+
+
+ {entry.count}
+
+
+
+ ))}
+
+ );
+ }
+
+ return (
+
+
+ {t("osDistribution")}
+
+
+
+ {visibleEntries.map((entry, i) => {
+ const barValue = (entry.count / maxCount) * 100;
+ const barColor = OS_COLORS[i % OS_COLORS.length] as string;
+ return (
+
+
+ {formatOsLabel(entry, showOsVersion)}
+
+
+
+
+ {entry.count}
+
+
+
+ );
+ })}
+
+
+
+ );
+}
diff --git a/packages/widgets/src/patchmon/stat-colors.ts b/packages/widgets/src/patchmon/stat-colors.ts
new file mode 100644
index 000000000..7ecd035ac
--- /dev/null
+++ b/packages/widgets/src/patchmon/stat-colors.ts
@@ -0,0 +1,215 @@
+import type { WidgetComponentProps } from "../definition";
+import { clampPercentThreshold } from "./threshold-validation";
+
+export type PatchMonStatKey =
+ | "totalHosts"
+ | "hostsNeedingUpdates"
+ | "securityUpdates"
+ | "upToDateHosts"
+ | "hostsWithSecurityUpdates"
+ | "recentUpdates24h"
+ | "totalOutdatedPackages"
+ | "totalRepos";
+
+export type ColorablePatchMonStatKey = Extract<
+ PatchMonStatKey,
+ | "hostsNeedingUpdates"
+ | "securityUpdates"
+ | "hostsWithSecurityUpdates"
+ | "upToDateHosts"
+ | "totalOutdatedPackages"
+>;
+
+export type StatSeverity = "green" | "yellow" | "red" | "neutral";
+export type ThresholdMode = "absolute" | "percent";
+
+export interface StatColorContext {
+ totalHosts: number;
+}
+
+export interface StatThresholdRule {
+ direction: "lowerIsBetter" | "higherIsBetter";
+ mode: ThresholdMode;
+ warningAt: number;
+ criticalAt: number;
+ skipYellow?: boolean;
+}
+
+type PatchMonColorOptions = WidgetComponentProps<"patchmon">["options"];
+
+export const COLORABLE_PATCHMON_STATS = [
+ "hostsNeedingUpdates",
+ "securityUpdates",
+ "hostsWithSecurityUpdates",
+ "upToDateHosts",
+ "totalOutdatedPackages",
+] as const satisfies readonly ColorablePatchMonStatKey[];
+
+export const NEUTRAL_PATCHMON_STATS = ["totalHosts", "totalRepos", "recentUpdates24h"] as const;
+
+export const PATCHMON_STAT_COLOR_PRESETS: Record = {
+ hostsNeedingUpdates: {
+ direction: "lowerIsBetter",
+ mode: "absolute",
+ warningAt: 1,
+ criticalAt: 5,
+ },
+ securityUpdates: {
+ direction: "lowerIsBetter",
+ mode: "absolute",
+ warningAt: 1,
+ criticalAt: 10,
+ },
+ hostsWithSecurityUpdates: {
+ direction: "lowerIsBetter",
+ mode: "absolute",
+ warningAt: 1,
+ criticalAt: 1,
+ skipYellow: true,
+ },
+ upToDateHosts: {
+ direction: "higherIsBetter",
+ mode: "percent",
+ warningAt: 90,
+ criticalAt: 90,
+ },
+ totalOutdatedPackages: {
+ direction: "lowerIsBetter",
+ mode: "absolute",
+ warningAt: 1,
+ criticalAt: 50,
+ },
+};
+
+const thresholdModeOptionKey = {
+ hostsNeedingUpdates: "hostsNeedingUpdatesThresholdMode",
+ securityUpdates: "securityUpdatesThresholdMode",
+ hostsWithSecurityUpdates: "hostsWithSecurityUpdatesThresholdMode",
+ upToDateHosts: "upToDateHostsThresholdMode",
+ totalOutdatedPackages: "totalOutdatedPackagesThresholdMode",
+} as const;
+
+const warningAtOptionKey = {
+ hostsNeedingUpdates: "hostsNeedingUpdatesWarningAt",
+ securityUpdates: "securityUpdatesWarningAt",
+ hostsWithSecurityUpdates: "hostsWithSecurityUpdatesWarningAt",
+ upToDateHosts: "upToDateHostsWarningAt",
+ totalOutdatedPackages: "totalOutdatedPackagesWarningAt",
+} as const;
+
+const criticalAtOptionKey = {
+ hostsNeedingUpdates: "hostsNeedingUpdatesCriticalAt",
+ securityUpdates: "securityUpdatesCriticalAt",
+ hostsWithSecurityUpdates: "hostsWithSecurityUpdatesCriticalAt",
+ upToDateHosts: "upToDateHostsCriticalAt",
+ totalOutdatedPackages: "totalOutdatedPackagesCriticalAt",
+} as const;
+
+const isColorableStat = (statKey: PatchMonStatKey): statKey is ColorablePatchMonStatKey =>
+ COLORABLE_PATCHMON_STATS.includes(statKey as ColorablePatchMonStatKey);
+
+const getComparableValue = (
+ value: number,
+ mode: ThresholdMode,
+ context: StatColorContext,
+ direction: StatThresholdRule["direction"],
+): number => {
+ if (mode === "absolute") {
+ return value;
+ }
+
+ if (context.totalHosts <= 0) {
+ if (direction === "higherIsBetter") {
+ return 100;
+ }
+
+ return value > 0 ? 100 : 0;
+ }
+
+ return (value / context.totalHosts) * 100;
+};
+
+const resolveLowerIsBetter = (comparable: number, rule: StatThresholdRule): StatSeverity => {
+ if (comparable < rule.warningAt) {
+ return "green";
+ }
+
+ if (rule.skipYellow || comparable >= rule.criticalAt) {
+ return "red";
+ }
+
+ return "yellow";
+};
+
+const resolveHigherIsBetter = (
+ value: number,
+ comparable: number,
+ context: StatColorContext,
+ rule: StatThresholdRule,
+): StatSeverity => {
+ if (context.totalHosts > 0 && value >= context.totalHosts) {
+ return "green";
+ }
+
+ if (comparable >= rule.warningAt) {
+ return "green";
+ }
+
+ if (rule.skipYellow || comparable < rule.criticalAt) {
+ return "red";
+ }
+
+ return "yellow";
+};
+
+const getThresholdRule = (statKey: ColorablePatchMonStatKey, options: PatchMonColorOptions): StatThresholdRule => {
+ if (!options.useCustomThresholds) {
+ return PATCHMON_STAT_COLOR_PRESETS[statKey];
+ }
+
+ const mode = options[thresholdModeOptionKey[statKey]] as ThresholdMode;
+ const warningAt = clampPercentThreshold(options[warningAtOptionKey[statKey]] as number, mode);
+ const criticalAt = clampPercentThreshold(options[criticalAtOptionKey[statKey]] as number, mode);
+ const preset = PATCHMON_STAT_COLOR_PRESETS[statKey];
+
+ return {
+ direction: preset.direction,
+ mode,
+ warningAt,
+ criticalAt,
+ skipYellow: preset.skipYellow && warningAt === criticalAt,
+ };
+};
+
+export const resolveStatColor = (
+ statKey: PatchMonStatKey,
+ value: number,
+ context: StatColorContext,
+ options: PatchMonColorOptions,
+): StatSeverity => {
+ if (!options.enableThresholdColors || !isColorableStat(statKey)) {
+ return "neutral";
+ }
+
+ const rule = getThresholdRule(statKey, options);
+ const comparable = getComparableValue(value, rule.mode, context, rule.direction);
+
+ if (rule.direction === "higherIsBetter") {
+ return resolveHigherIsBetter(value, comparable, context, rule);
+ }
+
+ return resolveLowerIsBetter(comparable, rule);
+};
+
+export const severityToMantineColor = (severity: StatSeverity): string =>
+ severity === "neutral" ? "var(--mantine-primary-color-filled)" : severity;
+
+export const severityToMantineBgColor = (severity: StatSeverity): string => {
+ if (severity === "neutral") return "light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6))";
+ return `var(--mantine-color-${severity}-light)`;
+};
+
+export const severityToIconColor = (severity: StatSeverity): string => {
+ if (severity === "neutral") return "var(--mantine-color-dimmed)";
+ return `var(--mantine-color-${severity}-6)`;
+};
diff --git a/packages/widgets/src/patchmon/test/layout-utils.spec.ts b/packages/widgets/src/patchmon/test/layout-utils.spec.ts
new file mode 100644
index 000000000..b2a486c67
--- /dev/null
+++ b/packages/widgets/src/patchmon/test/layout-utils.spec.ts
@@ -0,0 +1,36 @@
+import { describe, expect, test } from "vitest";
+
+import { getGridCols, shouldShowComplianceHeroText } from "../layout-utils";
+
+describe("getGridCols", () => {
+ test("returns 1 column for narrow widths", () => {
+ expect(getGridCols(128)).toBe(1);
+ expect(getGridCols(219)).toBe(1);
+ });
+
+ test("returns 2 columns at 220px breakpoint", () => {
+ expect(getGridCols(220)).toBe(2);
+ expect(getGridCols(256)).toBe(2);
+ });
+
+ test("returns 3 columns at 380px breakpoint", () => {
+ expect(getGridCols(380)).toBe(3);
+ });
+
+ test("returns 4 columns at 500px breakpoint", () => {
+ expect(getGridCols(500)).toBe(4);
+ });
+});
+
+describe("shouldShowComplianceHeroText", () => {
+ test("returns false for 1-column-wide layouts", () => {
+ expect(shouldShowComplianceHeroText(128)).toBe(false);
+ expect(shouldShowComplianceHeroText(219)).toBe(false);
+ });
+
+ test("returns true for 2+-column-wide layouts", () => {
+ expect(shouldShowComplianceHeroText(220)).toBe(true);
+ expect(shouldShowComplianceHeroText(256)).toBe(true);
+ expect(shouldShowComplianceHeroText(384)).toBe(true);
+ });
+});
diff --git a/packages/widgets/src/patchmon/test/stat-colors.spec.ts b/packages/widgets/src/patchmon/test/stat-colors.spec.ts
new file mode 100644
index 000000000..12596f499
--- /dev/null
+++ b/packages/widgets/src/patchmon/test/stat-colors.spec.ts
@@ -0,0 +1,171 @@
+import { describe, expect, test } from "vitest";
+
+import type { WidgetComponentProps } from "../../definition";
+import { resolveStatColor } from "../stat-colors";
+
+const defaultOptions = {
+ enableThresholdColors: true,
+ useCustomThresholds: false,
+ showTotalHosts: true,
+ showHostsNeedingUpdates: true,
+ showSecurityUpdates: true,
+ showUpToDateHosts: false,
+ showHostsWithSecurityUpdates: false,
+ showRecentUpdates24h: false,
+ showTotalOutdatedPackages: false,
+ showTotalRepos: false,
+ showOsDistribution: false,
+ osDistributionLimit: "0",
+ showOsVersion: true,
+ hostsNeedingUpdatesThresholdMode: "absolute",
+ hostsNeedingUpdatesWarningAt: 1,
+ hostsNeedingUpdatesCriticalAt: 5,
+ securityUpdatesThresholdMode: "absolute",
+ securityUpdatesWarningAt: 1,
+ securityUpdatesCriticalAt: 10,
+ hostsWithSecurityUpdatesThresholdMode: "absolute",
+ hostsWithSecurityUpdatesWarningAt: 1,
+ hostsWithSecurityUpdatesCriticalAt: 1,
+ upToDateHostsThresholdMode: "percent",
+ upToDateHostsWarningAt: 90,
+ upToDateHostsCriticalAt: 90,
+ totalOutdatedPackagesThresholdMode: "absolute",
+ totalOutdatedPackagesWarningAt: 1,
+ totalOutdatedPackagesCriticalAt: 50,
+ showComplianceHero: true,
+ osDisplayMode: "bars",
+} satisfies WidgetComponentProps<"patchmon">["options"];
+
+const context = { totalHosts: 100 };
+
+describe("resolveStatColor presets", () => {
+ test("hostsNeedingUpdates uses green, yellow, and red boundaries", () => {
+ expect(resolveStatColor("hostsNeedingUpdates", 0, context, defaultOptions)).toBe("green");
+ expect(resolveStatColor("hostsNeedingUpdates", 1, context, defaultOptions)).toBe("yellow");
+ expect(resolveStatColor("hostsNeedingUpdates", 4, context, defaultOptions)).toBe("yellow");
+ expect(resolveStatColor("hostsNeedingUpdates", 5, context, defaultOptions)).toBe("red");
+ });
+
+ test("securityUpdates uses green and yellow for low counts", () => {
+ expect(resolveStatColor("securityUpdates", 0, context, defaultOptions)).toBe("green");
+ expect(resolveStatColor("securityUpdates", 1, context, defaultOptions)).toBe("yellow");
+ expect(resolveStatColor("securityUpdates", 10, context, defaultOptions)).toBe("red");
+ });
+
+ test("hostsWithSecurityUpdates skips yellow", () => {
+ expect(resolveStatColor("hostsWithSecurityUpdates", 0, context, defaultOptions)).toBe("green");
+ expect(resolveStatColor("hostsWithSecurityUpdates", 1, context, defaultOptions)).toBe("red");
+ });
+
+ test("upToDateHosts uses percent of total hosts", () => {
+ expect(resolveStatColor("upToDateHosts", 100, context, defaultOptions)).toBe("green");
+ expect(resolveStatColor("upToDateHosts", 95, context, defaultOptions)).toBe("green");
+ expect(resolveStatColor("upToDateHosts", 90, context, defaultOptions)).toBe("green");
+ expect(resolveStatColor("upToDateHosts", 80, context, defaultOptions)).toBe("red");
+ });
+
+ test("neutral stats ignore threshold coloring", () => {
+ expect(resolveStatColor("totalHosts", 100, context, defaultOptions)).toBe("neutral");
+ expect(resolveStatColor("totalRepos", 12, context, defaultOptions)).toBe("neutral");
+ expect(resolveStatColor("recentUpdates24h", 34, context, defaultOptions)).toBe("neutral");
+ });
+});
+
+describe("resolveStatColor options", () => {
+ test("returns neutral when threshold colors are disabled", () => {
+ expect(
+ resolveStatColor("hostsNeedingUpdates", 10, context, {
+ ...defaultOptions,
+ enableThresholdColors: false,
+ }),
+ ).toBe("neutral");
+ });
+
+ test("supports custom absolute thresholds", () => {
+ expect(
+ resolveStatColor("hostsNeedingUpdates", 4, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ hostsNeedingUpdatesWarningAt: 5,
+ hostsNeedingUpdatesCriticalAt: 10,
+ }),
+ ).toBe("green");
+ });
+
+ test("supports custom percent thresholds for lower-is-better stats", () => {
+ expect(
+ resolveStatColor("hostsNeedingUpdates", 5, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ hostsNeedingUpdatesThresholdMode: "percent",
+ hostsNeedingUpdatesWarningAt: 10,
+ hostsNeedingUpdatesCriticalAt: 20,
+ }),
+ ).toBe("green");
+
+ expect(
+ resolveStatColor("hostsNeedingUpdates", 15, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ hostsNeedingUpdatesThresholdMode: "percent",
+ hostsNeedingUpdatesWarningAt: 10,
+ hostsNeedingUpdatesCriticalAt: 20,
+ }),
+ ).toBe("yellow");
+ });
+
+ test("handles zero total hosts for percent-based stats", () => {
+ expect(resolveStatColor("upToDateHosts", 0, { totalHosts: 0 }, defaultOptions)).toBe("green");
+ expect(
+ resolveStatColor("hostsNeedingUpdates", 1, { totalHosts: 0 }, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ hostsNeedingUpdatesThresholdMode: "percent",
+ }),
+ ).toBe("red");
+ });
+
+ test("clamps invalid percent thresholds when resolving colors", () => {
+ expect(
+ resolveStatColor("hostsNeedingUpdates", 50, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ hostsNeedingUpdatesThresholdMode: "percent",
+ hostsNeedingUpdatesWarningAt: 40,
+ hostsNeedingUpdatesCriticalAt: 200,
+ }),
+ ).toBe("yellow");
+ });
+
+ test("supports custom absolute thresholds for higher-is-better stats", () => {
+ expect(
+ resolveStatColor("upToDateHosts", 85, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ upToDateHostsThresholdMode: "absolute",
+ upToDateHostsWarningAt: 80,
+ upToDateHostsCriticalAt: 60,
+ }),
+ ).toBe("green");
+
+ expect(
+ resolveStatColor("upToDateHosts", 70, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ upToDateHostsThresholdMode: "absolute",
+ upToDateHostsWarningAt: 80,
+ upToDateHostsCriticalAt: 60,
+ }),
+ ).toBe("yellow");
+
+ expect(
+ resolveStatColor("upToDateHosts", 50, context, {
+ ...defaultOptions,
+ useCustomThresholds: true,
+ upToDateHostsThresholdMode: "absolute",
+ upToDateHostsWarningAt: 80,
+ upToDateHostsCriticalAt: 60,
+ }),
+ ).toBe("red");
+ });
+});
diff --git a/packages/widgets/src/patchmon/test/threshold-validation.spec.ts b/packages/widgets/src/patchmon/test/threshold-validation.spec.ts
new file mode 100644
index 000000000..00dafba3b
--- /dev/null
+++ b/packages/widgets/src/patchmon/test/threshold-validation.spec.ts
@@ -0,0 +1,97 @@
+import { describe, expect, test } from "vitest";
+import { z } from "zod/v4";
+
+import { clampPercentThreshold, patchmonOptionsSuperRefine } from "../threshold-validation";
+
+const baseOptions = {
+ enableThresholdColors: true,
+ useCustomThresholds: true,
+ hostsNeedingUpdatesThresholdMode: "percent",
+ hostsNeedingUpdatesWarningAt: 10,
+ hostsNeedingUpdatesCriticalAt: 20,
+ securityUpdatesThresholdMode: "absolute",
+ securityUpdatesWarningAt: 1,
+ securityUpdatesCriticalAt: 10,
+ hostsWithSecurityUpdatesThresholdMode: "absolute",
+ hostsWithSecurityUpdatesWarningAt: 1,
+ hostsWithSecurityUpdatesCriticalAt: 1,
+ upToDateHostsThresholdMode: "percent",
+ upToDateHostsWarningAt: 90,
+ upToDateHostsCriticalAt: 90,
+ totalOutdatedPackagesThresholdMode: "absolute",
+ totalOutdatedPackagesWarningAt: 1,
+ totalOutdatedPackagesCriticalAt: 50,
+};
+
+const optionsSchema = z.object({
+ hostsNeedingUpdatesWarningAt: z.number().int().min(0),
+ hostsNeedingUpdatesCriticalAt: z.number().int().min(0),
+ securityUpdatesWarningAt: z.number().int().min(0),
+ securityUpdatesCriticalAt: z.number().int().min(0),
+ hostsWithSecurityUpdatesWarningAt: z.number().int().min(0),
+ hostsWithSecurityUpdatesCriticalAt: z.number().int().min(0),
+ upToDateHostsWarningAt: z.number().int().min(0),
+ upToDateHostsCriticalAt: z.number().int().min(0),
+ totalOutdatedPackagesWarningAt: z.number().int().min(0),
+ totalOutdatedPackagesCriticalAt: z.number().int().min(0),
+ enableThresholdColors: z.boolean(),
+ useCustomThresholds: z.boolean(),
+ hostsNeedingUpdatesThresholdMode: z.enum(["absolute", "percent"]),
+ securityUpdatesThresholdMode: z.enum(["absolute", "percent"]),
+ hostsWithSecurityUpdatesThresholdMode: z.enum(["absolute", "percent"]),
+ upToDateHostsThresholdMode: z.enum(["absolute", "percent"]),
+ totalOutdatedPackagesThresholdMode: z.enum(["absolute", "percent"]),
+}).superRefine(patchmonOptionsSuperRefine);
+
+describe("patchmonOptionsSuperRefine", () => {
+ test("accepts percent thresholds within 0-100", () => {
+ const result = optionsSchema.safeParse(baseOptions);
+
+ expect(result.success).toBe(true);
+ });
+
+ test("rejects percent thresholds above 100", () => {
+ const result = optionsSchema.safeParse({
+ ...baseOptions,
+ hostsNeedingUpdatesWarningAt: 101,
+ });
+
+ expect(result.success).toBe(false);
+ if (!result.success) {
+ expect(result.error.issues.some((issue) => issue.path.includes("hostsNeedingUpdatesWarningAt"))).toBe(true);
+ }
+ });
+
+ test("allows absolute thresholds above 100", () => {
+ const result = optionsSchema.safeParse({
+ ...baseOptions,
+ hostsNeedingUpdatesThresholdMode: "absolute",
+ hostsNeedingUpdatesWarningAt: 150,
+ hostsNeedingUpdatesCriticalAt: 200,
+ });
+
+ expect(result.success).toBe(true);
+ });
+
+ test("skips validation when custom thresholds are disabled", () => {
+ const result = optionsSchema.safeParse({
+ ...baseOptions,
+ useCustomThresholds: false,
+ hostsNeedingUpdatesWarningAt: 500,
+ });
+
+ expect(result.success).toBe(true);
+ });
+});
+
+describe("clampPercentThreshold", () => {
+ test("clamps percent values to 0-100", () => {
+ expect(clampPercentThreshold(150, "percent")).toBe(100);
+ expect(clampPercentThreshold(-5, "percent")).toBe(0);
+ expect(clampPercentThreshold(42.9, "percent")).toBe(42);
+ });
+
+ test("leaves absolute values unchanged", () => {
+ expect(clampPercentThreshold(150, "absolute")).toBe(150);
+ });
+});
diff --git a/packages/widgets/src/patchmon/threshold-validation.ts b/packages/widgets/src/patchmon/threshold-validation.ts
new file mode 100644
index 000000000..965c8f263
--- /dev/null
+++ b/packages/widgets/src/patchmon/threshold-validation.ts
@@ -0,0 +1,59 @@
+import type { RefinementCtx } from "zod/v4";
+import { z } from "zod/v4";
+
+import type { ThresholdMode } from "./stat-colors";
+
+const percentThresholdSchema = z.number().int().min(0).max(100);
+
+export const PATCHMON_THRESHOLD_PAIRS = [
+ {
+ mode: "hostsNeedingUpdatesThresholdMode",
+ warningAt: "hostsNeedingUpdatesWarningAt",
+ criticalAt: "hostsNeedingUpdatesCriticalAt",
+ },
+ {
+ mode: "securityUpdatesThresholdMode",
+ warningAt: "securityUpdatesWarningAt",
+ criticalAt: "securityUpdatesCriticalAt",
+ },
+ {
+ mode: "hostsWithSecurityUpdatesThresholdMode",
+ warningAt: "hostsWithSecurityUpdatesWarningAt",
+ criticalAt: "hostsWithSecurityUpdatesCriticalAt",
+ },
+ {
+ mode: "upToDateHostsThresholdMode",
+ warningAt: "upToDateHostsWarningAt",
+ criticalAt: "upToDateHostsCriticalAt",
+ },
+ {
+ mode: "totalOutdatedPackagesThresholdMode",
+ warningAt: "totalOutdatedPackagesWarningAt",
+ criticalAt: "totalOutdatedPackagesCriticalAt",
+ },
+] as const;
+
+export const clampPercentThreshold = (value: number, mode: ThresholdMode): number =>
+ mode === "percent" ? Math.min(100, Math.max(0, Math.trunc(value))) : value;
+
+export const patchmonOptionsSuperRefine = (data: Record, ctx: RefinementCtx) => {
+ if (!data.enableThresholdColors || !data.useCustomThresholds) {
+ return;
+ }
+
+ for (const { mode, warningAt, criticalAt } of PATCHMON_THRESHOLD_PAIRS) {
+ if (data[mode] !== "percent") {
+ continue;
+ }
+
+ for (const key of [warningAt, criticalAt] as const) {
+ const result = percentThresholdSchema.safeParse(data[key]);
+
+ if (!result.success) {
+ for (const issue of result.error.issues) {
+ ctx.addIssue({ ...issue, path: [key] });
+ }
+ }
+ }
+ }
+};
diff --git a/packages/widgets/src/storage-volume-options.ts b/packages/widgets/src/storage-volume-options.ts
new file mode 100644
index 000000000..202da2c8a
--- /dev/null
+++ b/packages/widgets/src/storage-volume-options.ts
@@ -0,0 +1,39 @@
+import { clientApi } from "@homarr/api/client";
+
+import { toScopedStorageVolumeValue } from "./filter-storage-volumes";
+
+export const createStorageVolumeMultiSelectOptions = () => ({
+ defaultValue: [] as string[],
+ withDescription: true,
+ useOptions: (integrationIds: string[]) => {
+ const queryResults = clientApi.useQueries((queryBuilder) =>
+ integrationIds.map((integrationId) =>
+ queryBuilder.widget.healthMonitoring.listStorageVolumes({
+ integrationId,
+ }),
+ ),
+ );
+
+ const isPending = queryResults.some((queryResult) => queryResult.isPending);
+ const isError = queryResults.every((queryResult) => queryResult.isError);
+ const options = queryResults.flatMap((queryResult, index) => {
+ const integrationId = integrationIds[index];
+ if (!integrationId) {
+ return [];
+ }
+
+ return (queryResult.data ?? []).map((option) => ({
+ label: option.label,
+ value: toScopedStorageVolumeValue(integrationId, option.value),
+ }));
+ });
+
+ const uniqueOptions = [...new Map(options.map((option) => [option.value, option])).values()];
+
+ return {
+ data: uniqueOptions,
+ isPending,
+ isError: isError && uniqueOptions.length === 0,
+ };
+ },
+});
diff --git a/packages/widgets/src/system-disks/component.tsx b/packages/widgets/src/system-disks/component.tsx
index d24a68c37..5f84dd0b4 100644
--- a/packages/widgets/src/system-disks/component.tsx
+++ b/packages/widgets/src/system-disks/component.tsx
@@ -5,11 +5,12 @@ import { Box, Card, Group, Stack, Tooltip, useMantineColorScheme } from "@mantin
import { clientApi } from "@homarr/api/client";
import { useRequiredBoard } from "@homarr/boards/context";
-import { humanFileSize } from "@homarr/common";
+import { formatBytesPair } from "@homarr/common";
import { useI18n } from "@homarr/translation/client";
import { WidgetEmptyState } from "../common/empty-state";
import type { WidgetComponentProps } from "../definition";
+import { filterStorageVolumes } from "../filter-storage-volumes";
import { NoIntegrationDataError } from "../errors/no-data-integration";
type DisplayMode = WidgetComponentProps<"systemDisks">["options"]["displayMode"];
@@ -19,11 +20,13 @@ const getDisplayText = (item: { used: string; available: string; percentage: num
case "percentage":
return `${Math.round(item.percentage)}%`;
case "absolute": {
+ const usedInBytes = Number(item.used);
const availableInBytes = Number(item.available);
- const availableText = Number.isFinite(availableInBytes)
- ? humanFileSize(Math.round(availableInBytes))
- : item.available;
- return `${item.used} / ${availableText}`;
+ if (Number.isFinite(usedInBytes) && Number.isFinite(availableInBytes)) {
+ const { used, available } = formatBytesPair(usedInBytes, availableInBytes);
+ return `${used} / ${available}`;
+ }
+ return `${item.used} / ${item.available}`;
}
case "free":
return `${Math.round(100 - item.percentage)}% free`;
@@ -123,12 +126,17 @@ export default function SystemResources({ integrationIds, options }: WidgetCompo
const lastItem = data.at(-1);
if (!lastItem) return ;
- const { fileSystem, smart } = lastItem.healthInfo;
- if (fileSystem.length === 0) {
+ const rawFileSystem = lastItem.healthInfo.fileSystem;
+ if (rawFileSystem.length === 0) {
throw new NoIntegrationDataError();
}
+ const fileSystem = filterStorageVolumes(rawFileSystem, options.visibleStorageVolumes, lastItem.integrationId);
+ const smart = filterStorageVolumes(lastItem.healthInfo.smart, options.visibleStorageVolumes, lastItem.integrationId);
+
+ if (fileSystem.length === 0) return ;
+
return (
{fileSystem.map((item) => {
diff --git a/packages/widgets/src/system-disks/index.ts b/packages/widgets/src/system-disks/index.ts
index 99ea9a70a..61e4a5c05 100644
--- a/packages/widgets/src/system-disks/index.ts
+++ b/packages/widgets/src/system-disks/index.ts
@@ -2,21 +2,32 @@ import { IconServer2 } from "@tabler/icons-react";
import { createWidgetDefinition } from "../definition";
import { optionsBuilder } from "../options";
+import { createStorageVolumeMultiSelectOptions } from "../storage-volume-options";
export const { definition, componentLoader } = createWidgetDefinition("systemDisks", {
icon: IconServer2,
- supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid"],
+ supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid", "synology"],
createOptions() {
- return optionsBuilder.from((factory) => ({
- showTemperatureIfAvailable: factory.switch({ defaultValue: true }),
- displayMode: factory.select({
- options: (["percentage", "absolute", "free"] as const).map((value) => ({
- value,
- label: (t) => t(`widget.systemDisks.option.displayMode.option.${value}.label`),
- })),
- defaultValue: "percentage",
+ return optionsBuilder.from(
+ (factory) => ({
+ showTemperatureIfAvailable: factory.switch({ defaultValue: true }),
+ displayMode: factory.select({
+ options: (["percentage", "absolute", "free"] as const).map((value) => ({
+ value,
+ label: (t) => t(`widget.systemDisks.option.displayMode.option.${value}.label`),
+ })),
+ defaultValue: "percentage",
+ }),
+ showBackgroundBar: factory.switch({ defaultValue: true }),
+ visibleStorageVolumes: factory.integrationMultiSelect(createStorageVolumeMultiSelectOptions()),
}),
- showBackgroundBar: factory.switch({ defaultValue: true }),
- }));
+ {
+ visibleStorageVolumes: {
+ shouldHide(_, integrationKinds) {
+ return integrationKinds.length === 0 || !integrationKinds.every((kind) => kind === "synology");
+ },
+ },
+ },
+ );
},
}).withDynamicImport(() => import("./component"));
diff --git a/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx b/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx
index 20b01bb58..ffe576e6c 100644
--- a/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx
+++ b/packages/widgets/src/system-resources/chart/combined-network-traffic.tsx
@@ -1,7 +1,7 @@
import { Box, Group, Paper, Stack, Text } from "@mantine/core";
import { IconNetwork } from "@tabler/icons-react";
-import { humanFileSize } from "@homarr/common";
+import { formatByteRate } from "@homarr/common";
import { useScopedI18n } from "@homarr/translation/client";
import type { LabelDisplayModeOption } from "..";
@@ -47,7 +47,7 @@ export const CombinedNetworkTrafficChart = ({
{payloadData.value === undefined ? (
<>N/A>
) : (
- <>{humanFileSize(Math.round(Number(payloadData.value)))}/s>
+ formatByteRate(Math.round(Number(payloadData.value)))
)}
diff --git a/packages/widgets/src/system-resources/chart/memory-chart.tsx b/packages/widgets/src/system-resources/chart/memory-chart.tsx
index 9de519199..b49ea81be 100644
--- a/packages/widgets/src/system-resources/chart/memory-chart.tsx
+++ b/packages/widgets/src/system-resources/chart/memory-chart.tsx
@@ -1,7 +1,7 @@
import { Paper, Text } from "@mantine/core";
import { IconBrain } from "@tabler/icons-react";
-import { humanFileSize } from "@homarr/common";
+import { formatBytesPair } from "@homarr/common";
import { useScopedI18n } from "@homarr/translation/client";
import type { LabelDisplayModeOption } from "..";
@@ -41,11 +41,11 @@ export const SystemResourceMemoryChart = ({
tooltipProps={{
content: ({ payload }) => {
const value = payload[0] ? Number(payload[0].value) : 0;
+ const memory = formatBytesPair(Math.round(value), totalCapacityInBytes);
return (
- {humanFileSize(Math.round(value))} / {humanFileSize(totalCapacityInBytes)} (
- {Math.round((value / totalCapacityInBytes) * 100)}%)
+ {memory.used} / {memory.available} ({Math.round((value / totalCapacityInBytes) * 100)}%)
);
diff --git a/packages/widgets/src/system-resources/chart/network-traffic.tsx b/packages/widgets/src/system-resources/chart/network-traffic.tsx
index 9dd0b6d04..fc3b644b6 100644
--- a/packages/widgets/src/system-resources/chart/network-traffic.tsx
+++ b/packages/widgets/src/system-resources/chart/network-traffic.tsx
@@ -1,7 +1,7 @@
import { Paper, Text } from "@mantine/core";
import { IconArrowDown, IconArrowUp } from "@tabler/icons-react";
-import { humanFileSize } from "@homarr/common";
+import { formatByteRate } from "@homarr/common";
import { useScopedI18n } from "@homarr/translation/client";
import type { LabelDisplayModeOption } from "..";
@@ -32,7 +32,7 @@ export const NetworkTrafficChart = ({
title={isUp ? t("up") : t("down")}
icon={isUp ? IconArrowUp : IconArrowDown}
yAxisProps={{ domain: [0, upperBound] }}
- lastValue={`${humanFileSize(Math.round(max))}/s`}
+ lastValue={formatByteRate(Math.round(max))}
chartType={hasShadow ? "area" : "line"}
labelDisplayMode={labelDisplayMode}
tooltipProps={{
@@ -41,7 +41,7 @@ export const NetworkTrafficChart = ({
return (
- {humanFileSize(Math.round(value))}/s
+ {formatByteRate(Math.round(value))}
);
diff --git a/packages/widgets/src/system-resources/index.ts b/packages/widgets/src/system-resources/index.ts
index 68fffd4ed..8d4837187 100644
--- a/packages/widgets/src/system-resources/index.ts
+++ b/packages/widgets/src/system-resources/index.ts
@@ -14,7 +14,7 @@ const labelDisplayModeOptions = {
export const { definition, componentLoader } = createWidgetDefinition("systemResources", {
icon: IconGraphFilled,
- supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid", "glances"],
+ supportedIntegrations: ["dashDot", "openmediavault", "truenas", "unraid", "glances", "synology"],
createOptions() {
return optionsBuilder.from((factory) => ({
hasShadow: factory.switch({ defaultValue: true }),
diff --git a/packages/widgets/src/traefik/component.module.css b/packages/widgets/src/traefik/component.module.css
new file mode 100644
index 000000000..59bede44b
--- /dev/null
+++ b/packages/widgets/src/traefik/component.module.css
@@ -0,0 +1,125 @@
+.root {
+ container-type: inline-size;
+ display: flex;
+ flex-direction: column;
+ min-height: 100%;
+ padding: clamp(6px, 3cqi, 12px);
+ gap: clamp(6px, 3cqi, 12px);
+}
+
+.titleBlock {
+ min-width: 0;
+}
+
+.title {
+ font-size: clamp(12px, 4cqi, 15px);
+ font-weight: 700;
+ line-height: 1.2;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.subtitle {
+ font-size: clamp(9px, 3cqi, 12px);
+ color: var(--mantine-color-dimmed);
+ line-height: 1.2;
+}
+
+.hero {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: clamp(6px, 3cqi, 10px);
+}
+
+.metric {
+ display: flex;
+ align-items: center;
+ min-width: 0;
+ gap: clamp(5px, 2cqi, 8px);
+ padding: clamp(6px, 3cqi, 10px);
+ border-radius: var(--mantine-radius-sm);
+ background: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-6));
+}
+
+.metricIcon {
+ flex-shrink: 0;
+ color: var(--mantine-color-teal-6);
+}
+
+.metricText {
+ min-width: 0;
+}
+
+.metricValue {
+ font-size: clamp(16px, 7cqi, 24px);
+ font-weight: 800;
+ line-height: 1;
+}
+
+.metricLabel {
+ font-size: clamp(8px, 2.8cqi, 11px);
+ color: var(--mantine-color-dimmed);
+ line-height: 1.2;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.protocolGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
+ gap: clamp(6px, 3cqi, 10px);
+}
+
+.protocolCard {
+ min-width: 0;
+ padding: clamp(6px, 3cqi, 10px);
+ border: 1px solid light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-4));
+ border-radius: var(--mantine-radius-sm);
+}
+
+.protocolTitle {
+ font-size: clamp(10px, 3.5cqi, 13px);
+ font-weight: 700;
+ line-height: 1.2;
+ text-transform: uppercase;
+}
+
+.protocolRows {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+ margin-top: 6px;
+}
+
+.protocolRow {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ min-width: 0;
+ gap: 6px;
+}
+
+.protocolLabel {
+ min-width: 0;
+ color: var(--mantine-color-dimmed);
+ font-size: clamp(9px, 3cqi, 12px);
+}
+
+.protocolLabel p {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.counts {
+ flex-shrink: 0;
+ font-size: clamp(10px, 3.5cqi, 13px);
+}
+
+.entryPoints {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 4px;
+}
diff --git a/packages/widgets/src/traefik/component.tsx b/packages/widgets/src/traefik/component.tsx
new file mode 100644
index 000000000..69ec3e811
--- /dev/null
+++ b/packages/widgets/src/traefik/component.tsx
@@ -0,0 +1,259 @@
+"use client";
+
+import type { ReactNode } from "react";
+import { Badge, Group, ScrollArea, Text } from "@mantine/core";
+import {
+ IconAlertTriangle,
+ IconCircleCheck,
+ IconDoorEnter,
+ IconRoute,
+ IconServer,
+ IconStack2,
+} from "@tabler/icons-react";
+
+import { clientApi } from "@homarr/api/client";
+import type { TraefikDashboardData, TraefikProtocolSummary, TraefikResourceSummary } from "@homarr/integrations/types";
+import { useScopedI18n } from "@homarr/translation/client";
+
+import { WidgetEmptyState } from "../common/empty-state";
+import type { WidgetComponentProps } from "../definition";
+import { NoIntegrationDataError } from "../errors/no-data-integration";
+import classes from "./component.module.css";
+
+const emptySummary: TraefikResourceSummary = {
+ total: 0,
+ enabled: 0,
+ warnings: 0,
+ errors: 0,
+};
+
+const emptyProtocol: TraefikProtocolSummary = {
+ routers: emptySummary,
+ services: emptySummary,
+ middlewares: emptySummary,
+};
+
+const emptyDashboard: TraefikDashboardData = {
+ version: null,
+ entryPoints: [],
+ http: emptyProtocol,
+ tcp: emptyProtocol,
+ udp: {
+ routers: emptySummary,
+ services: emptySummary,
+ },
+};
+
+type ProtocolKey = "http" | "tcp" | "udp";
+type ResourceKey = "routers" | "services" | "middlewares";
+
+export default function TraefikWidget({ integrationIds, options, width }: WidgetComponentProps<"traefik">) {
+ if (integrationIds.length === 0) {
+ throw new NoIntegrationDataError();
+ }
+
+ const t = useScopedI18n("widget.traefik");
+ const { data } = clientApi.widget.traefik.getDashboard.useQuery({ integrationIds });
+
+ if (!data) return ;
+
+ const combined = data.reduce(
+ (acc, item) => ({
+ version: acc.version ?? item.dashboard.version,
+ entryPoints: [...acc.entryPoints, ...item.dashboard.entryPoints],
+ http: combineProtocol(acc.http, item.dashboard.http),
+ tcp: combineProtocol(acc.tcp, item.dashboard.tcp),
+ udp: {
+ routers: combineSummary(acc.udp.routers, item.dashboard.udp.routers),
+ services: combineSummary(acc.udp.services, item.dashboard.udp.services),
+ },
+ }),
+ emptyDashboard,
+ );
+
+ const totalRouters = combined.http.routers.total + combined.tcp.routers.total + combined.udp.routers.total;
+ const totalErrors = getProtocolErrors(combined.http) + getProtocolErrors(combined.tcp) + getUdpErrors(combined.udp);
+ const totalWarnings =
+ getProtocolWarnings(combined.http) + getProtocolWarnings(combined.tcp) + getUdpWarnings(combined.udp);
+ const protocolKeys: ProtocolKey[] = ["http"];
+ if (options.showTcp) protocolKeys.push("tcp");
+ if (options.showUdp) protocolKeys.push("udp");
+
+ return (
+
+
+
+
+ {data.length === 1 ? data[0]?.integrationName : t("instances")}
+ {combined.version ? `v${combined.version}` : t("versionUnknown")}
+
+
+
+
+
+ }
+ label={t("summary.routers")}
+ value={totalRouters}
+ />
+ }
+ label={t("summary.entryPoints")}
+ value={dedupe(combined.entryPoints).length}
+ />
+
+
+
+ {protocolKeys.map((protocol) => (
+
+ ))}
+
+
+ {options.showEntryPoints && combined.entryPoints.length > 0 && (
+
+ {dedupe(combined.entryPoints)
+ .slice(0, getEntryPointLimit(width))
+ .map((entryPoint) => (
+
+ {entryPoint}
+
+ ))}
+
+ )}
+
+
+ );
+}
+
+function ProtocolCard({ protocol, data }: { protocol: ProtocolKey; data: TraefikDashboardData[ProtocolKey] }) {
+ const t = useScopedI18n("widget.traefik");
+ const rows: { key: ResourceKey; icon: typeof IconRoute; summary: TraefikResourceSummary }[] = [
+ { key: "routers", icon: IconRoute, summary: data.routers },
+ { key: "services", icon: IconServer, summary: data.services },
+ ];
+ if ("middlewares" in data) {
+ rows.push({ key: "middlewares", icon: IconStack2, summary: data.middlewares });
+ }
+
+ return (
+
+
{protocol.toUpperCase()}
+
+ {rows.map(({ key, icon: Icon, summary }) => (
+
+
+
+ {t(`resource.${key}`)}
+
+
+
+ ))}
+
+
+ );
+}
+
+function StatusCount({ summary }: { summary: TraefikResourceSummary }) {
+ return (
+
+ {summary.total}
+ {summary.errors > 0 && (
+
+ {summary.errors}
+
+ )}
+ {summary.warnings > 0 && (
+
+ {summary.warnings}
+
+ )}
+
+ );
+}
+
+function SummaryMetric({ icon, label, value }: { icon: ReactNode; label: string; value: number }) {
+ return (
+
+
{icon}
+
+ {value}
+ {label}
+
+
+ );
+}
+
+function HealthBadge({ errors, warnings }: { errors: number; warnings: number }) {
+ const t = useScopedI18n("widget.traefik");
+
+ if (errors > 0) {
+ return (
+ } radius="sm">
+ {t("status.errors", { count: errors })}
+
+ );
+ }
+
+ if (warnings > 0) {
+ return (
+ } radius="sm">
+ {t("status.warnings", { count: warnings })}
+
+ );
+ }
+
+ return (
+ } radius="sm">
+ {t("status.healthy")}
+
+ );
+}
+
+function combineProtocol(left: TraefikProtocolSummary, right: TraefikProtocolSummary): TraefikProtocolSummary {
+ return {
+ routers: combineSummary(left.routers, right.routers),
+ services: combineSummary(left.services, right.services),
+ middlewares: combineSummary(left.middlewares, right.middlewares),
+ };
+}
+
+function combineSummary(left: TraefikResourceSummary, right: TraefikResourceSummary): TraefikResourceSummary {
+ return {
+ total: left.total + right.total,
+ enabled: left.enabled + right.enabled,
+ warnings: left.warnings + right.warnings,
+ errors: left.errors + right.errors,
+ };
+}
+
+function getProtocolErrors(protocol: TraefikProtocolSummary) {
+ return protocol.routers.errors + protocol.services.errors + protocol.middlewares.errors;
+}
+
+function getProtocolWarnings(protocol: TraefikProtocolSummary) {
+ return protocol.routers.warnings + protocol.services.warnings + protocol.middlewares.warnings;
+}
+
+function getUdpErrors(protocol: TraefikDashboardData["udp"]) {
+ return protocol.routers.errors + protocol.services.errors;
+}
+
+function getUdpWarnings(protocol: TraefikDashboardData["udp"]) {
+ return protocol.routers.warnings + protocol.services.warnings;
+}
+
+function dedupe(values: string[]) {
+ return Array.from(new Set(values));
+}
+
+function getHeroIconSize(width: number) {
+ if (width < 220) return 16;
+ if (width < 340) return 18;
+ return 22;
+}
+
+function getEntryPointLimit(width: number) {
+ if (width < 220) return 2;
+ if (width < 360) return 4;
+ return 8;
+}
diff --git a/packages/widgets/src/traefik/index.ts b/packages/widgets/src/traefik/index.ts
new file mode 100644
index 000000000..854075121
--- /dev/null
+++ b/packages/widgets/src/traefik/index.ts
@@ -0,0 +1,28 @@
+import { IconRoute, IconRouteOff } from "@tabler/icons-react";
+
+import { createWidgetDefinition } from "../definition";
+import { optionsBuilder } from "../options";
+
+export const { definition, componentLoader } = createWidgetDefinition("traefik", {
+ icon: IconRoute,
+ createOptions() {
+ return optionsBuilder.from((factory) => ({
+ showTcp: factory.switch({
+ defaultValue: true,
+ }),
+ showUdp: factory.switch({
+ defaultValue: true,
+ }),
+ showEntryPoints: factory.switch({
+ defaultValue: true,
+ }),
+ }));
+ },
+ supportedIntegrations: ["traefik"],
+ errors: {
+ INTERNAL_SERVER_ERROR: {
+ icon: IconRouteOff,
+ message: (t) => t("widget.traefik.error.internalServerError"),
+ },
+ },
+}).withDynamicImport(() => import("./component"));
diff --git a/packages/widgets/src/ups/component.tsx b/packages/widgets/src/ups/component.tsx
index 2cb95abbb..2b3d93bd9 100644
--- a/packages/widgets/src/ups/component.tsx
+++ b/packages/widgets/src/ups/component.tsx
@@ -10,7 +10,6 @@ import { useScopedI18n } from "@homarr/translation/client";
import { WidgetEmptyState } from "../common/empty-state";
import type { WidgetComponentProps } from "../definition";
-import { NoIntegrationDataError } from "../errors/no-data-integration";
import { NoIntegrationSelectedError } from "../errors/no-integration-selected";
const statusColors: Record = {
@@ -48,7 +47,7 @@ function UpsContent({ integrationIds, options, width }: UpsContentProps) {
);
if (devices.length === 0) {
- throw new NoIntegrationDataError();
+ return ;
}
// Pick a layout from the available width so the widget stays useful at any size. The surrounding
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6b3bf5a5b..b48eb9d0e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -52,7 +52,7 @@ catalogs:
specifier: ^2.6.0
version: 2.6.0
'@immich/sdk':
- specifier: ^3.0.0
+ specifier: ^3.0.1
version: 3.0.1
'@jellyfin/sdk':
specifier: ^0.13.0
@@ -103,8 +103,8 @@ catalogs:
specifier: ^1.61.1
version: 1.61.1
'@scalar/api-reference-react':
- specifier: ^0.9.50
- version: 0.9.52
+ specifier: ^0.9.54
+ version: 0.9.54
'@semantic-release/changelog':
specifier: ^6.0.3
version: 6.0.3
@@ -115,8 +115,8 @@ catalogs:
specifier: ^10.0.1
version: 10.0.1
'@semantic-release/github':
- specifier: ^12.0.8
- version: 12.0.8
+ specifier: ^12.0.9
+ version: 12.0.9
'@semantic-release/npm':
specifier: ^13.1.5
version: 13.1.5
@@ -154,53 +154,53 @@ catalogs:
specifier: ^12.0.4
version: 12.0.4
'@tiptap/extension-color':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-highlight':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-image':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-link':
- specifier: ^3.27.1
- version: 3.27.1
+ specifier: ^3.27.3
+ version: 3.27.3
'@tiptap/extension-placeholder':
- specifier: ^3.27.1
- version: 3.27.1
+ specifier: ^3.27.3
+ version: 3.27.3
'@tiptap/extension-table':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-table-cell':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-table-header':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-table-row':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-task-item':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-task-list':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-text-align':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-text-style':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/extension-underline':
- specifier: 3.27.1
- version: 3.27.1
+ specifier: 3.27.3
+ version: 3.27.3
'@tiptap/react':
- specifier: ^3.27.1
- version: 3.27.1
+ specifier: ^3.27.3
+ version: 3.27.3
'@tiptap/starter-kit':
- specifier: ^3.27.1
- version: 3.27.1
+ specifier: ^3.27.3
+ version: 3.27.3
'@trpc/client':
specifier: ^11.18.0
version: 11.18.0
@@ -217,8 +217,8 @@ catalogs:
specifier: ^11.18.0
version: 11.18.0
'@turbo/gen':
- specifier: ^2.10.2
- version: 2.10.2
+ specifier: ^2.10.4
+ version: 2.10.4
'@types/adm-zip':
specifier: 0.5.8
version: 0.5.8
@@ -244,8 +244,8 @@ catalogs:
specifier: ^4.0.1
version: 4.0.1
'@types/node':
- specifier: ^24.13.2
- version: 24.13.2
+ specifier: ^24.13.3
+ version: 24.13.3
'@types/node-unifi':
specifier: ^2.5.1
version: 2.5.1
@@ -313,11 +313,11 @@ catalogs:
specifier: ^10.0.3
version: 10.0.3
conventional-changelog-conventionalcommits:
- specifier: ^10.0.0
+ specifier: ^10.2.0
version: 10.2.0
cookie:
- specifier: 2.0.0
- version: 2.0.0
+ specifier: 2.0.1
+ version: 2.0.1
cookies:
specifier: ^0.9.1
version: 0.9.1
@@ -359,7 +359,7 @@ catalogs:
version: 0.8.3
esbuild:
specifier: ^0.28.0
- version: 0.28.1
+ version: 0.28.0
fast-xml-parser:
specifier: ^5.9.3
version: 5.9.3
@@ -403,7 +403,7 @@ catalogs:
specifier: ^4.5.0
version: 4.5.0
lucide-react:
- specifier: ^1.22.0
+ specifier: ^1.23.0
version: 1.23.0
mantine-datatable:
specifier: ^9.3.1
@@ -421,8 +421,8 @@ catalogs:
specifier: 3.22.5
version: 3.22.5
next:
- specifier: 16.2.9
- version: 16.2.9
+ specifier: 16.2.10
+ version: 16.2.10
next-auth:
specifier: 5.0.0-beta.31
version: 5.0.0-beta.31
@@ -436,8 +436,8 @@ catalogs:
specifier: ^5.0.5
version: 5.0.5
oxfmt:
- specifier: ^0.57.0
- version: 0.57.0
+ specifier: ^0.58.0
+ version: 0.58.0
oxlint:
specifier: ^1.72.0
version: 1.72.0
@@ -451,10 +451,10 @@ catalogs:
specifier: ^1.18.0
version: 1.18.0
posthog-js:
- specifier: ^1.396.3
- version: 1.396.5
+ specifier: ^1.398.2
+ version: 1.399.0
posthog-node:
- specifier: ^5.39.1
+ specifier: ^5.39.2
version: 5.39.4
prismjs:
specifier: ^1.30.0
@@ -526,11 +526,11 @@ catalogs:
specifier: 4.20.4
version: 4.20.4
turbo:
- specifier: ^2.10.2
- version: 2.10.2
+ specifier: ^2.10.4
+ version: 2.10.4
typescript:
- specifier: ^7.0.1-rc
- version: 7.0.1-rc
+ specifier: ^6.0.3
+ version: 6.0.3
undici:
specifier: 7.28.0
version: 7.28.0
@@ -579,7 +579,7 @@ overrides:
brace-expansion@>=1.0.0 <=1.1.11: '>=5.0.7'
esbuild@<=0.24.2: '>=0.28.1'
form-data@>=4.0.0 <4.0.4: '>=4.0.6'
- hono@<4.6.5: '>=4.12.27'
+ hono@<4.6.5: '>=4.12.28'
linkifyjs@<4.3.2: '>=4.3.3'
nanoid@>=4.0.0 <5.0.9: '>=5.1.16'
prismjs@<1.30.0: '>=1.30.0'
@@ -590,7 +590,7 @@ overrides:
tar-fs@>=3.0.0 <3.0.9: '>=3.1.3'
tar-fs@>=2.0.0 <2.1.3: '>=3.1.3'
tmp@<=0.2.3: '>=0.2.7'
- vite@>=5.0.0 <=5.4.18: '>=8.1.2'
+ vite@>=5.0.0 <=5.4.18: '>=8.1.3'
patchedDependencies:
'@types/node-unifi': 5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5
@@ -609,31 +609,31 @@ importers:
version: 1.61.1
'@semantic-release/changelog':
specifier: 'catalog:'
- version: 6.0.3(semantic-release@25.0.5(typescript@7.0.1-rc))
+ version: 6.0.3(semantic-release@25.0.5(typescript@6.0.3))
'@semantic-release/commit-analyzer':
specifier: 'catalog:'
- version: 13.0.1(semantic-release@25.0.5(typescript@7.0.1-rc))
+ version: 13.0.1(semantic-release@25.0.5(typescript@6.0.3))
'@semantic-release/git':
specifier: 'catalog:'
- version: 10.0.1(semantic-release@25.0.5(typescript@7.0.1-rc))
+ version: 10.0.1(semantic-release@25.0.5(typescript@6.0.3))
'@semantic-release/github':
specifier: 'catalog:'
- version: 12.0.8(semantic-release@25.0.5(typescript@7.0.1-rc))
+ version: 12.0.9(semantic-release@25.0.5(typescript@6.0.3))
'@semantic-release/npm':
specifier: 'catalog:'
- version: 13.1.5(semantic-release@25.0.5(typescript@7.0.1-rc))
+ version: 13.1.5(semantic-release@25.0.5(typescript@6.0.3))
'@semantic-release/release-notes-generator':
specifier: 'catalog:'
- version: 14.1.1(semantic-release@25.0.5(typescript@7.0.1-rc))
+ version: 14.1.1(semantic-release@25.0.5(typescript@6.0.3))
'@testcontainers/redis':
specifier: 'catalog:'
version: 12.0.4
'@turbo/gen':
specifier: 'catalog:'
- version: 2.10.2(@types/node@26.0.1)
+ version: 2.10.4(@types/node@24.13.3)
'@vitejs/plugin-react':
specifier: 'catalog:'
- version: 6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ version: 6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@vitest/coverage-v8':
specifier: 'catalog:'
version: 4.1.9(vitest@4.1.9)
@@ -648,37 +648,37 @@ importers:
version: 10.1.0
jsdom:
specifier: 'catalog:'
- version: 29.1.1(@noble/hashes@2.2.0)
+ version: 29.1.1(@noble/hashes@2.0.1)
json5:
specifier: 'catalog:'
version: 2.2.3
oxfmt:
specifier: 'catalog:'
- version: 0.57.0
+ version: 0.58.0
oxlint:
specifier: 'catalog:'
version: 1.72.0
semantic-release:
specifier: 'catalog:'
- version: 25.0.5(typescript@7.0.1-rc)
+ version: 25.0.5(typescript@6.0.3)
testcontainers:
specifier: 'catalog:'
version: 12.0.4
turbo:
specifier: 'catalog:'
- version: 2.10.2
+ version: 2.10.4
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
vite:
specifier: 'catalog:'
- version: 8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
+ version: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
vite-tsconfig-paths:
specifier: 'catalog:'
- version: 6.1.1(typescript@7.0.1-rc)(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ version: 6.1.1(typescript@6.0.3)(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
vitest:
specifier: 'catalog:'
- version: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@26.0.1)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ version: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
apps/docs:
dependencies:
@@ -687,25 +687,25 @@ importers:
version: 1.6.0(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docusaurus/core':
specifier: ^3.10.1
- version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/faster':
specifier: ^3.10.1
- version: 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16)
+ version: 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16)
'@docusaurus/plugin-content-docs':
specifier: ^3.10.1
- version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/plugin-sitemap':
specifier: ^3.10.1
- version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/preset-classic':
specifier: ^3.10.1
- version: 3.10.1(@algolia/client-search@5.55.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@7.0.1-rc)
+ version: 3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)
'@docusaurus/theme-common':
specifier: ^3.10.1
- version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ version: 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docusaurus/theme-mermaid':
specifier: ^3.10.1
- version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@homarr/definitions':
specifier: workspace:^
version: link:../../packages/definitions
@@ -717,10 +717,10 @@ importers:
version: 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@scalar/api-reference-react':
specifier: 'catalog:'
- version: 0.9.52(axios@1.18.1)(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)
+ version: 0.9.54(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
'@signalwire/docusaurus-plugin-llms-txt':
specifier: ^1.2.2
- version: 1.2.2(@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))
+ version: 1.2.2(@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))
'@tabler/icons-react':
specifier: 'catalog:'
version: 3.44.0(react@19.2.7)
@@ -738,7 +738,7 @@ importers:
version: 1.11.21
docusaurus-plugin-image-zoom:
specifier: ^3.0.1
- version: 3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))
+ version: 3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))
leader-line-new:
specifier: ^1.1.9
version: 1.1.9
@@ -764,8 +764,8 @@ importers:
specifier: 'catalog:'
version: 19.2.7(react@19.2.7)
swiper:
- specifier: ^14.0.1
- version: 14.0.1
+ specifier: ^14.0.2
+ version: 14.0.2
tailwind-merge:
specifier: 'catalog:'
version: 3.6.0
@@ -778,13 +778,13 @@ importers:
devDependencies:
'@docusaurus/module-type-aliases':
specifier: ^3.10.1
- version: 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ version: 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docusaurus/tsconfig':
specifier: ^3.10.1
version: 3.10.1
'@docusaurus/types':
specifier: ^3.10.1
- version: 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ version: 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@fec/remark-a11y-emoji':
specifier: ^4.0.2
version: 4.0.2
@@ -802,7 +802,7 @@ importers:
version: 1.2.0
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
apps/nextjs:
dependencies:
@@ -931,13 +931,13 @@ importers:
version: 9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@mantine/tiptap':
specifier: 'catalog:'
- version: 9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tiptap/extension-link@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))(@tiptap/react@3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ version: 9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tiptap/extension-link@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))(@tiptap/react@3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@modelcontextprotocol/sdk':
specifier: 'catalog:'
version: 1.29.0(zod@4.4.3)
'@scalar/api-reference-react':
specifier: 'catalog:'
- version: 0.9.52(axios@1.18.1)(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)
+ version: 0.9.54(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
'@tabler/icons-react':
specifier: 'catalog:'
version: 3.44.0(react@19.2.7)
@@ -952,22 +952,22 @@ importers:
version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7)
'@tanstack/react-query-next-experimental':
specifier: 'catalog:'
- version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)
+ version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)
'@tanstack/react-query-persist-client':
specifier: 'catalog:'
version: 5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7)
'@trpc/client':
specifier: 'catalog:'
- version: 11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)
+ version: 11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3)
'@trpc/next':
specifier: 'catalog:'
- version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@trpc/react-query':
specifier: 'catalog:'
- version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3)
'@trpc/server':
specifier: 'catalog:'
- version: 11.18.0(typescript@7.0.1-rc)
+ version: 11.18.0(typescript@6.0.3)
'@xterm/addon-canvas':
specifier: 'catalog:'
version: 0.7.0(@xterm/xterm@6.0.0)
@@ -1000,7 +1000,7 @@ importers:
version: 17.4.2
drizzle-orm:
specifier: 'catalog:'
- version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1)
+ version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1)
flag-icons:
specifier: 'catalog:'
version: 7.5.0
@@ -1009,10 +1009,10 @@ importers:
version: 13.0.6
isomorphic-dompurify:
specifier: 'catalog:'
- version: 3.18.0(@noble/hashes@2.2.0)
+ version: 3.18.0(@noble/hashes@2.0.1)
jotai:
specifier: 'catalog:'
- version: 2.20.1(@babel/core@7.29.7)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7)
+ version: 2.20.1(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7)
jszip:
specifier: 'catalog:'
version: 3.10.1
@@ -1027,16 +1027,16 @@ importers:
version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
mcp-handler:
specifier: 'catalog:'
- version: 1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))
+ version: 1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
postcss-preset-mantine:
specifier: 'catalog:'
version: 1.18.0(postcss@8.5.16)
posthog-js:
specifier: 'catalog:'
- version: 1.396.5
+ version: 1.399.0(preact-render-to-string@6.5.11)
prismjs:
specifier: 'catalog:'
version: 1.30.0
@@ -1063,7 +1063,7 @@ importers:
version: 2.2.6
trpc-to-mcp:
specifier: 'catalog:'
- version: 1.3.2(@trpc/server@11.18.0(typescript@7.0.1-rc))(better-auth@1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.2))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3)
+ version: 1.3.2(@trpc/server@11.18.0(typescript@6.0.3))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3)
use-deep-compare-effect:
specifier: 'catalog:'
version: 1.8.1(react@19.2.7)
@@ -1088,7 +1088,7 @@ importers:
version: 3.1.2
'@types/node':
specifier: 'catalog:'
- version: 24.13.2
+ version: 24.13.3
'@types/prismjs':
specifier: 'catalog:'
version: 1.26.6
@@ -1103,10 +1103,10 @@ importers:
version: 10.0.3
node-loader:
specifier: 'catalog:'
- version: 2.1.0(webpack@5.108.3(esbuild@0.28.1)(postcss@8.5.16))
+ version: 2.1.0(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16))
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
apps/tasks:
dependencies:
@@ -1182,19 +1182,19 @@ importers:
version: link:../../tooling/typescript
'@types/node':
specifier: 'catalog:'
- version: 24.13.2
+ version: 24.13.3
dotenv-cli:
specifier: 'catalog:'
version: 11.0.0
esbuild:
specifier: 'catalog:'
- version: 0.28.1
+ version: 0.28.0
tsx:
specifier: 'catalog:'
version: 4.20.4
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
apps/websocket:
dependencies:
@@ -1240,10 +1240,10 @@ importers:
version: 8.18.1
esbuild:
specifier: 'catalog:'
- version: 0.28.1
+ version: 0.28.0
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/analytics:
dependencies:
@@ -1271,7 +1271,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/api:
dependencies:
@@ -1340,16 +1340,16 @@ importers:
version: 5.101.2(react@19.2.7)
'@trpc/client':
specifier: 'catalog:'
- version: 11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)
+ version: 11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3)
'@trpc/react-query':
specifier: 'catalog:'
- version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3)
'@trpc/server':
specifier: 'catalog:'
- version: 11.18.0(typescript@7.0.1-rc)
+ version: 11.18.0(typescript@6.0.3)
'@trpc/tanstack-react-query':
specifier: 'catalog:'
- version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3)
jsonpath-plus:
specifier: 'catalog:'
version: 10.4.0
@@ -1358,7 +1358,7 @@ importers:
version: 4.5.0
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -1370,10 +1370,10 @@ importers:
version: 2.2.6
trpc-to-mcp:
specifier: 'catalog:'
- version: 1.3.2(@trpc/server@11.18.0(typescript@7.0.1-rc))(better-auth@1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@26.0.1))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3)
+ version: 1.3.2(@trpc/server@11.18.0(typescript@6.0.3))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3)
trpc-to-openapi:
specifier: 'catalog:'
- version: 3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(typescript@7.0.1-rc))(zod-openapi@5.4.6(zod@4.4.3))(zod@4.4.3)
+ version: 3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(typescript@6.0.3))(zod-openapi@5.3.0(zod@4.4.3))(zod@4.4.3)
zod:
specifier: 'catalog:'
version: 4.4.3
@@ -1383,7 +1383,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/auth:
dependencies:
@@ -1419,10 +1419,10 @@ importers:
version: 8.1.8
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
next-auth:
specifier: 'catalog:'
- version: 5.0.0-beta.31(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)
+ version: 5.0.0-beta.31(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -1444,7 +1444,7 @@ importers:
version: 0.9.2
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/boards:
dependencies:
@@ -1463,7 +1463,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/cli:
dependencies:
@@ -1491,10 +1491,10 @@ importers:
version: link:../../tooling/typescript
esbuild:
specifier: 'catalog:'
- version: 0.28.1
+ version: 0.28.0
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/common:
dependencies:
@@ -1506,13 +1506,13 @@ importers:
version: 3.3.0
cookie:
specifier: 'catalog:'
- version: 2.0.0
+ version: 2.0.1
dayjs:
specifier: 'catalog:'
version: 1.11.21
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
octokit:
specifier: 'catalog:'
version: 5.0.5
@@ -1537,13 +1537,13 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/core:
dependencies:
'@t3-oss/env-nextjs':
specifier: 'catalog:'
- version: 0.13.11(typescript@7.0.1-rc)(zod@4.4.3)
+ version: 0.13.11(arktype@2.1.20)(typescript@6.0.3)(zod@4.4.3)
better-sqlite3:
specifier: 'catalog:'
version: 12.11.1
@@ -1552,13 +1552,13 @@ importers:
version: 0.2.9
drizzle-orm:
specifier: 'catalog:'
- version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1)
+ version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1)
ioredis:
specifier: 'catalog:'
version: 5.11.1
mysql2:
specifier: 'catalog:'
- version: 3.22.5(@types/node@26.0.1)
+ version: 3.22.5(@types/node@24.13.2)
pg:
specifier: 'catalog:'
version: 8.22.0
@@ -1583,7 +1583,7 @@ importers:
version: 8.20.0
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/cron-job-status:
dependencies:
@@ -1596,7 +1596,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/cron-jobs:
dependencies:
@@ -1660,7 +1660,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/cron-jobs-core:
dependencies:
@@ -1682,7 +1682,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/db:
dependencies:
@@ -1727,13 +1727,13 @@ importers:
version: 0.31.10
drizzle-orm:
specifier: 'catalog:'
- version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1)
+ version: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1)
drizzle-zod:
specifier: 'catalog:'
- version: 0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3)
+ version: 0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3)
mysql2:
specifier: 'catalog:'
- version: 3.22.5(@types/node@26.0.1)
+ version: 3.22.5(@types/node@24.13.2)
pg:
specifier: 'catalog:'
version: 8.22.0
@@ -1755,13 +1755,13 @@ importers:
version: 11.0.0
esbuild:
specifier: 'catalog:'
- version: 0.28.1
+ version: 0.28.0
tsx:
specifier: 'catalog:'
version: 4.20.4
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/definitions:
dependencies:
@@ -1783,7 +1783,7 @@ importers:
version: 4.20.4
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/docker:
dependencies:
@@ -1805,7 +1805,7 @@ importers:
version: 4.0.1
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/form:
dependencies:
@@ -1830,7 +1830,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/forms-collection:
dependencies:
@@ -1873,7 +1873,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/icons:
dependencies:
@@ -1892,7 +1892,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/image-proxy:
dependencies:
@@ -1917,7 +1917,7 @@ importers:
version: 6.0.0
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/integrations:
dependencies:
@@ -1962,7 +1962,7 @@ importers:
version: 3.0.1
'@jellyfin/sdk':
specifier: 'catalog:'
- version: 0.13.0(axios@1.18.1)
+ version: 0.13.0(axios@1.15.0)
ical.js:
specifier: 'catalog:'
version: 2.2.1
@@ -2008,7 +2008,7 @@ importers:
version: 0.4.14
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/modals:
dependencies:
@@ -2033,7 +2033,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/modals-collection:
dependencies:
@@ -2081,7 +2081,7 @@ importers:
version: 1.11.21
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2097,7 +2097,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/notifications:
dependencies:
@@ -2116,7 +2116,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/old-import:
dependencies:
@@ -2164,7 +2164,7 @@ importers:
version: 0.5.18
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2189,7 +2189,7 @@ importers:
version: 0.5.8
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/old-schema:
dependencies:
@@ -2205,7 +2205,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/ping:
dependencies:
@@ -2221,7 +2221,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/redis:
dependencies:
@@ -2249,7 +2249,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/request-handler:
dependencies:
@@ -2298,7 +2298,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/server-settings:
dependencies:
@@ -2314,7 +2314,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/settings:
dependencies:
@@ -2329,7 +2329,7 @@ importers:
version: 9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2342,7 +2342,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/spotlight:
dependencies:
@@ -2393,10 +2393,10 @@ importers:
version: 3.44.0(react@19.2.7)
jotai:
specifier: 'catalog:'
- version: 2.20.1(@babel/core@7.29.7)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7)
+ version: 2.20.1(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7)
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2412,7 +2412,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/translation:
dependencies:
@@ -2433,10 +2433,10 @@ importers:
version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
next-intl:
specifier: 'catalog:'
- version: 4.13.1(@swc/helpers@0.5.23)(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)(typescript@7.0.1-rc)
+ version: 4.13.1(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)(typescript@6.0.3)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2449,7 +2449,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/ui:
dependencies:
@@ -2488,7 +2488,7 @@ importers:
version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2510,7 +2510,7 @@ importers:
version: 1.0.5
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/validation:
dependencies:
@@ -2532,7 +2532,7 @@ importers:
version: link:../../tooling/typescript
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
packages/widgets:
dependencies:
@@ -2622,52 +2622,52 @@ importers:
version: 3.44.0(react@19.2.7)
'@tiptap/extension-color':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extension-text-style@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1)))
+ version: 3.27.3(@tiptap/extension-text-style@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3)))
'@tiptap/extension-highlight':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
'@tiptap/extension-image':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
'@tiptap/extension-link':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
'@tiptap/extension-placeholder':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
'@tiptap/extension-table':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
'@tiptap/extension-table-cell':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
'@tiptap/extension-table-header':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
'@tiptap/extension-table-row':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
'@tiptap/extension-task-item':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
'@tiptap/extension-task-list':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
'@tiptap/extension-text-align':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
'@tiptap/extension-text-style':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
'@tiptap/extension-underline':
specifier: 'catalog:'
- version: 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
+ version: 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
'@tiptap/react':
specifier: 'catalog:'
- version: 3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ version: 3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@tiptap/starter-kit':
specifier: 'catalog:'
- version: 3.27.1
+ version: 3.27.3
clsx:
specifier: 'catalog:'
version: 2.1.1
@@ -2688,7 +2688,7 @@ importers:
version: mantine-react-table-open@9.0.3(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/dates@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(clsx@2.1.1)(dayjs@1.11.21)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
next:
specifier: 'catalog:'
- version: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ version: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react:
specifier: 'catalog:'
version: 19.2.7
@@ -2722,7 +2722,7 @@ importers:
version: 7.3.58
typescript:
specifier: 'catalog:'
- version: 7.0.1-rc
+ version: 6.0.3
tooling/github: {}
@@ -2730,14 +2730,14 @@ importers:
packages:
- '@actions/core@3.0.1':
- resolution: {integrity: sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==}
+ '@actions/core@3.0.0':
+ resolution: {integrity: sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==}
'@actions/exec@3.0.0':
resolution: {integrity: sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==}
- '@actions/http-client@4.0.1':
- resolution: {integrity: sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==}
+ '@actions/http-client@4.0.0':
+ resolution: {integrity: sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==}
'@actions/io@3.0.2':
resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==}
@@ -2764,23 +2764,23 @@ packages:
peerDependencies:
vue: ^3.3.4
- '@algolia/abtesting@1.21.1':
- resolution: {integrity: sha512-Wia5/mNTfiU0PIUN25UMfAGGdASkkwuCS9nBAdmhqrNPY/ff7U/6MgBVdwFDPsa3sA1msutPtO50gvOzx6MOXA==}
+ '@algolia/abtesting@1.19.0':
+ resolution: {integrity: sha512-Lhnez3hhXHk25lfxLAMxvkP4fmN3+1RgADhD2ssMDBYuAsDVReeyP+3SGRx+ntq8ijMrLqUyfvO72TB6jsTteQ==}
engines: {node: '>= 14.0.0'}
'@algolia/autocomplete-core@1.19.2':
resolution: {integrity: sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==}
- '@algolia/autocomplete-core@1.19.9':
- resolution: {integrity: sha512-4U2JKLMWlDu0CotYyUkWakDxr8AIav3QtIUXXRpfavYN29aVWfzlwJp9T0rPKEf/dO2QCPAUc0Kq1Tj1GJxo2A==}
+ '@algolia/autocomplete-core@1.19.8':
+ resolution: {integrity: sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==}
'@algolia/autocomplete-plugin-algolia-insights@1.19.2':
resolution: {integrity: sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==}
peerDependencies:
search-insights: '>= 1 < 3'
- '@algolia/autocomplete-plugin-algolia-insights@1.19.9':
- resolution: {integrity: sha512-6mExC6X7762s2SV3eJy3QOkB8bdMmnUhQ2agvGVDuzwoGyr3PquGSY/0vPQXCfiAiCaXUz1rXn+lwghgSi0l0w==}
+ '@algolia/autocomplete-plugin-algolia-insights@1.19.8':
+ resolution: {integrity: sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==}
peerDependencies:
search-insights: '>= 1 < 3'
@@ -2790,65 +2790,65 @@ packages:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
- '@algolia/autocomplete-shared@1.19.9':
- resolution: {integrity: sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A==}
+ '@algolia/autocomplete-shared@1.19.8':
+ resolution: {integrity: sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==}
peerDependencies:
'@algolia/client-search': '>= 4.9.1 < 6'
algoliasearch: '>= 4.9.1 < 6'
- '@algolia/client-abtesting@5.55.1':
- resolution: {integrity: sha512-miW8RzAtBgNiEJ9fGEhsOPgWUpekAe64YcVufqXrlykj0Jjmo5nj0a5f/HAzRVX5ZuU1GAVd7BkzFDx7q50P3A==}
+ '@algolia/client-abtesting@5.53.0':
+ resolution: {integrity: sha512-0ZjA5Hcmaoz5Lj6OG0zhfIyeqzJZnLW2CRJA1W17UwMFGRtZAJ9yJKRvPEDA6gkpsIoQxORTSW6sWFiuYncPNQ==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-analytics@5.55.1':
- resolution: {integrity: sha512-eR3J3kB9JX6DdCvDRi3I4KPfwO6fR9HWYRXhVke2TXIoOQafMKCRAneg33JRmIrb+DnnJ/eWApJLF1O1CLPERg==}
+ '@algolia/client-analytics@5.53.0':
+ resolution: {integrity: sha512-kWNodP75iiEaOtemC9F/hlxNBG5E2QUjN1BusnE6m2b4l7Qh/BUO3fGCVsmKJI65VO4VKGGmT43ICvHtTcJ2JQ==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-common@5.55.1':
- resolution: {integrity: sha512-P5ak7EurwYqgAiDyb95mgA3WRR/Zu8CPMv36lWTISvL2AmlPyqQPy2nX/KEJRTcwaeTWwrk6wJV4/M93GfjOWw==}
+ '@algolia/client-common@5.53.0':
+ resolution: {integrity: sha512-YPN45TXD9Wrse185t/Ta7nktZsqpv97oOjCzp2sblHnCL6rBc9TDeJAg1IGl2UpdwnSD05Zu/5wLB4watOUMyg==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-insights@5.55.1':
- resolution: {integrity: sha512-OVtj9uA//+pjvKQI5INnzbyLrf3ClNv3XRbWswwJ2kHIStQNHtBfHo+LofNB/WhM9xjuXlW5ANn2aMj65UGx7w==}
+ '@algolia/client-insights@5.53.0':
+ resolution: {integrity: sha512-qAcYTDJE6m924FDDUQvdD6vh7DYaqOeSpFS74IP37/JRV0v4cGBauyxTF2WzDnokUylQDbqreoFIJZfg0Fitmw==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-personalization@5.55.1':
- resolution: {integrity: sha512-oKlVFlp+qbIEe4p7E54zSiP2gEV/vDu972Ykv8VDMFwEvreS7m0YKA3a8hGGHwc7yiBUGGiR3LlwzMLfnJmy6Q==}
+ '@algolia/client-personalization@5.53.0':
+ resolution: {integrity: sha512-fQaY+DkSJOpuUVUe8MQTwrdiKAqkJGhpDarB08duBn/sUv7Bkib6MDRQauCcWTWTe4HIW+EbwQP9R4kci1V/Yw==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-query-suggestions@5.55.1':
- resolution: {integrity: sha512-BOVrld6vdtsFmotVDMTVQfYXwrVplJ+DUvy60JFi+tkWV698q2J9NNPKEO3dr5qxtSLKQP4vHF8n+3U5PDWhOQ==}
+ '@algolia/client-query-suggestions@5.53.0':
+ resolution: {integrity: sha512-o72tsiEZGfeS/dxL9IADfzcZWGEwKDEe5CvtrBuT//3JR+SHuTtHRI2ZTf7D7bcKagcbojvO8hnkHdfoakSlYg==}
engines: {node: '>= 14.0.0'}
- '@algolia/client-search@5.55.1':
- resolution: {integrity: sha512-GAqHl9zERhC3bbBfubwUu07G3UXO06gORvOcsiTBZB3et0s3auNUbHlYdYNp4VKa3sUZqH5AcD3OKzU/KDGXjQ==}
+ '@algolia/client-search@5.53.0':
+ resolution: {integrity: sha512-Ds16IyPm/dNJPCU8OzApo2gwGrgWT5BYHhE3NFwZbpCveqyvPDB9sZDDkJ5DsdOGT2aC+R3i0/M1OVXF2qdgPg==}
engines: {node: '>= 14.0.0'}
'@algolia/events@4.0.1':
resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==}
- '@algolia/ingestion@1.55.1':
- resolution: {integrity: sha512-BXZw+C+gsWL7pZvbnhJUnCXASiDLGcQxVV7h55Pyh2DmSzwdZIVccE5xc9RVD2trtrhIqk5smuODTxtaZqd0IA==}
+ '@algolia/ingestion@1.53.0':
+ resolution: {integrity: sha512-oNbT6z4NwD8Pou9VPINGlN/tlG1afESh2EbxqnP6rwl95xKVD/Zlciis1PpNeO/9U/rrajc1+7DcfKi03tX1KQ==}
engines: {node: '>= 14.0.0'}
- '@algolia/monitoring@1.55.1':
- resolution: {integrity: sha512-9g/ceZrZTqA62FA3588Xj0onRPjDNfu0pVQqefK0rrHp9H6Wblph/YmzGjZ2g8uqbTh0ZGIvAGCzErU8f7MHpA==}
+ '@algolia/monitoring@1.53.0':
+ resolution: {integrity: sha512-G+KZb/yd+qAOFn/cEvTGeLxQm8aP3a0od50l3z/ylccY+/o4YG3TNcjU1tFQHW4mXC137GPyR7W70R0kRQDLnA==}
engines: {node: '>= 14.0.0'}
- '@algolia/recommend@5.55.1':
- resolution: {integrity: sha512-cZTIrGyAP+W4A6jDVwvWM/JOaoJKQkD/2a5eLUEeNdKAD45jN7BCpsMDONyhZlosLa4UwL8uiINQzj4iFy9nqg==}
+ '@algolia/recommend@5.53.0':
+ resolution: {integrity: sha512-6aVfYd55Un6IUgPLbo84WfgFZlS3L0vA1ttzXL5vahHewUJ8jYgd89TzlWRTeej7w70mb9RWsVlFYGmJ/diQww==}
engines: {node: '>= 14.0.0'}
- '@algolia/requester-browser-xhr@5.55.1':
- resolution: {integrity: sha512-N6I3leW0UO8Y9Zv90yo2UHgYGuxZO0mjbvzNxDIJDjO0qECEF7Z9XMvSNeUWXQh/iNDA9lr8MfEy3rmZGIcclw==}
+ '@algolia/requester-browser-xhr@5.53.0':
+ resolution: {integrity: sha512-ke27DqgzCOlt+RbeEdCxtXxMQOnAOi8ujr2wid0DmDKzR95Kw/f9sBsuhBxtjevCqJRJszfRTLY0B1pbO6IhkA==}
engines: {node: '>= 14.0.0'}
- '@algolia/requester-fetch@5.55.1':
- resolution: {integrity: sha512-ukU5zeeFs44rQkzv+TRdYard+d+3lmPGs8lPZhHtWE8rfz+LlBSF6s9kP3VQ7LeOYL8Dz0u6tZfnyTrqrumbHQ==}
+ '@algolia/requester-fetch@5.53.0':
+ resolution: {integrity: sha512-GngiOqt2Gq4oLno6yXQVj9om+qSO9SWAoduoTOEg79dKZ62brB8OOIvSJG/vDNoanYi6a7Al9uDZwXvi+bcVTg==}
engines: {node: '>= 14.0.0'}
- '@algolia/requester-node-http@5.55.1':
- resolution: {integrity: sha512-lCwXyijwPm3vbYHpBXPRomMcD6mgiptmps27gnMCf4HK+u/AOeFPBnIFh4V3l4A5SnP9VRiKBZqwGBpUH0vaTg==}
+ '@algolia/requester-node-http@5.53.0':
+ resolution: {integrity: sha512-6mF9LZMUk0QqWvrnxkxBqhswwz6Xfiwy6/gmTzL5HrlhdVG3ITAqGV2k3XmVThP1h0Ulc3VQwiNCD7/Nr4JNlQ==}
engines: {node: '>= 14.0.0'}
'@alloc/quick-lru@5.2.0':
@@ -2858,6 +2858,12 @@ packages:
'@antfu/install-pkg@1.1.0':
resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+ '@ark/schema@0.46.0':
+ resolution: {integrity: sha512-c2UQdKgP2eqqDArfBqQIJppxJHvNNXuQPeuSPlDML4rjw+f1cu0qAlzOG4b8ujgm9ctIDWwhpyw6gjG5ledIVQ==}
+
+ '@ark/util@0.46.0':
+ resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==}
+
'@asamuzakjp/css-color@5.1.11':
resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
@@ -2890,6 +2896,10 @@ packages:
'@auth/drizzle-adapter@1.11.2':
resolution: {integrity: sha512-VOuj7REI8jfJjpSbsYwDM/Zrn55T6lS9Yc+29V+EXMcel8eqG7x+7LodNfd1WHjakfkLYi+qsbYUHB3E6aDA4w==}
+ '@babel/code-frame@7.29.0':
+ resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/code-frame@7.29.7':
resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
engines: {node: '>=6.9.0'}
@@ -2898,8 +2908,12 @@ packages:
resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.29.7':
- resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
+ '@babel/core@7.29.0':
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.29.0':
+ resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.29.7':
@@ -2931,6 +2945,10 @@ packages:
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-globals@7.29.7':
resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
engines: {node: '>=6.9.0'}
@@ -2953,6 +2971,10 @@ packages:
resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-plugin-utils@7.27.1':
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-plugin-utils@7.29.7':
resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
engines: {node: '>=6.9.0'}
@@ -2989,8 +3011,8 @@ packages:
resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==}
engines: {node: '>=6.9.0'}
- '@babel/helpers@7.29.7':
- resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
+ '@babel/helpers@7.29.2':
+ resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.29.7':
@@ -3450,10 +3472,18 @@ packages:
resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
engines: {node: '>=6.9.0'}
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ engines: {node: '>=6.9.0'}
+
'@babel/template@7.29.7':
resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
engines: {node: '>=6.9.0'}
+ '@babel/traverse@7.29.0':
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/traverse@7.29.7':
resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
engines: {node: '>=6.9.0'}
@@ -3496,14 +3526,14 @@ packages:
resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==}
engines: {node: '>=18'}
- '@better-auth/core@1.6.23':
- resolution: {integrity: sha512-beEhOs0uVeOxYOZKUfIEBd/nQV2Bd4/6wyLxZ0OFkn6CMTK2Vi+hXuZLnyPBeB6RdHpebEoJWiHqwHxBIxgPDQ==}
+ '@better-auth/core@1.6.15':
+ resolution: {integrity: sha512-gPgeEn+2t2cohSKj1CJFCJLo4jNqvtvhKP/y6Uwuurg4ReEf2Y9PUCYffvbp7DDc+GevWTuD0Cv9x0+e83+HpA==}
peerDependencies:
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
+ '@better-auth/utils': 0.4.1
+ '@better-fetch/fetch': 1.1.21
'@cloudflare/workers-types': '>=4'
'@opentelemetry/api': ^1.9.0
- better-call: 1.3.7
+ better-call: 1.3.5
jose: ^6.1.0
kysely: ^0.28.5 || ^0.29.0
nanostores: ^1.0.1
@@ -3513,47 +3543,47 @@ packages:
'@opentelemetry/api':
optional: true
- '@better-auth/drizzle-adapter@1.6.23':
- resolution: {integrity: sha512-2+/PTVfIP9E7iz6af8TB3lhnowHUj9ljC66kECmHaFEdUqPgzHoWux9epotKwO7XDg2ui4ttWQ8CMeNFLvQeKQ==}
+ '@better-auth/drizzle-adapter@1.6.15':
+ resolution: {integrity: sha512-+ho2RozN6cZmCN+6XkZd/ec5iolVlefgInQ7znJ18qRPbgllHxdyu9tGrgKZyEsXSCyqAa6wi5Yb4hd3WZmTNQ==}
peerDependencies:
- '@better-auth/core': ^1.6.23
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': ^1.6.15
+ '@better-auth/utils': 0.4.1
drizzle-orm: ^0.45.2
peerDependenciesMeta:
drizzle-orm:
optional: true
- '@better-auth/kysely-adapter@1.6.23':
- resolution: {integrity: sha512-zbNJsMbG09exfkGyvFqBLLqWoMPAUWjxCuUnEK5AsjbYoZeIjj/QGZgdf4CapVWryKxjA9Q6Jlr6fbiPpC3VAg==}
+ '@better-auth/kysely-adapter@1.6.15':
+ resolution: {integrity: sha512-E29Sugm+DWRK4oQNBPrjPA4kBYiKy2bBtX1arIlkuyAB9A1BEb4Xn+8t7wlNIF5eFcxpkFZ3F80ceSpWDSYU0Q==}
peerDependencies:
- '@better-auth/core': ^1.6.23
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': ^1.6.15
+ '@better-auth/utils': 0.4.1
kysely: ^0.28.17 || ^0.29.0
peerDependenciesMeta:
kysely:
optional: true
- '@better-auth/memory-adapter@1.6.23':
- resolution: {integrity: sha512-krIiR0pIVkaKlAzm690n5bcMW4NGbqeMg0HQSD9fz/KcQF/eWLqcq9gG/BhHTj2i/y96qH+W5JWPmaSOS5iTgQ==}
+ '@better-auth/memory-adapter@1.6.15':
+ resolution: {integrity: sha512-BRE5Ft0Tn5thOPjCmyXHge7kOI/paLybaKDU+Hzg24DZMU6JvWooYWzvf52r1viDbxq5tz0G97iyaH4bouDyug==}
peerDependencies:
- '@better-auth/core': ^1.6.23
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': ^1.6.15
+ '@better-auth/utils': 0.4.1
- '@better-auth/mongo-adapter@1.6.23':
- resolution: {integrity: sha512-7+QdevitGlKBbP6JbiSk5SBnzPsKV/mDrQBGBn8hwByQLeJwqpqbuBPw7ZI8vzUlFfAAnyFiqwP3Eb8mxnp7pA==}
+ '@better-auth/mongo-adapter@1.6.15':
+ resolution: {integrity: sha512-r0X9AtFhwDeOU1KMP9kZ5NeV0O3TSFzn8+uidaH+aicy2e1dNUsd9nPYrozEloSxdA2ZOnv5gD4jzH7HPeKkUQ==}
peerDependencies:
- '@better-auth/core': ^1.6.23
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': ^1.6.15
+ '@better-auth/utils': 0.4.1
mongodb: ^6.0.0 || ^7.0.0
peerDependenciesMeta:
mongodb:
optional: true
- '@better-auth/prisma-adapter@1.6.23':
- resolution: {integrity: sha512-2qSdzidq4tkb1eS5TTqb4Nzg0mdZWm3Qky9SYeXeb8PpVQbC2sxqJhEM5mK7y12uU6I8hc64wO9f7AFVNL+6UQ==}
+ '@better-auth/prisma-adapter@1.6.15':
+ resolution: {integrity: sha512-pUOlIUnpMu2l8C2ytgu46+OoOr3LZ+aLpJMFRGIPdnWl1BF2co2YaoZPT3+ZBu1Lzm0FrBN1ZRCAzZbkFoeIAQ==}
peerDependencies:
- '@better-auth/core': ^1.6.23
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': ^1.6.15
+ '@better-auth/utils': 0.4.1
'@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0
prisma: ^5.0.0 || ^6.0.0 || ^7.0.0
peerDependenciesMeta:
@@ -3562,18 +3592,18 @@ packages:
prisma:
optional: true
- '@better-auth/telemetry@1.6.23':
- resolution: {integrity: sha512-/R2Kb+z2BpDOOWwVHqOk+c0VNpuwfCv4Hp5Yr9003WIZPax/zyNraGLB9CFE8qF2gZW8Dsz419k4I8CPrGzpDA==}
+ '@better-auth/telemetry@1.6.15':
+ resolution: {integrity: sha512-eoFlUPVrVXLML9saHD11OSKKSRCAYETgRgBW4vQF3Y6pCgmThKD9oehYk3kkb/FsRgfqmsocmvAFqsiyjPIygg==}
peerDependencies:
- '@better-auth/core': ^1.6.23
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
+ '@better-auth/core': ^1.6.15
+ '@better-auth/utils': 0.4.1
+ '@better-fetch/fetch': 1.1.21
- '@better-auth/utils@0.4.2':
- resolution: {integrity: sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A==}
+ '@better-auth/utils@0.4.1':
+ resolution: {integrity: sha512-SZBPRPF3z0nBvE5ygOkxae35wnnXPRShmqFo78S+qslLeFoPu/pMgnXAuNKFMMybac3tiLaVg1e3MQW5MC+1iA==}
- '@better-fetch/fetch@1.3.1':
- resolution: {integrity: sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g==}
+ '@better-fetch/fetch@1.1.21':
+ resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==}
'@braintree/sanitize-url@7.1.2':
resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==}
@@ -3588,8 +3618,8 @@ packages:
'@codemirror/autocomplete@6.20.3':
resolution: {integrity: sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g==}
- '@codemirror/commands@6.10.4':
- resolution: {integrity: sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg==}
+ '@codemirror/commands@6.10.3':
+ resolution: {integrity: sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==}
'@codemirror/lang-css@6.3.1':
resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==}
@@ -3609,17 +3639,17 @@ packages:
'@codemirror/lang-yaml@6.1.3':
resolution: {integrity: sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ==}
- '@codemirror/language@6.12.4':
- resolution: {integrity: sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==}
+ '@codemirror/language@6.12.3':
+ resolution: {integrity: sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==}
- '@codemirror/lint@6.9.7':
- resolution: {integrity: sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==}
+ '@codemirror/lint@6.9.6':
+ resolution: {integrity: sha512-6Kp7r6XfCi/D/5sdXieMfg9pJU1bUEx96WITuLU6ESaKizCz0QHFMjY/TaFSbigDdEAIgi93itLBIUETP4oK+A==}
- '@codemirror/state@6.7.0':
- resolution: {integrity: sha512-Zbl9NyscLMZkfXPQnNAIIAFftidrA1UbcJEIMp24C0Bukc2I5T8wJS0wsXYsnDOqCFJUeJ1BITGNs5CqPDSmSg==}
+ '@codemirror/state@6.6.0':
+ resolution: {integrity: sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==}
- '@codemirror/view@6.43.4':
- resolution: {integrity: sha512-YImu23iyKfncJzT7sRy+rEqEhSc8RhOHqDxwy4WzXRKJwYm6iwf/9OJk5ctCAdZ6yi2ZqaGEvmf55fSVqMDrgg==}
+ '@codemirror/view@6.43.0':
+ resolution: {integrity: sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==}
'@colors/colors@1.5.0':
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
@@ -3644,8 +3674,8 @@ packages:
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
engines: {node: '>=18'}
- '@csstools/color-helpers@6.1.0':
- resolution: {integrity: sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==}
+ '@csstools/color-helpers@6.0.2':
+ resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==}
engines: {node: '>=20.19.0'}
'@csstools/css-calc@2.1.4':
@@ -3655,8 +3685,8 @@ packages:
'@csstools/css-parser-algorithms': ^3.0.5
'@csstools/css-tokenizer': ^3.0.4
- '@csstools/css-calc@3.2.1':
- resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==}
+ '@csstools/css-calc@3.2.0':
+ resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==}
engines: {node: '>=20.19.0'}
peerDependencies:
'@csstools/css-parser-algorithms': ^4.0.0
@@ -3669,8 +3699,8 @@ packages:
'@csstools/css-parser-algorithms': ^3.0.5
'@csstools/css-tokenizer': ^3.0.4
- '@csstools/css-color-parser@4.1.9':
- resolution: {integrity: sha512-paQcIaOO53Rk5+YrBaBjm/SgrV4INImjo2BT1DtQRYr+XeTRbeAYlS+jxXp9drqvKmtFnWRJKIalDLhZZDu42A==}
+ '@csstools/css-color-parser@4.1.0':
+ resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==}
engines: {node: '>=20.19.0'}
peerDependencies:
'@csstools/css-parser-algorithms': ^4.0.0
@@ -3688,8 +3718,8 @@ packages:
peerDependencies:
'@csstools/css-tokenizer': ^4.0.0
- '@csstools/css-syntax-patches-for-csstree@1.1.6':
- resolution: {integrity: sha512-TcJCWFbXLPpJYq6z7bfOyjWYJDiDg2/I4gyUC9pqPNqHFRIey0EB0q0L5cSnQDfWJg8Jd6VadakxdIez/3zkqQ==}
+ '@csstools/css-syntax-patches-for-csstree@1.1.3':
+ resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==}
peerDependencies:
css-tree: ^3.2.1
peerDependenciesMeta:
@@ -4287,6 +4317,18 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.27.7':
+ resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/aix-ppc64@0.28.0':
+ resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/aix-ppc64@0.28.1':
resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==}
engines: {node: '>=18'}
@@ -4299,6 +4341,18 @@ packages:
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.27.7':
+ resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm64@0.28.0':
+ resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm64@0.28.1':
resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==}
engines: {node: '>=18'}
@@ -4311,6 +4365,18 @@ packages:
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.27.7':
+ resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-arm@0.28.0':
+ resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-arm@0.28.1':
resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==}
engines: {node: '>=18'}
@@ -4323,6 +4389,18 @@ packages:
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.27.7':
+ resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/android-x64@0.28.0':
+ resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/android-x64@0.28.1':
resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==}
engines: {node: '>=18'}
@@ -4335,6 +4413,18 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.27.7':
+ resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-arm64@0.28.0':
+ resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-arm64@0.28.1':
resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==}
engines: {node: '>=18'}
@@ -4347,6 +4437,18 @@ packages:
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.27.7':
+ resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.28.0':
+ resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.28.1':
resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==}
engines: {node: '>=18'}
@@ -4359,6 +4461,18 @@ packages:
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.27.7':
+ resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-arm64@0.28.0':
+ resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-arm64@0.28.1':
resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==}
engines: {node: '>=18'}
@@ -4371,6 +4485,18 @@ packages:
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.27.7':
+ resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.28.0':
+ resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.28.1':
resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==}
engines: {node: '>=18'}
@@ -4383,6 +4509,18 @@ packages:
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.27.7':
+ resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm64@0.28.0':
+ resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm64@0.28.1':
resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==}
engines: {node: '>=18'}
@@ -4395,6 +4533,18 @@ packages:
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.27.7':
+ resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.28.0':
+ resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-arm@0.28.1':
resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==}
engines: {node: '>=18'}
@@ -4407,6 +4557,18 @@ packages:
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.27.7':
+ resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.28.0':
+ resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-ia32@0.28.1':
resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==}
engines: {node: '>=18'}
@@ -4419,6 +4581,18 @@ packages:
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.27.7':
+ resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.28.0':
+ resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-loong64@0.28.1':
resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==}
engines: {node: '>=18'}
@@ -4431,6 +4605,18 @@ packages:
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.27.7':
+ resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.28.0':
+ resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.28.1':
resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==}
engines: {node: '>=18'}
@@ -4443,6 +4629,18 @@ packages:
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.27.7':
+ resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.28.0':
+ resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.28.1':
resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==}
engines: {node: '>=18'}
@@ -4455,6 +4653,18 @@ packages:
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.27.7':
+ resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.28.0':
+ resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.28.1':
resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==}
engines: {node: '>=18'}
@@ -4467,6 +4677,18 @@ packages:
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.27.7':
+ resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.28.0':
+ resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-s390x@0.28.1':
resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==}
engines: {node: '>=18'}
@@ -4479,6 +4701,18 @@ packages:
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.27.7':
+ resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.28.0':
+ resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/linux-x64@0.28.1':
resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==}
engines: {node: '>=18'}
@@ -4491,6 +4725,18 @@ packages:
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.27.7':
+ resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-arm64@0.28.1':
resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==}
engines: {node: '>=18'}
@@ -4503,6 +4749,18 @@ packages:
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.27.7':
+ resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.28.0':
+ resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.28.1':
resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==}
engines: {node: '>=18'}
@@ -4515,6 +4773,18 @@ packages:
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.27.7':
+ resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-arm64@0.28.1':
resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==}
engines: {node: '>=18'}
@@ -4527,6 +4797,18 @@ packages:
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.27.7':
+ resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.28.0':
+ resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.28.1':
resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==}
engines: {node: '>=18'}
@@ -4539,6 +4821,18 @@ packages:
cpu: [arm64]
os: [openharmony]
+ '@esbuild/openharmony-arm64@0.27.7':
+ resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/openharmony-arm64@0.28.1':
resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==}
engines: {node: '>=18'}
@@ -4551,6 +4845,18 @@ packages:
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.27.7':
+ resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/sunos-x64@0.28.0':
+ resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/sunos-x64@0.28.1':
resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==}
engines: {node: '>=18'}
@@ -4563,6 +4869,18 @@ packages:
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.27.7':
+ resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-arm64@0.28.0':
+ resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-arm64@0.28.1':
resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==}
engines: {node: '>=18'}
@@ -4575,6 +4893,18 @@ packages:
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.27.7':
+ resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.28.0':
+ resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-ia32@0.28.1':
resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==}
engines: {node: '>=18'}
@@ -4587,14 +4917,26 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.27.7':
+ resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.28.0':
+ resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@esbuild/win32-x64@0.28.1':
resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
- '@exodus/bytes@1.15.1':
- resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==}
+ '@exodus/bytes@1.15.0':
+ resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
'@noble/hashes': ^1.8.0 || ^2.0.0
@@ -4658,17 +5000,23 @@ packages:
'@floating-ui/vue@1.1.9':
resolution: {integrity: sha512-BfNqNW6KA83Nexspgb9DZuz578R7HT8MZw1CfK9I6Ah4QReNWEJsXWHN+SdmOVLNGmTPDi+fDT535Df5PzMLbQ==}
- '@formatjs/fast-memoize@3.1.6':
- resolution: {integrity: sha512-H5aexk1Le7T9TPmscacZ+1pR6CTa2n1wq+HDVGXhH8TzUlQQpeXzZs91dRtmFHrbeNbjPFPfQujUqm7MHgVoXQ==}
+ '@formatjs/ecma402-abstract@3.1.0':
+ resolution: {integrity: sha512-CjP1sUzM7XiQW6YluDreN+dMvcKZysO/J4ikvuDjDyd6nSOoSqAK9gvD1s75ZFaJVXtYOsz+y3CUXPZ1sKxcxw==}
- '@formatjs/icu-messageformat-parser@3.5.12':
- resolution: {integrity: sha512-YyzzxVgYJ8DELmmkhn0Yr0rUj0dTJFf9Jp628K3S0ysInBWxLVDOS8i3RP91cCp4DMK4WYb4cVMhWA9i4knSJg==}
+ '@formatjs/fast-memoize@3.1.0':
+ resolution: {integrity: sha512-b5mvSWCI+XVKiz5WhnBCY3RJ4ZwfjAidU0yVlKa3d3MSgKmH1hC3tBGEAtYyN5mqL7N0G5x0BOUYyO8CEupWgg==}
- '@formatjs/icu-skeleton-parser@2.1.10':
- resolution: {integrity: sha512-XuSva+8ZGawk8VnD5VD6UeH8KarQ/Z022zgjHDoHmlNiAewstXuuzXc0Hk5pGFSdG+nNw5bfJKXqj1ZXHn9yUA==}
+ '@formatjs/icu-messageformat-parser@3.5.0':
+ resolution: {integrity: sha512-Q01XuvtbDVCJQsG/E2MSfMZ+UdUoZV8v4Aex8tTH44SqKJZCeu5LjuclaKFUS0o1YoXndfEinJen5k1T1GR1vg==}
- '@formatjs/intl-localematcher@0.8.10':
- resolution: {integrity: sha512-P/IC3qws3jH+1fEs+o0RIFgXKRaQlFehjS5W0FPAqdo6hgzawLl+eD0q0JjheQ3XtoOe5n8WSYfX06KQZI/QJA==}
+ '@formatjs/icu-skeleton-parser@2.1.0':
+ resolution: {integrity: sha512-wNer4imHDFBVAJnMb2OGoSyM4wL/uuLnuo5mrenliqkDaNjRbG4jzlJcwTTDEBhai8iCjnzUsE7xwNJC29SfWw==}
+
+ '@formatjs/intl-localematcher@0.8.0':
+ resolution: {integrity: sha512-zgMYWdUlmEZpX2Io+v3LHrfq9xZ6khpQVf9UAw2xYWhGerGgI9XgH1HvL/A34jWiruUJpYlP5pk4g8nIcaDrXQ==}
+
+ '@formatjs/intl-localematcher@0.8.1':
+ resolution: {integrity: sha512-xwEuwQFdtSq1UKtQnyTZWC+eHdv7Uygoa+H2k/9uzBVQjDyp9r20LNDNKedWXll7FssT3GRHvqsdJGYSUWqYFA==}
'@gfazioli/mantine-onboarding-tour@4.0.6':
resolution: {integrity: sha512-EMXwq5VPdQO8ppgKGY3i/KbB3jfuqJir5xmbAx0RNV3Ua3uXfznXJb0mNLykP1gQ+qe6WceORNsFUtQS0tIZAw==}
@@ -4679,17 +5027,12 @@ packages:
react: ^18.x || ^19.x
react-dom: ^18.x || ^19.x
- '@grpc/grpc-js@1.14.4':
- resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==}
+ '@grpc/grpc-js@1.12.5':
+ resolution: {integrity: sha512-d3iiHxdpg5+ZcJ6jnDSOT8Z0O0VMVGy34jAnYLUX8yd36b1qn8f1TwOA/Lc7TsOh03IkPJ38eGI5qD2EjNkoEA==}
engines: {node: '>=12.10.0'}
- '@grpc/proto-loader@0.7.15':
- resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==}
- engines: {node: '>=6'}
- hasBin: true
-
- '@grpc/proto-loader@0.8.1':
- resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==}
+ '@grpc/proto-loader@0.7.13':
+ resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
@@ -4725,7 +5068,7 @@ packages:
resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==}
engines: {node: '>=18.14.1'}
peerDependencies:
- hono: '>=4.12.27'
+ hono: '>=4.12.28'
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@@ -4733,8 +5076,8 @@ packages:
'@iconify/utils@3.1.3':
resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==}
- '@img/colour@1.1.0':
- resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
+ '@img/colour@1.0.0':
+ resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
engines: {node: '>=18'}
'@img/sharp-darwin-arm64@0.34.5':
@@ -4893,9 +5236,9 @@ packages:
resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}
engines: {node: '>=18'}
- '@inquirer/ansi@2.0.7':
- resolution: {integrity: sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
+ '@inquirer/ansi@2.0.5':
+ resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
'@inquirer/checkbox@4.3.2':
resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}
@@ -4915,9 +5258,9 @@ packages:
'@types/node':
optional: true
- '@inquirer/confirm@6.1.1':
- resolution: {integrity: sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
+ '@inquirer/confirm@6.0.13':
+ resolution: {integrity: sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -4933,9 +5276,9 @@ packages:
'@types/node':
optional: true
- '@inquirer/core@11.2.1':
- resolution: {integrity: sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
+ '@inquirer/core@11.1.10':
+ resolution: {integrity: sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -4973,9 +5316,9 @@ packages:
resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}
engines: {node: '>=18'}
- '@inquirer/figures@2.0.7':
- resolution: {integrity: sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
+ '@inquirer/figures@2.0.5':
+ resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
'@inquirer/input@4.3.1':
resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}
@@ -5049,9 +5392,9 @@ packages:
'@types/node':
optional: true
- '@inquirer/type@4.0.7':
- resolution: {integrity: sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==}
- engines: {node: '>=23.5.0 || ^22.13.0 || ^20.17.0'}
+ '@inquirer/type@4.0.5':
+ resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==}
+ engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
@@ -5071,6 +5414,10 @@ packages:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
+ '@isaacs/cliui@9.0.0':
+ resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==}
+ engines: {node: '>=18'}
+
'@jellyfin/sdk@0.13.0':
resolution: {integrity: sha512-oiBAOXH6s+dKdReSsYgNktBDzbxtg4JVWhEzIxZSxKcWMdSKmBtK41MhXRO7IWAC40DguKUm3nU/Z493qPAlWA==}
peerDependencies:
@@ -5154,50 +5501,50 @@ packages:
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-core@4.57.8':
- resolution: {integrity: sha512-YzVbwggV9452VCeHgo0bjsTaUt1O7JE0XpEsPar93nn/+RAwXk0mb1Y+f5EDJ3TRtRCFe+Ck5RuojdfB4jeHVw==}
+ '@jsonjoy.com/fs-core@4.57.6':
+ resolution: {integrity: sha512-uI++Wx6VkBJqVmkb4ZeExwAVpZiA2Do5NrEtXoDk0Pdvce3ytFXJoviT1sLOj16+qDIMnD5nWPfOhVpnDmRJKg==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-fsa@4.57.8':
- resolution: {integrity: sha512-vmClyvCQMxgqz7uamDiGtRfp4MjzOznk3pcQjCxlIwJcw7TWeyr+bF30hI0x8NxdtNOGMg1pHM74VDIXOeyjuw==}
+ '@jsonjoy.com/fs-fsa@4.57.6':
+ resolution: {integrity: sha512-pKkw/yC5CzSZKhIIUIsH1przOa+K5jGmZIg1sWaSF24JojyrUFbjcQv7QrcGAudriei6HQ6R0BFj+V8NbQinJw==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-node-builtins@4.57.8':
- resolution: {integrity: sha512-mxXSXw8zZwRVakcjLqR2I/psy4gURFSASZS10kKJ2kJw05GC2nXGroGrWVHxwgkxXgQLsFQnB74QaLzsxzdL/w==}
+ '@jsonjoy.com/fs-node-builtins@4.57.6':
+ resolution: {integrity: sha512-V4DgEFT3Cg5S9fCMOZSCVdTxdJWWLBO0WnAazV7hnCM96u5zXHyW/ubDAfcSVwqjkMJ50W1Y44IXtxRoIwaCVg==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-node-to-fsa@4.57.8':
- resolution: {integrity: sha512-AWZcT/4+H+iDl4XCukbXrarvwEgOrf/prFI5/7eg4ix9FxqVsZysIDJd1Kjd+AjlCeHKHJOaRqjLd5HiGSCJEw==}
+ '@jsonjoy.com/fs-node-to-fsa@4.57.6':
+ resolution: {integrity: sha512-+JptNw3iifihxH2rEXrninDzX4FFVW8JD/wPR8GbJPAeL9CQUSblrlumOPB5gZuS7tYRX+PJPLtT7XzKoRhv/Q==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-node-utils@4.57.8':
- resolution: {integrity: sha512-E/bJ7sQAb4pu9nbeJhbULU3WnqWrswte4N9Js/oHt7aHB746S8/XBqKlcbrqIgnD3095XluovNEZuu5ONT230g==}
+ '@jsonjoy.com/fs-node-utils@4.57.6':
+ resolution: {integrity: sha512-foyUrfS7WmYEUzqYXSNxmJBcSj04TABrkpFabwO9SCDCpVCfJ+qG+2sk5FjfiflG2n0SDFZDCJ6vYlJAEpxJFg==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-node@4.57.8':
- resolution: {integrity: sha512-IPEOlDYSnTDYpjQlQg2F8h+eqxKQN3sdbroI0WrteRiQZ462HzVpBo9ZZX485njz4nAacoe3fd4iDiIhk+k5Hg==}
+ '@jsonjoy.com/fs-node@4.57.6':
+ resolution: {integrity: sha512-Kbn1jdkvDN4F2+BhoB6mMu7NCbhP0bgA5NcI1aJj/Q5UcU+I1JLLW+dEQean33iV4tXv35AzBVKPICnDltBpxw==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-print@4.57.8':
- resolution: {integrity: sha512-DfzhOBpmvNu5P/KSe4NNQaOnvNliTdcf0qrh/4EReErF/XUQXYkd0vZl/OiJCm/qjEEo8DWRstliw2/JNS84dA==}
+ '@jsonjoy.com/fs-print@4.57.6':
+ resolution: {integrity: sha512-96eAn4Dudtt67LTeuU47yUD+pg9/G/oKpI10zei9ljk3X3WK4lYKc+n3cpaPCAbKPzoyfxl0mXm8f8Y7BOSFXw==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
- '@jsonjoy.com/fs-snapshot@4.57.8':
- resolution: {integrity: sha512-L+eqKaWOHLDaiMv1dh/EWQ4hA+o6xAhWSumTo3Teg7OM18jU/KE13/e8Mfal+eAZ/pSl4wIhKHcDiwapJzC8Wg==}
+ '@jsonjoy.com/fs-snapshot@4.57.6':
+ resolution: {integrity: sha512-V57CMzbOgTzUWGOWQ8GzHQdpJP6JnrYVNCtTBNxVYEnlVRvo4uEJqHhtAT8vhDFrIuJOXLrTL1Fki4h5oI7xxg==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
@@ -5250,8 +5597,8 @@ packages:
'@lezer/common@1.5.2':
resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==}
- '@lezer/css@1.3.4':
- resolution: {integrity: sha512-N+tn9tej2hPvyKgHEApMOQfHczDJCwxrRFS3SPn9QjYN+uwHvEDnCgKRrb3mxDYxRS8sKMM8fhC3+lc04Abz5Q==}
+ '@lezer/css@1.3.3':
+ resolution: {integrity: sha512-RzBo8r+/6QJeow7aPHIpGVIH59xTcJXp399820gZoMo9noQDRVpJLheIBUicYwKcsbOYoBRoLZlf2720dG/4Tg==}
'@lezer/highlight@1.2.3':
resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==}
@@ -5369,8 +5716,8 @@ packages:
react: ^19.2.0
react-dom: ^19.2.0
- '@marijn/find-cluster-break@1.0.3':
- resolution: {integrity: sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==}
+ '@marijn/find-cluster-break@1.0.2':
+ resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==}
'@mdx-js/mdx@3.1.1':
resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==}
@@ -5381,8 +5728,8 @@ packages:
'@types/react': '>=16'
react: '>=16'
- '@mermaid-js/parser@1.2.0':
- resolution: {integrity: sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==}
+ '@mermaid-js/parser@1.1.1':
+ resolution: {integrity: sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==}
'@modelcontextprotocol/sdk@1.26.0':
resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==}
@@ -5435,57 +5782,57 @@ packages:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
- '@next/env@16.2.9':
- resolution: {integrity: sha512-ki5VxxXfzD/9TDe13wyeTKIjQTAwBVpnr8KhRDUr8ltMUq1/NBpWNT5tiPoxiGl+PHM4X2ahSOiPk6iAimIzPg==}
+ '@next/env@16.2.10':
+ resolution: {integrity: sha512-zLPxg9M0MEHmygpj5OuxjQ+vHMiy/K7cSp74G8ecYolmgUWw0RwN02tF56npup/+qaI8JB97hQgS/r2Hb6QwVA==}
- '@next/swc-darwin-arm64@16.2.9':
- resolution: {integrity: sha512-HkfxNYUCmcct0Xsqib5KxqMSHV4AHJq857BNRchyBDs4YS19aHzVfn1kDuBYKqLLQBjXgnkIsjV2Kd4d2wzYhw==}
+ '@next/swc-darwin-arm64@16.2.10':
+ resolution: {integrity: sha512-v9IdJCa0H0mbo+8z5zwUpOk1Vj7RjkcI5uNYf5Ws1y6szf/p3Mzl9hLaST8SCt6L9h8NGnruZcd2+o0NTNwDhA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.2.9':
- resolution: {integrity: sha512-7IAtK4MeybpqRV9GRABWEhJ62mOS+rzWOzOTFie4cSEtm12xsoOMJRcECoZx3FHPzFAqN/IJtHqWAFOLfl152w==}
+ '@next/swc-darwin-x64@16.2.10':
+ resolution: {integrity: sha512-17IS0jJRViROGmA9uGdNR8VPJpfbnaVG7E9qhso5jDLkmyd0lSDORWxbcKINzcFqzZqGwGtMSnrFRxBpuUYjLQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.2.9':
- resolution: {integrity: sha512-hBD75iWpUtkL9SmQmcRhmLomn9jgkPzCEkbOcLgHymPEKzv+6ONy13RRiIEz/iEObjkS2Jlb5gYS2XGoS3X4rw==}
+ '@next/swc-linux-arm64-gnu@16.2.10':
+ resolution: {integrity: sha512-GRQRsRtuciNJvB54AvvuQTiq0oZtFwa1owQqtZD8wwnGpM2L39MV22kpI72YSXLKIyY40LC66EiLFv4PiicXxg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@next/swc-linux-arm64-musl@16.2.9':
- resolution: {integrity: sha512-qZTI3pf9SGc/obr8NkQAekBxmp1QK+kVm+VAf3BALLfFAj+1kUhkTxmrWpVos9R/UYIA8AWX2p6cGI5WdwzVUA==}
+ '@next/swc-linux-arm64-musl@16.2.10':
+ resolution: {integrity: sha512-zkN9MQYS7UQBro+FnISUq1itaQjXI9xqISzuQ+2bc921NcJ1x4yPCqrn77tVN6/dOOXaaWVX3k6/bR07pPwK+A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@next/swc-linux-x64-gnu@16.2.9':
- resolution: {integrity: sha512-xm0HfRNX+UkH4R3c18ynswjj5o5uEj/7iI9p9omdtTSIsRCzQqkGMA+10nzJ4EHnYC3as65IMhbbl5fWRUWHYg==}
+ '@next/swc-linux-x64-gnu@16.2.10':
+ resolution: {integrity: sha512-iCVJnwvrPYECvA6WM/7+oo+OiTvedIKLxtCLAZP4xZR3nXa1zmzZyLPbYCmWvpd4CvMYF1EMTafd0ii3DygLvA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@next/swc-linux-x64-musl@16.2.9':
- resolution: {integrity: sha512-QumimHkGEG6vM3PfEDWKyKen03NcqLOkeKB1EfcPe7VxzmEiCa4jNnMyBn/US5zcd/VE1CI+O8Ovb3lfjVHfGw==}
+ '@next/swc-linux-x64-musl@16.2.10':
+ resolution: {integrity: sha512-ov2g4H0dHY9bPoOU83m91hWT7Iq5qy13bUnyyshLU3HGR1Ownn0X9QpmDPc5iIUaahTp7f7LeGAhV4DSFtackw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@next/swc-win32-arm64-msvc@16.2.9':
- resolution: {integrity: sha512-hzQpKZvw8rAwI6A2uQh6SacCSvNAXaIkPNsWwzqqfRiIMiXMfH936skDhz1OO6KpvdKkJrgHHtqQOq5PIXOvdQ==}
+ '@next/swc-win32-arm64-msvc@16.2.10':
+ resolution: {integrity: sha512-DwAnhLX76HQiFFQNgWlcK+JzlnD1rZ+UK/WY0ZMI/deXpvgnesjNYrqcfo1JzBuz4Kf7o3brIBL0glI1junatA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.2.9':
- resolution: {integrity: sha512-qr2VL3Ce5QrwgO2yh1ujSBawrimjVKX8FGF/cOynmdYKJY0BdHpGVNIRK1tqONB10Vkm25Ub1BD2bkjWs4+96w==}
+ '@next/swc-win32-x64-msvc@16.2.10':
+ resolution: {integrity: sha512-0JXq3b85Jk9Jg4ntLUbXSPvoDw3gpZou7twuKdoFG2jOw635v7+IiXfTaa0TxVMyx78pUjnrVYwLgjKfX4e6/A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -5551,10 +5898,13 @@ packages:
resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==}
engines: {node: '>= 16'}
- '@noble/hashes@2.2.0':
- resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==}
+ '@noble/hashes@2.0.1':
+ resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==}
engines: {node: '>= 20.19.0'}
+ '@nodable/entities@2.1.0':
+ resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==}
+
'@nodable/entities@2.2.0':
resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==}
@@ -5605,8 +5955,8 @@ packages:
resolution: {integrity: sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==}
engines: {node: '>= 20'}
- '@octokit/endpoint@11.0.3':
- resolution: {integrity: sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==}
+ '@octokit/endpoint@11.0.2':
+ resolution: {integrity: sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==}
engines: {node: '>= 20'}
'@octokit/graphql@9.0.3':
@@ -5628,8 +5978,8 @@ packages:
'@octokit/openapi-types@27.0.0':
resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==}
- '@octokit/openapi-webhooks-types@12.1.0':
- resolution: {integrity: sha512-WiuzhOsiOvb7W3Pvmhf8d2C6qaLHXrWiLBP4nJ/4kydu+wpagV5Fkz9RfQwV2afYzv3PB+3xYgp4mAdNGjDprA==}
+ '@octokit/openapi-webhooks-types@11.0.0':
+ resolution: {integrity: sha512-ZBzCFj98v3SuRM7oBas6BHZMJRadlnDoeFfvm1olVxZnYeU6Vh97FhPxyS5aLh5pN51GYv2I51l/hVUAVkGBlA==}
'@octokit/plugin-paginate-graphql@6.0.0':
resolution: {integrity: sha512-crfpnIoFiBtRkvPqOyLOsw12XsveYuY2ieP6uYDosoUegBJpSVxGwut9sxUgFFcll3VTOTqpUf8yGd8x1OmAkQ==}
@@ -5649,8 +5999,8 @@ packages:
peerDependencies:
'@octokit/core': '>=6'
- '@octokit/plugin-retry@8.1.0':
- resolution: {integrity: sha512-O1FZgXeiGb2sowEr/hYTr6YunGdSAFWnr2fyW39Ah85H8O33ELASQxcvOFF5LE6Tjekcyu2ms4qAzJVhSaJxTw==}
+ '@octokit/plugin-retry@8.0.3':
+ resolution: {integrity: sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==}
engines: {node: '>= 20'}
peerDependencies:
'@octokit/core': '>=7'
@@ -5661,12 +6011,12 @@ packages:
peerDependencies:
'@octokit/core': ^7.0.0
- '@octokit/request-error@7.1.0':
- resolution: {integrity: sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==}
+ '@octokit/request-error@7.0.2':
+ resolution: {integrity: sha512-U8piOROoQQUyExw5c6dTkU3GKxts5/ERRThIauNL7yaRoeXW0q/5bgHWT7JfWBw1UyrbK8ERId2wVkcB32n0uQ==}
engines: {node: '>= 20'}
- '@octokit/request@10.0.11':
- resolution: {integrity: sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==}
+ '@octokit/request@10.0.6':
+ resolution: {integrity: sha512-FO+UgZCUu+pPnZAR+iKdUt64kPE7QW7ciqpldaMXaNzixz5Jld8dJ31LAUewk0cfSRkNSRKyqG438ba9c/qDlQ==}
engines: {node: '>= 20'}
'@octokit/types@16.0.0':
@@ -5676,8 +6026,8 @@ packages:
resolution: {integrity: sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ==}
engines: {node: '>= 20'}
- '@octokit/webhooks@14.2.0':
- resolution: {integrity: sha512-da6KbdNCV5sr1/txD896V+6W0iamFWrvVl8cHkBSPT+YlvmT3DwXa4jxZnQc+gnuTEqSWbBeoSZYTayXH9wXcw==}
+ '@octokit/webhooks@14.0.0':
+ resolution: {integrity: sha512-IZV4vg/s1pqIpCs86a0tp5FQ/O94DUaqksMdNrXFSaE037TXsB+fIhr8OVig09oEx3WazVgE6B2U+u7/Fvdlsw==}
engines: {node: '>= 20'}
'@open-draft/deferred-promise@2.2.0':
@@ -5703,124 +6053,124 @@ packages:
'@oxc-project/types@0.138.0':
resolution: {integrity: sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA==}
- '@oxfmt/binding-android-arm-eabi@0.57.0':
- resolution: {integrity: sha512-qVBsEO+KugOsCmUHcO8iqNnqc65p7PCKpCs8M66mPZ+Ri+CWbcpoQOEJBg2OTu03+0qu++NK1jj6IzvQVs0Sig==}
+ '@oxfmt/binding-android-arm-eabi@0.58.0':
+ resolution: {integrity: sha512-Uz62sHduGGPftXtILGyxdSW4PX82rUg+rfdNqhsgxe881g4rIoXlIqmZQ6HVKcF4f+F8qMhdD03Bx5u7gmeTdg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxfmt/binding-android-arm64@0.57.0':
- resolution: {integrity: sha512-mp6PibWbao3aizijcheOeHQaYEhcUAt8pwLniYbtLfHxL/psFF0BykAwCj+s3c6qIpa8yN8keZICWrqtZ70w8g==}
+ '@oxfmt/binding-android-arm64@0.58.0':
+ resolution: {integrity: sha512-rD0lRaJp1b+9vw6X4A2dJWKukd6X8yxiicN4JxXcXayolmUypRZxk+lKR+fVOu5q/iYc0fh5fR4bgmfOfVlbaA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxfmt/binding-darwin-arm64@0.57.0':
- resolution: {integrity: sha512-T+0stuCBqmUVY+aMIvrgXhzGhHO3sD5tNiiEcYqgSdPsnukskQqn2u5qOVD0sv1l7RLdFS5Z/f5Wi9Ktyjr3Eg==}
+ '@oxfmt/binding-darwin-arm64@0.58.0':
+ resolution: {integrity: sha512-uzbPPk7O6M+w2K65vcQ1woga3wgP8zghjL1KOG5b6qJ8dvYHZJ1VShaslg2KOK6yQIwCQtcMCXqLBM6sqXUNTg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxfmt/binding-darwin-x64@0.57.0':
- resolution: {integrity: sha512-O+3JbqWs/mCI2oi4xfhRO2IVPFJNDDEBV8Odo+ZpmsUOeKJfjXoNH7nDmBEQcDgK7NfjDIyE7kRgYSZcTLDO0A==}
+ '@oxfmt/binding-darwin-x64@0.58.0':
+ resolution: {integrity: sha512-L0nKYDxU32oxeQqJj21W9SlIMnf81VZEhyah6iDvFhf5q0oynq498Fopth7blErUJVBpVtxQ98RMCfMPqpJX6w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxfmt/binding-freebsd-x64@0.57.0':
- resolution: {integrity: sha512-pxwhxVC+JkLX9twOQ/8C/vbuOQcMZyKIDmiRDZfO7yITuVcIdZCiLRqqf4QOxb2+8FWrRXzQpm+1DBKcMpHSSQ==}
+ '@oxfmt/binding-freebsd-x64@0.58.0':
+ resolution: {integrity: sha512-woNwfD58dC5PGS9LSLSD5JYfo/EFK5iG9vhDWkcCg3q78ag7KC8bpDqgvPHrMoXpx83OLXxoSOhu6z8FsVTHlg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxfmt/binding-linux-arm-gnueabihf@0.57.0':
- resolution: {integrity: sha512-pxBU4zH2imB/MDBfth2rOMeVxXUMjRQLCazagwLARIFH3hVlxZJBlM4nSnHXaIHJK4/qezoFCIORN6AY8Mra4A==}
+ '@oxfmt/binding-linux-arm-gnueabihf@0.58.0':
+ resolution: {integrity: sha512-Sqs8nMLxuQpY21NKJ1u4stPDmO5hskBCNNh2E3AdCfI1QqWtf4m+Qn4mGEIUO4KGmuq3SWc/SZ80uy5IiwTCDw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxfmt/binding-linux-arm-musleabihf@0.57.0':
- resolution: {integrity: sha512-JAprOzt8tycYou36ZgEw14DlRHTiN8qdtKANdV3VZIRIvTI/lh/cX13c9pJ/EnDk2GT3FASH7KvCgQ2AufAifQ==}
+ '@oxfmt/binding-linux-arm-musleabihf@0.58.0':
+ resolution: {integrity: sha512-Vd4exzBI5B5hB9m22JiTQzIL23WvHo/Pe+sNXPNeBLXSP9swCBPKCEBRwKpmpQzYhlgYaCgfPcGXPKAJBRIiZQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxfmt/binding-linux-arm64-gnu@0.57.0':
- resolution: {integrity: sha512-ajtjaxSaj9xl4BW7REt+Cef/ttzbAq00Bq4z7JUDZEfgFXdwSjH8K9bF+IcIJzZB9lKqMfQ4eHuSFOvvlvtqOg==}
+ '@oxfmt/binding-linux-arm64-gnu@0.58.0':
+ resolution: {integrity: sha512-bUWi5mHV+4Vi56RLHE1h6q/HHfwAIT3XoB9vJAVeRzfu5NriXM8y6eeJu0vlKa0C9kq2rq1sOWRClhdLHPocrg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-arm64-musl@0.57.0':
- resolution: {integrity: sha512-p4Y/+RYk9Bk5WO+zHSUXAClRmZ2fbJCejMuCAsU2HhyME4jqf6Ftt/mJYEwIah1wGCBDYOB7wEGV1x5bCEZ6hA==}
+ '@oxfmt/binding-linux-arm64-musl@0.58.0':
+ resolution: {integrity: sha512-2ZHxemzgHcjtktAuVUwSoyXmGo/t+aF5tS1ciPpPei4rhSyrz3JOqDosXXrmhN/yLUSzJjtuW7ToTWqfQpCj2w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-linux-ppc64-gnu@0.57.0':
- resolution: {integrity: sha512-By6tRALAZsno0F4zedmtG+wdMvJiJmJoXM4d3+A9zHE4HRXLqXITwRH8mgrlcXc5yJM2g2W3riRPwTYdgemZLQ==}
+ '@oxfmt/binding-linux-ppc64-gnu@0.58.0':
+ resolution: {integrity: sha512-AwKkVwjVmFQ3bcO7j0McGYAqCKH2a326fswfofng/E8VewCT/raeeGQr4huVhY704deK8AWASSTlxzMj0eZc6Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-riscv64-gnu@0.57.0':
- resolution: {integrity: sha512-skYeG+RgvyzspqVEBsEprL90OYYZfoVNqB3HcCNR6QDJyXKOzfDRT3zncnHmUaFluIlBHuY23mU1b5WGgR98hA==}
+ '@oxfmt/binding-linux-riscv64-gnu@0.58.0':
+ resolution: {integrity: sha512-xsRpTxfUnJF8D3AUKko/qyWdjw4GZVHlCVFuGlzSCTeewLmykKINW8em1+wx+axsDVtJJcMtvsiaXggXxrlHgw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-riscv64-musl@0.57.0':
- resolution: {integrity: sha512-FFgACrZOXAXUh5KQh2mt1CDOVOZmn+QzHP71wM9QobNwyQvoFfyAeefVUltW83g3sm7LTiH3yfFqLLVUpA5ZFQ==}
+ '@oxfmt/binding-linux-riscv64-musl@0.58.0':
+ resolution: {integrity: sha512-Z4AYOTcy7nYEIiXwD62PlerimyYRcfJOgUbQAEBjXz098kxKuERBlRntofGy69HHhe9E0TLVNMl1yspVNu+efw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-linux-s390x-gnu@0.57.0':
- resolution: {integrity: sha512-Nm/BAOfQeFiiKd502mZn/GAVKJwtd0RdCg17G3Wz/WSOIQmDi3+7/SZH4BHn1Ye5KvTVH3ua8WvfwLLycNIuvA==}
+ '@oxfmt/binding-linux-s390x-gnu@0.58.0':
+ resolution: {integrity: sha512-A3nhhtZPC/TKVWOPj9q/H3p2znJDCcHWYlJBhWL8hGq/bFmBaNBHC8Np6E581yVq1w9Mi3rMDNzDalWvtUfJtQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-x64-gnu@0.57.0':
- resolution: {integrity: sha512-BiSy5Ku3mQqyxS6YIqAJgd403wEUWvI7kerfzPxc2l/txZVmZM0pSj7oDM+4bGBExowxOi7o73jEam1W0EDTZg==}
+ '@oxfmt/binding-linux-x64-gnu@0.58.0':
+ resolution: {integrity: sha512-2g+tVkgwqphw8R4hgo+kF4oz8+P5RwVOtr9+irsC7uwEp0e9j7Crw8kDGKL20uYlLPD7g02DqA61mC/UNYx98A==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@oxfmt/binding-linux-x64-musl@0.57.0':
- resolution: {integrity: sha512-BCRkJiotz5s9afLYD2LuMvzAoDYx9H17E/YbDyu4xK7l4zHDPeny9ErSXL//i/nJyaOwRk08x4b8cgJC00+JDg==}
+ '@oxfmt/binding-linux-x64-musl@0.58.0':
+ resolution: {integrity: sha512-rc15P6AbyyB7426aN8AakLd02Trb3a6ML/mmfAQeVHJEfVofWLcWIrBdy6zDEY+DIaL/s8E4GGPboVw+oP3+EA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
- '@oxfmt/binding-openharmony-arm64@0.57.0':
- resolution: {integrity: sha512-4Oaxe1qrGgXfpCJ1C/ERJ2iCtV2rN1R79ga9fsfyVHfSQRu/hVW780u2KDqZWFZ/iGTHODJji0JemxqFZ63eIQ==}
+ '@oxfmt/binding-openharmony-arm64@0.58.0':
+ resolution: {integrity: sha512-ZWoTM27/HYPOh9iq86DAbhPu9nXb8qKvvGU/h8OfliyVUFAMMNTLDkGsWDKKnDqIkqvZ9+dXlgUOsH1LYO3O7g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxfmt/binding-win32-arm64-msvc@0.57.0':
- resolution: {integrity: sha512-MYLAsDnhdNsSGheLYhWgbk0vfIrlS84iQYun/y21fX6u0jj8iBtYtbpZMdiqYeuf8U12eVPUjVY2xE2NrCfJ0g==}
+ '@oxfmt/binding-win32-arm64-msvc@0.58.0':
+ resolution: {integrity: sha512-LHZnqFXe2dEfkRI4XdZS/57nEOT/I4UCRX5IyM9v4GYW9XwQCjGe1IUK59SuKw3POwvcgWQ4pme2cYXmNqTNPg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxfmt/binding-win32-ia32-msvc@0.57.0':
- resolution: {integrity: sha512-PBwdzZALJY/jcCx2E6is0yu+cuVXeySTDmwuseD+9j0mHqlRNxwlKgsyRTBed/woPeqfVfuXfWjoq4Cx2Zt3Eg==}
+ '@oxfmt/binding-win32-ia32-msvc@0.58.0':
+ resolution: {integrity: sha512-mZKpg20TpheCJym1rarcZCUJeW1sSruw8zAAaCYWvuVfwIUDN1CXdrPU/JgCWReXTCTrEfCB8Wyo3hh9jSZ2EA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxfmt/binding-win32-x64-msvc@0.57.0':
- resolution: {integrity: sha512-bQJdH9i4RRfw55jm7+8/xS7GzHLLTbHx4huhrrDxQJaJtbSDbsyOnODvP1ftT7EG0KFKAYO2S+q6AcioXODx8w==}
+ '@oxfmt/binding-win32-x64-msvc@0.58.0':
+ resolution: {integrity: sha512-N/wUU4N5PZ2orBtI+Ko7MnMfYLfE7K91UrGMY/c/pYyHR3lA9kwst1XugkZx+92YcRh/Eo+iv2eTESSWXfiZPA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -5954,123 +6304,116 @@ packages:
resolution: {integrity: sha512-OqiFvSOF0dBSesELYY2CAMa4YINvlLpvKOz/rv6NeZEqiyttlHgv98Juwv4Ch+GrEV7IZ8jfI2VcEoYUjXXCjw==}
hasBin: true
- '@parcel/watcher-android-arm64@2.5.6':
- resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
+ '@parcel/watcher-android-arm64@2.4.1':
+ resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [android]
- '@parcel/watcher-darwin-arm64@2.5.6':
- resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
+ '@parcel/watcher-darwin-arm64@2.4.1':
+ resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [darwin]
- '@parcel/watcher-darwin-x64@2.5.6':
- resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
+ '@parcel/watcher-darwin-x64@2.4.1':
+ resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [darwin]
- '@parcel/watcher-freebsd-x64@2.5.6':
- resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
+ '@parcel/watcher-freebsd-x64@2.4.1':
+ resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [freebsd]
- '@parcel/watcher-linux-arm-glibc@2.5.6':
- resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
+ '@parcel/watcher-linux-arm-glibc@2.4.1':
+ resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
libc: [glibc]
- '@parcel/watcher-linux-arm-musl@2.5.6':
- resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
- libc: [musl]
-
- '@parcel/watcher-linux-arm64-glibc@2.5.6':
- resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
+ '@parcel/watcher-linux-arm64-glibc@2.4.1':
+ resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@parcel/watcher-linux-arm64-musl@2.5.6':
- resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
+ '@parcel/watcher-linux-arm64-musl@2.4.1':
+ resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@parcel/watcher-linux-x64-glibc@2.5.6':
- resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
+ '@parcel/watcher-linux-x64-glibc@2.4.1':
+ resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@parcel/watcher-linux-x64-musl@2.5.6':
- resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
+ '@parcel/watcher-linux-x64-musl@2.4.1':
+ resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@parcel/watcher-win32-arm64@2.5.6':
- resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
+ '@parcel/watcher-win32-arm64@2.4.1':
+ resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [win32]
- '@parcel/watcher-win32-ia32@2.5.6':
- resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
+ '@parcel/watcher-win32-ia32@2.4.1':
+ resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==}
engines: {node: '>= 10.0.0'}
cpu: [ia32]
os: [win32]
- '@parcel/watcher-win32-x64@2.5.6':
- resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
+ '@parcel/watcher-win32-x64@2.4.1':
+ resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [win32]
- '@parcel/watcher@2.5.6':
- resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
+ '@parcel/watcher@2.4.1':
+ resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==}
engines: {node: '>= 10.0.0'}
- '@peculiar/asn1-cms@2.8.0':
- resolution: {integrity: sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==}
+ '@peculiar/asn1-cms@2.7.0':
+ resolution: {integrity: sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ==}
- '@peculiar/asn1-csr@2.8.0':
- resolution: {integrity: sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==}
+ '@peculiar/asn1-csr@2.7.0':
+ resolution: {integrity: sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA==}
- '@peculiar/asn1-ecc@2.8.0':
- resolution: {integrity: sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==}
+ '@peculiar/asn1-ecc@2.7.0':
+ resolution: {integrity: sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw==}
- '@peculiar/asn1-pfx@2.8.0':
- resolution: {integrity: sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==}
+ '@peculiar/asn1-pfx@2.7.0':
+ resolution: {integrity: sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA==}
- '@peculiar/asn1-pkcs8@2.8.0':
- resolution: {integrity: sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==}
+ '@peculiar/asn1-pkcs8@2.7.0':
+ resolution: {integrity: sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw==}
- '@peculiar/asn1-pkcs9@2.8.0':
- resolution: {integrity: sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==}
+ '@peculiar/asn1-pkcs9@2.7.0':
+ resolution: {integrity: sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew==}
- '@peculiar/asn1-rsa@2.8.0':
- resolution: {integrity: sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==}
+ '@peculiar/asn1-rsa@2.7.0':
+ resolution: {integrity: sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ==}
- '@peculiar/asn1-schema@2.8.0':
- resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==}
+ '@peculiar/asn1-schema@2.7.0':
+ resolution: {integrity: sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==}
- '@peculiar/asn1-x509-attr@2.8.0':
- resolution: {integrity: sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==}
+ '@peculiar/asn1-x509-attr@2.7.0':
+ resolution: {integrity: sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w==}
- '@peculiar/asn1-x509@2.8.0':
- resolution: {integrity: sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==}
+ '@peculiar/asn1-x509@2.7.0':
+ resolution: {integrity: sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g==}
'@peculiar/utils@2.0.3':
resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==}
@@ -6079,6 +6422,9 @@ packages:
resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==}
engines: {node: '>=20.0.0'}
+ '@petamoriken/float16@3.9.3':
+ resolution: {integrity: sha512-8awtpHXCx/bNpFt4mt2xdkgtgVvKqty8VbjHI/WWWQuEw+KLzFot3f4+LkQY9YmOtq7A5GdOnqoIC8Pdygjk2g==}
+
'@phosphor-icons/core@2.1.1':
resolution: {integrity: sha512-v4ARvrip4qBCImOE5rmPUylOEK4iiED9ZyKjcvzuezqMaiRASCHKcRIuvvxL/twvLpkfnEODCOJp5dM4eZilxQ==}
@@ -6102,73 +6448,82 @@ packages:
resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
engines: {node: '>=12.22.0'}
- '@pnpm/npm-conf@3.0.3':
- resolution: {integrity: sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==}
+ '@pnpm/npm-conf@2.3.1':
+ resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
engines: {node: '>=12'}
- '@polka/url@1.0.0-next.29':
- resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
+ '@polka/url@1.0.0-next.25':
+ resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
'@posthog/core@1.39.6':
resolution: {integrity: sha512-o6ajIwN5zXoNP0D4H/QPmOyibNTUkSyOR6ya7AG5U2ywXx4awo72L2KnCoiZPQM5x/bXv6jPBdimH8M18Ax0aw==}
+ '@posthog/core@1.40.0':
+ resolution: {integrity: sha512-oGDbIwlTquNwdHbEL5ZLEkuW4UFkkEanfx3QAxDgyVbISv+OAA6YGQwrvo0JD3MUJEbJZvyh8XsX+WYDGw9XHw==}
+
'@posthog/types@1.392.0':
resolution: {integrity: sha512-nctNujXL3FC1v99FktaTMSugSD9ZOZekEpahUSafkU2TSvW+XGKNkQZbokuJtiWvPBK208dwMJva8UfBkChqpw==}
+ '@posthog/types@1.393.0':
+ resolution: {integrity: sha512-vzWeEJZ7ERQhFRoQYaP5jzN1JvIu46UJyHXsuv+dTGW2r3sMgREOhNxXLZjmFHwZ8/FOHQoyqqQmXTCXZSfMSg==}
+
'@protobufjs/aspromise@1.1.2':
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
'@protobufjs/base64@1.1.2':
resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
- '@protobufjs/codegen@2.0.5':
- resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==}
+ '@protobufjs/codegen@2.0.4':
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
- '@protobufjs/eventemitter@1.1.1':
- resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==}
+ '@protobufjs/eventemitter@1.1.0':
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
- '@protobufjs/fetch@1.1.1':
- resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==}
+ '@protobufjs/fetch@1.1.0':
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
'@protobufjs/float@1.0.2':
resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
+ '@protobufjs/inquire@1.1.0':
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
+
'@protobufjs/path@1.1.2':
resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
'@protobufjs/pool@1.1.0':
resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
- '@protobufjs/utf8@1.1.1':
- resolution: {integrity: sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==}
+ '@protobufjs/utf8@1.1.0':
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
'@pwshub/bellajs@13.0.2':
resolution: {integrity: sha512-OWOaE7Ieufo7VMv957iahOzv/w5oXyyXO28Jh2x6rLU96ZLqC508kAKTgdMJRXgVjda2s+/0C6Kno+k16OmJsQ==}
engines: {bun: '>=1.0.0', node: '>=20.0.0'}
- '@react-spring/animated@10.1.2':
- resolution: {integrity: sha512-yAsQ/bbp6+vko7WNCI1M00c6KLE9XKTGCrgRhQqS4JcK3oF5qBV4rHYrQEprvEvYXxt+1H5FsLS2eVValEPfFw==}
+ '@react-spring/animated@10.1.0':
+ resolution: {integrity: sha512-dvGVSfNYhbkzTAnyB1S1940ZiKp6/Ey+b2vQc70dJ5k6gzH/GdlfeDzCh65V94b6OPqF7Xl4VUICVUQpc07iUg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@react-spring/core@10.1.2':
- resolution: {integrity: sha512-lPGOAg0V+PV3ucopOajD+YCxoe8twALqAeG4c/+sqVjBsyUNNdx8qfz/DcNSPKA8PV3+AyQELlCxlDfap9cmBQ==}
+ '@react-spring/core@10.1.0':
+ resolution: {integrity: sha512-XUG3UCCCxay6lYjBU2KOKzEgC1sx/w44ouB5gRh2Ex6rVJOdPcGVg7JJUIOAQo7uhKGfQdCQU4qUZaQnmInZPQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@react-spring/rafz@10.1.2':
- resolution: {integrity: sha512-KC6vSFZyPnRJ2rXqipV9QqR4SaYbYXjvKfdYKWipNK2mWuV79gr20WmpVUOsTiEHGRY3WSOdWCHN+P9Pdaqb7Q==}
+ '@react-spring/rafz@10.1.0':
+ resolution: {integrity: sha512-e/LRnNmvmg8Agl4j3MGcjHuSTSBcCrxr3xeoWdodxpLWeTHY1pHl8PJDOCEJ2Pj6BMdEBaWFRAX7uxRo1FLzCg==}
- '@react-spring/shared@10.1.2':
- resolution: {integrity: sha512-47/8bNQ/o0uEmxEnPBuERlC29VSqiTn5P9ln9tUMSVkYKYxBtouYE686F5kAGj+eHRPoNCw7drxWE9nv2d1LMw==}
+ '@react-spring/shared@10.1.0':
+ resolution: {integrity: sha512-ogIUujWxdwcsQ2Vp2hZs+KehvH8tKeWGHsFb1eRBYoePzhKS541Qg1JfFlQ7ursBUwwPDBQ5Wpwn+Cwx6WV1PQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@react-spring/types@10.1.2':
- resolution: {integrity: sha512-G4CWowmVPz+rDG1y9QRVq/prZNxiNwQaHC0kgT/MgY6jAGgdRgTV4VThpvJDwWvUitk3xZB4soP4d36fjeQ09g==}
+ '@react-spring/types@10.1.0':
+ resolution: {integrity: sha512-RkJAlkAZ5yZSRBMOSidamioBHLjf8wGKbtr3pZ5iKoHFNQuNM2k6DqJDIEUcNQlWRZXny6Eqys2c9NdugdbdyQ==}
- '@react-spring/web@10.1.2':
- resolution: {integrity: sha512-KxDB3zaDqy9qFsu7fdxjyraAxweHH4k5TW5WGT/OuMK6hKaxSDfhrQfRBzfFaSVvMBf+NghbJFanllV4ia6i7A==}
+ '@react-spring/web@10.1.0':
+ resolution: {integrity: sha512-mIj/lJ+1eI4tLSkIloaSNjmuriTDZY9bbQ/GFGcbVGfOKzWb5JOMMKiuHACh8J3m0+se3KqcWdg/JoALVloE7g==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -6202,8 +6557,8 @@ packages:
peerDependencies:
'@redis/client': ^1.0.0
- '@reduxjs/toolkit@2.12.0':
- resolution: {integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==}
+ '@reduxjs/toolkit@2.11.2':
+ resolution: {integrity: sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==}
peerDependencies:
react: ^16.9.0 || ^17.0.0 || ^18 || ^19
react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0
@@ -6324,64 +6679,64 @@ packages:
os: [linux]
libc: [glibc]
- '@rspack/binding-darwin-arm64@1.7.12':
- resolution: {integrity: sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A==}
+ '@rspack/binding-darwin-arm64@1.7.11':
+ resolution: {integrity: sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==}
cpu: [arm64]
os: [darwin]
- '@rspack/binding-darwin-x64@1.7.12':
- resolution: {integrity: sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg==}
+ '@rspack/binding-darwin-x64@1.7.11':
+ resolution: {integrity: sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==}
cpu: [x64]
os: [darwin]
- '@rspack/binding-linux-arm64-gnu@1.7.12':
- resolution: {integrity: sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw==}
+ '@rspack/binding-linux-arm64-gnu@1.7.11':
+ resolution: {integrity: sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rspack/binding-linux-arm64-musl@1.7.12':
- resolution: {integrity: sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA==}
+ '@rspack/binding-linux-arm64-musl@1.7.11':
+ resolution: {integrity: sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rspack/binding-linux-x64-gnu@1.7.12':
- resolution: {integrity: sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew==}
+ '@rspack/binding-linux-x64-gnu@1.7.11':
+ resolution: {integrity: sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rspack/binding-linux-x64-musl@1.7.12':
- resolution: {integrity: sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw==}
+ '@rspack/binding-linux-x64-musl@1.7.11':
+ resolution: {integrity: sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rspack/binding-wasm32-wasi@1.7.12':
- resolution: {integrity: sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg==}
+ '@rspack/binding-wasm32-wasi@1.7.11':
+ resolution: {integrity: sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ==}
cpu: [wasm32]
- '@rspack/binding-win32-arm64-msvc@1.7.12':
- resolution: {integrity: sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g==}
+ '@rspack/binding-win32-arm64-msvc@1.7.11':
+ resolution: {integrity: sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==}
cpu: [arm64]
os: [win32]
- '@rspack/binding-win32-ia32-msvc@1.7.12':
- resolution: {integrity: sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ==}
+ '@rspack/binding-win32-ia32-msvc@1.7.11':
+ resolution: {integrity: sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==}
cpu: [ia32]
os: [win32]
- '@rspack/binding-win32-x64-msvc@1.7.12':
- resolution: {integrity: sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA==}
+ '@rspack/binding-win32-x64-msvc@1.7.11':
+ resolution: {integrity: sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==}
cpu: [x64]
os: [win32]
- '@rspack/binding@1.7.12':
- resolution: {integrity: sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA==}
+ '@rspack/binding@1.7.11':
+ resolution: {integrity: sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==}
- '@rspack/core@1.7.12':
- resolution: {integrity: sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ==}
+ '@rspack/core@1.7.11':
+ resolution: {integrity: sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==}
engines: {node: '>=18.12.0'}
peerDependencies:
'@swc/helpers': '>=0.5.1'
@@ -6392,41 +6747,41 @@ packages:
'@rspack/lite-tapable@1.1.0':
resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==}
- '@rvf/set-get@7.0.2':
- resolution: {integrity: sha512-MyrHwRw9/hxMncld0gpqubHJdpFP4tdGb4GDDT5I90408AzwTz1msn3ZOvMkmuVst0sa7jDuPJLaGmZV804f+w==}
+ '@rvf/set-get@7.0.1':
+ resolution: {integrity: sha512-GkTSn9K1GrTYoTUqlUs36k6nJnzjQaFBTTEIqUYmzBcsGsoJM8xG7EAx2WLHWAA4QzFjcwWUSHQ3vM3Fbw50Tg==}
- '@scalar/agent-chat@0.12.16':
- resolution: {integrity: sha512-YETdit7xhWpqdu4PMDM6AVQXID6GtJ1MSS0pmdyUFpR1xG02ABFWPsZHJ8+LQvFQXTC9ZOowtjgP8G9gTKA+KQ==}
+ '@scalar/agent-chat@0.12.18':
+ resolution: {integrity: sha512-auIe3JYVm6jgoT7pa4Za+lrLFnEa3CDb4ncZA9aAYztti8C6qSFGn8nBrAtm/RarljhPTYZg5dhqeXJ7zyOu7w==}
engines: {node: '>=22'}
- '@scalar/api-client@3.13.1':
- resolution: {integrity: sha512-+UWLBGY2dFFrbCYtEBHpjezZvSg/7eJ+CZs3oWo3Rr6JmVIJ/CKN31Ev5KAfce0w5Xmf7vbaWdExZheW+3ff7Q==}
+ '@scalar/api-client@3.13.3':
+ resolution: {integrity: sha512-m+5/L71PTk474VGl7daD+7Ue2DeQA/BPsXoWJAXzDTtOR7orySlktZ9WiaI3CbZZkjiukaICaOb9AvMotDOmIQ==}
engines: {node: '>=22'}
- '@scalar/api-reference-react@0.9.52':
- resolution: {integrity: sha512-+BkephxdTM7VFH9U/joHjOHvKadfOB9sxTCrYnWoURevz6LkrvnAGKvoALbAZBS4jbvbHabfpu6uL3sqDnV1EQ==}
+ '@scalar/api-reference-react@0.9.54':
+ resolution: {integrity: sha512-DE2a4+IPX/f4rzrXHFfMObNaXEm65JNiyHHDTk4wghetc37jA1Zxb1y/P1P/YURAjiLFNVnPdoqy2pJtZiZYFg==}
engines: {node: '>=22'}
peerDependencies:
react: ^18.0.0 || ^19.0.0
- '@scalar/api-reference@1.62.3':
- resolution: {integrity: sha512-0Q4NGSVK34tR/YMeQGxDD+v2NfH87/vDPxaBXxSyxfjg3lx/pmidt+YW2vcpxpoQdaPOVVwm8iuzcg0cxFjkCg==}
+ '@scalar/api-reference@1.62.5':
+ resolution: {integrity: sha512-6VZhjtXiYygWrh6llwg/pnKN7S4eWqINOGt2Fu7TQkCdNUKwZEq7/XiOTqzZvGp/1Uu60ne/9nJK+UbQTSVpBg==}
engines: {node: '>=22'}
'@scalar/asyncapi-upgrader@0.1.2':
resolution: {integrity: sha512-h6NUhsctrhucrbO2XHWbTXp9EWt7eL5vvlsooUEw2bB014KSPd41JrBQ6t0h/dFdmhwxdbBI7Hmg9eZa/mlCXA==}
engines: {node: '>=22'}
- '@scalar/blocks@0.1.2':
- resolution: {integrity: sha512-vJQFlEckV4NTn5x95Q1Ff5HeeHwAqaX/8MLOX3O63F/XFXotIAp+MS8BQG2jnlVxzQn5omRSCNug2Y5J5ETZEw==}
+ '@scalar/blocks@0.1.4':
+ resolution: {integrity: sha512-L6fN2azd56pQK0VN7YTPpgKXGFlATOJmIdTFfr8+G74ZAhpNifGa/6jtNe9gsfwCYW5TYu+yhbGy62Jd8MLhSg==}
engines: {node: '>=22'}
- '@scalar/code-highlight@0.4.0':
- resolution: {integrity: sha512-ajUQ9oq5MwVHrXGze0SZVatgSXP/WbN4qgE0usYDFt1XuJ+O56TaBsCWb043r3Y9ZnHSnK9GHreVaLOxXsbf1A==}
+ '@scalar/code-highlight@0.4.1':
+ resolution: {integrity: sha512-pnr8gbQuvSXu4fcPPNkFNjAxxMWiJLffN57lRgVN3FCk+Q8hKHWWT01ulAT1/0Kg3/VmgtObrMHhX2qYnpM9+g==}
engines: {node: '>=22'}
- '@scalar/components@0.27.4':
- resolution: {integrity: sha512-1sbsMYGJcWiQ+5GouI1hHCn1VrytHPhzhHhCAZTXxi1Tw4SzsPSQuACARehXca+w2p7RK9ayGRYQ+K5bX18SaQ==}
+ '@scalar/components@0.27.6':
+ resolution: {integrity: sha512-jXTv2VgYn7/13yCAGKtc/26LCnrQSULGjcnP0LasJDqkVKDdRm1StHDG5iRniqrIzS21gJ6YcNGokksdLIrgQw==}
engines: {node: '>=22'}
'@scalar/helpers@0.9.0':
@@ -6441,8 +6796,8 @@ packages:
resolution: {integrity: sha512-Vw2nrUDIjhvMP6vxFtkiiFlabJ6SyTtfn1BsOxgnr1hIB+/rkngMguiDzl5em21VjyfFGIoADia+QWKM2hdcdA==}
engines: {node: '>=22'}
- '@scalar/oas-utils@0.19.3':
- resolution: {integrity: sha512-+h/vLMfGj/mpr5FYgDLFIc+X75sYH2rc2MJNSvFTmmjMeerJDVINEYs+aYOx1Mn9Z3HnoP+qQohoWTJpg2gh7A==}
+ '@scalar/oas-utils@0.19.4':
+ resolution: {integrity: sha512-ne/Pio9NaTQTjAeJ0B7OXWNIy4ziJmMoeKRzmEvXLXJC15iDI3vJZzQJOOldg5MPVEIqHxC0NWICrwKB6nMERA==}
engines: {node: '>=22'}
'@scalar/openapi-types@0.9.1':
@@ -6453,16 +6808,16 @@ packages:
resolution: {integrity: sha512-D5b0rGLLZgmkO9mdW2j/ND1KBlH1u3RCpr87HPxv9P9ZSr6PtM5iLqFOJq0ACiaHjY2mikCrxgDmnUEhTzRpHQ==}
engines: {node: '>=22'}
- '@scalar/schemas@0.7.1':
- resolution: {integrity: sha512-80bxEp4ZOWxOm8kqhPi3kdJ2gipz2lZBSEHStAh3Z6NZPkFAOlZZYnDFwodhY0LwTihgvv4FVNmi64gziM0F1g==}
+ '@scalar/schemas@0.7.2':
+ resolution: {integrity: sha512-6Ble6WcbiKgD3ypIva+wgZv1qIClmeEjXA6jrOo1bKpYUu6sh4e89LZxDK+LULa2jQl/2O5GEaa6aZ0ImlpkHg==}
engines: {node: '>=22'}
- '@scalar/sidebar@0.9.27':
- resolution: {integrity: sha512-Y2HBOuUuRSJtB4sf9T5sqZZrsT8QNYP8kWuK8lqzsujf3bv7c4ixUFRNS568EMMjr0U7Zv9xa+LP0RHem3rt4g==}
+ '@scalar/sidebar@0.9.29':
+ resolution: {integrity: sha512-Xyq7hnkeABWYLdQ0QhxuK7EpwBKkCItyTCidmX2j8xeKw1/b/RWE95co5P09GtkjHs1g+ePU/P919WaSn80+CA==}
engines: {node: '>=22'}
- '@scalar/snippetz@0.9.20':
- resolution: {integrity: sha512-A3gSBYtoTmW3m511d02vUyl/W/eabX5y/EPAwz/u88LTzdwuDrKWbZ8iY+5dkz5e5EErhNOwQDwngmOCAA91hA==}
+ '@scalar/snippetz@0.9.21':
+ resolution: {integrity: sha512-0XFKdiKh5OnBxnK/NCBxaXpva53MRpvW4o6T2SMEUd+/xVa4Xmz7oHCHoq2g86+uY4bmepG1kZ0ndapyQjg/vw==}
engines: {node: '>=22'}
'@scalar/themes@0.16.2':
@@ -6472,8 +6827,8 @@ packages:
'@scalar/typebox@0.1.3':
resolution: {integrity: sha512-lU055AUccECZMIfGA0z/C1StYmboAYIPJLDFBzOO81yXBi35Pxdq+I4fWX6iUZ8qcoHneiLGk9jAUM1rA93iEg==}
- '@scalar/types@0.16.1':
- resolution: {integrity: sha512-zzApf0dtEqztdY//3gmRJTgySGMpKnAVqcZltAzt95yuQPXbkSqxXDTitBLd1abeSeik+W6GFTIjffL8K+1wqQ==}
+ '@scalar/types@0.16.2':
+ resolution: {integrity: sha512-QAlCtDVRsX/UV1N9ctLqPsKQy84eceFf4dMnTZM0JhaRfwS/Ovwp8oFf3POSpqQILNiqLFZLE6IV6p/5rNoAag==}
engines: {node: '>=22'}
'@scalar/use-codemirror@0.14.12':
@@ -6492,8 +6847,8 @@ packages:
resolution: {integrity: sha512-tpmmG+/xRE2Kn9RpflU3AIyZv08v10+E1ZrJCx7z6+/91zHVxy0M73kC1LT4/8PbYNt85ywyC8+n+D99JdMcGA==}
engines: {node: '>=20'}
- '@scalar/workspace-store@0.55.2':
- resolution: {integrity: sha512-/8BfJkave9vmweLdzH7w2TCaUFNcLu1vmE87id0QIi08enOwOExmPsz8YpUtaKLHM2bi/R2Tj/s9Uwp9i8Lttw==}
+ '@scalar/workspace-store@0.55.3':
+ resolution: {integrity: sha512-qqSSq8OSxx582h/DSgMYH68iqzp+M8c9B+YGB7/qi5ZQK3TzazeCM1BVakkSbFYvD+X4FanV4V4x/aAhjv6MfQ==}
engines: {node: '>=22'}
'@schummar/icu-type-parser@1.21.5':
@@ -6528,8 +6883,8 @@ packages:
peerDependencies:
semantic-release: '>=18.0.0'
- '@semantic-release/github@12.0.8':
- resolution: {integrity: sha512-tej5AAgK5X9wHRoDmYhecMXEHEkFeGOY1XsEblKxu8pIQwahzf1STYyr7iPU6Lpbg6C5I3N2w/ocXrBo+L7jhw==}
+ '@semantic-release/github@12.0.9':
+ resolution: {integrity: sha512-ODIqb0V3QqndipryEEiaBxUQCFjvv7Oese5Dt4omMGa60YRNEW0Sx3K+zri0uac2Y6S9nOlMehciWIzvvRCTGQ==}
engines: {node: ^22.14.0 || >= 24.10.0}
peerDependencies:
semantic-release: '>=24.1.0'
@@ -6561,10 +6916,6 @@ packages:
peerDependencies:
'@docusaurus/core': ^3.0.0
- '@simple-libs/stream-utils@1.2.0':
- resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==}
- engines: {node: '>=18'}
-
'@sinclair/typebox@0.27.10':
resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==}
@@ -6676,86 +7027,72 @@ packages:
resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==}
engines: {node: '>=14'}
- '@swc/core-darwin-arm64@1.15.43':
- resolution: {integrity: sha512-v1aVuvXdo/BHxJzco9V2xpHrvwWmhfS8t6gziY5wJxd+Z2h8AeJRnAwPD8itCDaGXVBwJ/CaKfxEzTkG0Va0OA==}
+ '@swc/core-darwin-arm64@1.15.3':
+ resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
- '@swc/core-darwin-x64@1.15.43':
- resolution: {integrity: sha512-lp3d4Lamc8dt5huYdGLSR+9hLxmfr1jb0l+4XXG2zPqZwYWRN9R0U2qYoTrggiU2RWW0oV9VbWM3kBnqIc2kdQ==}
+ '@swc/core-darwin-x64@1.15.3':
+ resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
- '@swc/core-linux-arm-gnueabihf@1.15.43':
- resolution: {integrity: sha512-JWTQQELtsG5GgphDrr/XqqmM2pDN3cZqbMS0Mrg+iTiXL3F74sn/S2IyYE/5u4h2KLkTf9qQ7dXyxsbx7YzkeA==}
+ '@swc/core-linux-arm-gnueabihf@1.15.3':
+ resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
- '@swc/core-linux-arm64-gnu@1.15.43':
- resolution: {integrity: sha512-B4otJRdPWIsmiSBf0uG7Z/+vMWmkufjz5MmYxubwKuZazDW14Zd3symga1N62QR4RT+kEFeHEgsXfZGyn/w0hw==}
+ '@swc/core-linux-arm64-gnu@1.15.3':
+ resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@swc/core-linux-arm64-musl@1.15.43':
- resolution: {integrity: sha512-6zB6OnpViBxYy4tgY3v2i6AZY9fwkcHZ032UOwtwUuW1d19sdT07qF0kZe6/3UR1tUaK6jjg2rmVcUIBCEYVjQ==}
+ '@swc/core-linux-arm64-musl@1.15.3':
+ resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@swc/core-linux-ppc64-gnu@1.15.43':
- resolution: {integrity: sha512-coxE1ZWdB3uSDVNoEtYNrRi/1epvckZx9cTJ8ICUxTMTxGk+yvQ/Twacp3ruZSaMPGCriUjP86C37VhaT6nyRg==}
- engines: {node: '>=10'}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
- '@swc/core-linux-s390x-gnu@1.15.43':
- resolution: {integrity: sha512-lXfLhs+LpBsD5inuYx+YDH5WsPPBQ95KPUiy8P5wq9ob9xKDZFqwNfU2QW6bGO8NqRO/H9JQomTSt5Yyh+FGfA==}
- engines: {node: '>=10'}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
- '@swc/core-linux-x64-gnu@1.15.43':
- resolution: {integrity: sha512-07XnKwTmKy8TGOZG3D9fRnLWGynxPjwQnZLVmBFbo6F+7vHYzBIOuwXEhemrChBWb6yDNZsVCcMWCPX6FDD2xg==}
+ '@swc/core-linux-x64-gnu@1.15.3':
+ resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@swc/core-linux-x64-musl@1.15.43':
- resolution: {integrity: sha512-TJc+bsSIaBh+hZvZ5GRtW/K1bw66TJ9vsUwvVIsZdiWxU5ObLwZvfcnZ3UpgVfMnFibRes9uriJrQNBHEEogRQ==}
+ '@swc/core-linux-x64-musl@1.15.3':
+ resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@swc/core-win32-arm64-msvc@1.15.43':
- resolution: {integrity: sha512-jfd7s2/bUQYkOHLs+LWQNKZdmDa8+sufKLllhpWAhVQ2GDCwsHe3vR/j+OSiItZNtkzFuaawa3+SAKz9y5gYfw==}
+ '@swc/core-win32-arm64-msvc@1.15.3':
+ resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
- '@swc/core-win32-ia32-msvc@1.15.43':
- resolution: {integrity: sha512-rLAE8JvucqEW1ZGohxPQrQWPBQeJG4+ypKbWfdlU/qmKScvCkxf9/Jxnzki1dkUQCQ7P5Enp13RlvqOlvx/32g==}
+ '@swc/core-win32-ia32-msvc@1.15.3':
+ resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
- '@swc/core-win32-x64-msvc@1.15.43':
- resolution: {integrity: sha512-h8MLDHZcfIukwQWj03rIJZx1I0E81AYj2X7J/nGErG4nz+QAv6G1Z+peotvinL3lqpbo32tLYSMFo32/ySzxKg==}
+ '@swc/core-win32-x64-msvc@1.15.3':
+ resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/core@1.15.43':
- resolution: {integrity: sha512-1CuKjFkPxIgGdeHVuNbkxmBxkcbdc08u0aiI43pFq6yY1tTVKmXT9hFEooyyKs/sJ3xf1GPHyEwTtk9Xl8dvQw==}
+ '@swc/core@1.15.3':
+ resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==}
engines: {node: '>=10'}
peerDependencies:
'@swc/helpers': '>=0.5.17'
@@ -6769,93 +7106,90 @@ packages:
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
- '@swc/helpers@0.5.23':
- resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==}
-
- '@swc/html-darwin-arm64@1.15.43':
- resolution: {integrity: sha512-+PFbHbeeN+zB0zfvR1V1NmvPriuWPI+sijQXpI+wq/nLIujxvtENWjOKVHgouC9TIN/uKmL2zu9HAq6L6YxnPA==}
+ '@swc/html-darwin-arm64@1.15.40':
+ resolution: {integrity: sha512-A9oxSh60pMEsX/4VBpn3e6s8DfGWsHzAeG+Vd9mXgkTqt/ouX12owP6RyqfqK8v0WuEsBKkGY0+MbwLvlOG8NQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
- '@swc/html-darwin-x64@1.15.43':
- resolution: {integrity: sha512-LQJ2U8Oxcx4T1rRF25y4h+/p05nn58FugTe/uGxC5OT3K83c2MftcSZLYaahOu4GVHRZeS1NI94CkSvQV++TVw==}
+ '@swc/html-darwin-x64@1.15.40':
+ resolution: {integrity: sha512-GZ5KxJ/1pqnpOAjaa9hnkSk3M1LHjc5ci5GCt5/llAgDKFLDHzydIflHXTOIaS4nRCtfVMmD0joKX+ZWruSkJw==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
- '@swc/html-linux-arm-gnueabihf@1.15.43':
- resolution: {integrity: sha512-DKIen6DuIRO7Xc5gAbgBT5QyRHJGEGXreIdM1VBosYWTGnnrQ//Hwd7bLD6UbT8X8eU1vqvpXwQ1E24QRqRaBQ==}
+ '@swc/html-linux-arm-gnueabihf@1.15.40':
+ resolution: {integrity: sha512-Bbwtl0G6vYcWlDQmjeuyFx8YIvqi1StlQWjRNB1ZtvrRNL3JadFARhijBONiUIyTK9MgUbWtTV3QU69qzjNENQ==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
- '@swc/html-linux-arm64-gnu@1.15.43':
- resolution: {integrity: sha512-0AuHiyfcE86CZ/CajFIszLzZVzbM2wn5p01oet8Q9RikflCGwyH79Nv9TrAKD1Cx7juUrONzDk+f2b/x73wLTg==}
+ '@swc/html-linux-arm64-gnu@1.15.40':
+ resolution: {integrity: sha512-buu4fGyCIhkwmCetI4CfWOPn7cphJHwQ9ksK685hlL0R0PUaDCNdIxo+JAz0mK2JgPhoGqnKsVEmV6gLIL5GBw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@swc/html-linux-arm64-musl@1.15.43':
- resolution: {integrity: sha512-TweIdl/g9ugkoiYvcL/qbu+gbglDY3TqNxfXH84WXc4rSqEP20owVlxLya2NjVct8LIP2wDrtutpOwAXWC+Eew==}
+ '@swc/html-linux-arm64-musl@1.15.40':
+ resolution: {integrity: sha512-BwWtpAGEHIP1QwKExWqBIjGpAHMahjT26ORZv3+TbwW4IuEl2QP5FrcYc30O8abCG5J1lWRl1vXKYDpzbIDz1A==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@swc/html-linux-ppc64-gnu@1.15.43':
- resolution: {integrity: sha512-4oue1pB38/W6mbudp+w0q1jbwxuwdbdbaOj85ay0pisCs213WkgP+MPN8Zqa5VVPjQnVk2CTY9kmEc74XQI/sA==}
+ '@swc/html-linux-ppc64-gnu@1.15.40':
+ resolution: {integrity: sha512-wLtHgwmZu5K7PvuTROklgWJO6D+KwywpYR1geI8dSWX/AYnx/KCGVK9ncPzWVfnLXWhXbkgua3Ujdrfoxf+qSw==}
engines: {node: '>=10'}
cpu: [ppc64]
os: [linux]
libc: [glibc]
- '@swc/html-linux-s390x-gnu@1.15.43':
- resolution: {integrity: sha512-/tceMNvAxK70SKUZtcn3X+K0vcElMGk3i8Sz0CmPdtooso8MZ7WfAvVP1qi3TWgh1rpQ3cC+Al3433AHlET6+w==}
+ '@swc/html-linux-s390x-gnu@1.15.40':
+ resolution: {integrity: sha512-WbWzQBCmvECZG6ep9D5SMMZTFCbFmRSCc7lPD3YhhaK16BNqr1AybvybZYOgxX9Ot5tq7gTWCgjFZXLDOn6Y/g==}
engines: {node: '>=10'}
cpu: [s390x]
os: [linux]
libc: [glibc]
- '@swc/html-linux-x64-gnu@1.15.43':
- resolution: {integrity: sha512-YE7ltlTt5ZFl59GsoHTDrIHnCBY8EDBio66CVj4bqkElFXbE/28xmpVE5ksdGoI5c5aQ/8byUCfHxqzCzQQSVg==}
+ '@swc/html-linux-x64-gnu@1.15.40':
+ resolution: {integrity: sha512-i+/JqL5j9mTGMcVshWLMzciqyE3Np+gN5+UqMyO1D5zSmniJD5MHRlGXCtLaWx/MIKX0Q4Xkre33o56fmxp+uA==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@swc/html-linux-x64-musl@1.15.43':
- resolution: {integrity: sha512-nS20HmbOk+dEEzdosJqqxAeyjMIiS5yrCAti8LUf0+dgr4eRmjkH4MlkjfPjf49aayR8o+eMJ1jsDZ7whx4zog==}
+ '@swc/html-linux-x64-musl@1.15.40':
+ resolution: {integrity: sha512-mroZnb5omFc4iE01UsJgta+Nm0sIFWpGfTPk+BHfH165MZAM4wNndeczX5RpGZbQSF1nNpCoNgqJyT7l3hITMg==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@swc/html-win32-arm64-msvc@1.15.43':
- resolution: {integrity: sha512-Yz7aQQhXT/Yc6QcuMDQDZP9jqf2phkVyU+qSu8ZRWEcJgIorrPL6q7YLqMk+MB5PpZyu5XJEODvc1/UVDE1Kyg==}
+ '@swc/html-win32-arm64-msvc@1.15.40':
+ resolution: {integrity: sha512-qg1LXRrsY9FXy0S7vouSF0kkn1vdkTD//FW66iuezH7HMm5/DJGwEj7oc1zTKPWU0HnwOINOUbl6rUHrRuXHAQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
- '@swc/html-win32-ia32-msvc@1.15.43':
- resolution: {integrity: sha512-muUgfsSQRZk6YBRuhaGKSLvXy0bV9BW6/mHLI0N/06btWuf0hekoHhIzR7dUmS98NXKCA7Hv+buBPE/0vXUwyA==}
+ '@swc/html-win32-ia32-msvc@1.15.40':
+ resolution: {integrity: sha512-5NwMmgt9A70LQzcYOl4OiIJk5AhsGP69fNRfkmXXop+iIcAGUmYy+d6F2/Gc0u05j9G0R04NPWcHBQrHQhr0Gw==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
- '@swc/html-win32-x64-msvc@1.15.43':
- resolution: {integrity: sha512-tuLDy4MxPXsLi6jW+ozCdFWO61AoMMnlhePWJxMafefC2Ojm+iILxP2zI2Hgfu6F16y1q7ITdXdpEuqptu5fHw==}
+ '@swc/html-win32-x64-msvc@1.15.40':
+ resolution: {integrity: sha512-WUNZqCZ+8WY1pr8t3X3fq4gI5+FL/tCCzlrJ2lLn0s+TyA2SLm/RPfXxQIr94EnjJWcIV21G//6/uXeBN8cPzw==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
- '@swc/html@1.15.43':
- resolution: {integrity: sha512-SKbkbdGi9SDO9cTdV+6H0/AYifnb2nDOlz5BlWxlWMXACV3kmX6WwZDo0bBdyGlO/G4jCVWdR5r84qfotU2now==}
+ '@swc/html@1.15.40':
+ resolution: {integrity: sha512-YVWNrh3wZWH2oXz7uL+s1WZbFIsnAp9cCl/b+C7ufDJqhsOvbr0un9IOYZ/CxRIRdnHGfhVD199n8baD/kRQew==}
engines: {node: '>=14'}
- '@swc/types@0.1.27':
- resolution: {integrity: sha512-K6h3iUlqeM946U4sXFYeahefR1YBbXJvko+hv8WS8/0BNJ4OHiHRywMnQUJCqkR7Y9+hqQ1TvEpiKqUhz7NEFg==}
+ '@swc/types@0.1.25':
+ resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==}
'@szmarczak/http-timer@5.0.1':
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
@@ -7055,11 +7389,11 @@ packages:
'@tanstack/virtual-core@3.11.2':
resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==}
- '@tanstack/virtual-core@3.17.3':
- resolution: {integrity: sha512-8Np/TFELpI0ySuJoVmjvOrQYXH/8sTX0Biv9szhFhY39xOdAAY+smrMxjxOum/ux3eM8MUJQsEJ0/R0UpvC8dw==}
+ '@tanstack/virtual-core@3.17.0':
+ resolution: {integrity: sha512-gOxY/hFkPh/XQYhnThBHzkbkX3Ed+z/iushyz+R+JAr213aXxUDgQoTgTdrDpBSRsjFM73P/KfUyWmaF9WHMkQ==}
- '@tanstack/vue-virtual@3.13.31':
- resolution: {integrity: sha512-wZMEoSf852jQqaf3Ika1J7PiBae6341LNy/2CxmIyn0XKDQXMuK41wVX+xp6G0yx8jyR95Ef+Tdr13DK7mbJtQ==}
+ '@tanstack/vue-virtual@3.13.28':
+ resolution: {integrity: sha512-A+jWpXtMpWXKhGLKQrXeC9mk1VgYeMWSJ+o0CTCEi+HLYMSQFdVmPG9lJz7d4XJyIkc5xVwZU9QY67QpScqnxA==}
peerDependencies:
vue: ^2.7.0 || ^3.0.0
@@ -7072,215 +7406,215 @@ packages:
'@testcontainers/redis@12.0.4':
resolution: {integrity: sha512-44Ov3Lcptb3KqljcCy6xIJ2VxNsN+3Kw/YpBiotZpOcI4iLgLNmcOgvCFPVo+vDoh4rCfgtNUEbIpL5Mu7oRuw==}
- '@tiptap/core@3.27.1':
- resolution: {integrity: sha512-rV6Qn4wmC6BxfF+4mu6bqGWj9vA4oXXhsrpXaJL2uhjxeHAGofjwcHof2X84VYzeyXgdlsGmqKie4TAppVXZUQ==}
+ '@tiptap/core@3.27.3':
+ resolution: {integrity: sha512-TJj5929M96C1KlH796wS8MywfHDh49RhmakOyzyMMc9pFmRj9UXi1gj0TCXgsZtjEOG7B+m/DRvNOvnuvR9kmg==}
peerDependencies:
- '@tiptap/pm': 3.27.1
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-blockquote@3.27.1':
- resolution: {integrity: sha512-VMF7xJx6qEGiX6DTKNiL31NLqypOcd/4sNjFSe8rb41PwejBJh/nOqVIbBvWkiT6NMGFLxMhj7zJ8/zPo1hXeg==}
+ '@tiptap/extension-blockquote@3.27.3':
+ resolution: {integrity: sha512-VGoVMcqcGkkoduzEqQ70ZK5OOHBDn5iYeHJSgkvNoSHzYHl0CaKoWxoDKJjSWC5DAM4mBU+tXTlsiUp3evRMfA==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-bold@3.27.1':
- resolution: {integrity: sha512-TlC5bsS+pqETTrlz4CZz9RO/cKBYtELGIxwtKeivUn3eNfnOxQbbu4WDsiwIfzRFyd0OMnKl6BPM2KnYEehoEQ==}
+ '@tiptap/extension-bold@3.27.3':
+ resolution: {integrity: sha512-pchbycFppBqBmvk+OxrQLIPZLNd3rNbcm7zOa+OTjluphpAcsJ6AmHBmiRhJUYWitV6/SA+0nujcaWxBp5hNcQ==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-bubble-menu@3.27.1':
- resolution: {integrity: sha512-j/j8Qp9Z5nViade2m7zjrO/CYH/Ca80Qj7aqo0eUaei6FZQ5izlF9o4XQU5EFMAutV6mwynsPUp8FVo5sCuYfw==}
+ '@tiptap/extension-bubble-menu@3.27.3':
+ resolution: {integrity: sha512-PKSM9g8BXzO0Lxm2gOin7FAFvxO6T0QvlXTXVke/GJn/sR1tEz7w5ybsvweytUPmSliUc601pfIUOHKEhIVC2Q==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-bullet-list@3.27.1':
- resolution: {integrity: sha512-faCUHnRP47o9Zh9VZZX6EX/569udw9Vopm2PgEKPWuKLE2qaS5WBuUVU0iItdJmKUqaWiOZkpoW4jvnDmj0dfg==}
+ '@tiptap/extension-bullet-list@3.27.3':
+ resolution: {integrity: sha512-owQW6mcgnYgQU1z5BqmslcjZFBUm1SGM/Ax++4R6XelIt/7ol6uSTjzjAzum+ASW7UlBbuJHuSgRjl8cA+RGkg==}
peerDependencies:
- '@tiptap/extension-list': 3.27.1
+ '@tiptap/extension-list': 3.27.3
- '@tiptap/extension-code-block@3.27.1':
- resolution: {integrity: sha512-pHlzmZx2OlHfyQ0yRlT5UL4mGokz947DthZuYefN1OleVqOkHpWBG+2JQwqoNq6bmzMne92zbH32rhcJUEYSjA==}
+ '@tiptap/extension-code-block@3.27.3':
+ resolution: {integrity: sha512-3CVnzkpGoqqI5KaXI9l9PMwLkx34SYY63tpeo0I0QjDk4LU+JTAQDTPJFSwB4zTsHZ7ZFMU0jjasFOZ1kZRVgw==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-code@3.27.1':
- resolution: {integrity: sha512-epOUpFfEmBzjvnqvjv2qHX7NAuLo5dlOGV690lWu+sAYMjibuJBeVvAiKPyFCfRCCTUxdbDB3jbaOA1yEcEJ7w==}
+ '@tiptap/extension-code@3.27.3':
+ resolution: {integrity: sha512-T7JF10Y3k7fyVujXXLVubdUh7fctgBUoiuxbvjotpltg1U/mPbOcT0UW/uif9j3H8TFvAwNApVw3x8bwwFUakA==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-color@3.27.1':
- resolution: {integrity: sha512-9R/vW4dDTce0E0HU+AyfSkKhz08Hlrx7noRRj3CKrTwsCTR86wReTKFHlzxhLKZiDrJuV2Y7CtNG7KGrAArf+A==}
+ '@tiptap/extension-color@3.27.3':
+ resolution: {integrity: sha512-tNXyK3VXPGygJP+vq1+YyPmrxLabx4vs+rYiVhGtmhIapTQeMVYcHbFH4s4v3h5m8JGVlTWnpI8n7cb5ExIhSQ==}
peerDependencies:
- '@tiptap/extension-text-style': 3.27.1
+ '@tiptap/extension-text-style': 3.27.3
- '@tiptap/extension-document@3.27.1':
- resolution: {integrity: sha512-8FbBTkfnRP4iVaoj+2h3iWa+H0eGDD3yTyVCwrmue/sQTkqUNUoSuAZa3GDG4Sd41xdPwTJxl9nUWGgM1qDCnw==}
+ '@tiptap/extension-document@3.27.3':
+ resolution: {integrity: sha512-PR25MRv56Nm4ETVLwA8nAh/0RrVdvD4D2nxnAC8kUkxz1WOYDaqTfPqqEeSWDoUUTUp1I1xzDkD4x0gEnAlmZA==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-dropcursor@3.27.1':
- resolution: {integrity: sha512-blFf9x9RG0Qr7P3FoAH/033ffa+mMLZn34trVs8Vi0Ppk6FmJAg5HpYFOtmYoeREdNDJ5rHJKV7SoACbOHgskQ==}
+ '@tiptap/extension-dropcursor@3.27.3':
+ resolution: {integrity: sha512-XsL0Ziual+ynXyx5JgLb0KIOShlMN3MW7+GQvf9PGRb1vOB7IOTRFDxMPrxDWcFIZ6WWMWSrbkCLOKHStt1BWg==}
peerDependencies:
- '@tiptap/extensions': 3.27.1
+ '@tiptap/extensions': 3.27.3
- '@tiptap/extension-floating-menu@3.27.1':
- resolution: {integrity: sha512-BmJF1VqB7dSJkgAalrpVFj88WLhxKjcWPuWHOqf2ITrUU2832BhKLXKmxjWUy1gqV8PfNNVWtGfIERy7I0y0+Q==}
+ '@tiptap/extension-floating-menu@3.27.3':
+ resolution: {integrity: sha512-qL+g1Z6MqZvYG4mHTPwub9II2fWZY+2I5VFfV8fzqy1HchBOyY6Df0mRKDNb0bmjBdFabIXnswz3iqLx3mDTbw==}
peerDependencies:
'@floating-ui/dom': ^1.0.0
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-gapcursor@3.27.1':
- resolution: {integrity: sha512-QoezN0wdvXIwLQ4ee2ccWDaX3RG0lzgQpIMpMz55oPDhpUVax1+19ApsS53LkcktpS4EbnPL4xO4DaJk0Vp7PQ==}
+ '@tiptap/extension-gapcursor@3.27.3':
+ resolution: {integrity: sha512-MVBqzwYrDOttkn2GOrvvKTDCymfSS2VGSKpahcKKhge5mweSDiqko2X1vBDnMF8aVW3WxIFfDMmO4VMmh8HDZA==}
peerDependencies:
- '@tiptap/extensions': 3.27.1
+ '@tiptap/extensions': 3.27.3
- '@tiptap/extension-hard-break@3.27.1':
- resolution: {integrity: sha512-iv/m9hzl6jfSj9Q8UEjAxONvCoUDaP7M9SRCPx3PaLNxA230TTD6RE0Ye4zFJ8ze7ZVoJJMAqg9Qpq1iYg2JOQ==}
+ '@tiptap/extension-hard-break@3.27.3':
+ resolution: {integrity: sha512-cySObJITR2CRrWII87mI2LJ12wEETTnxt2p1vvC6ZtUmKnB50fOu+ux8ZEt6KYNocIOtrEZthNFzTOx7R7UtrQ==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-heading@3.27.1':
- resolution: {integrity: sha512-SrC4l1kEIyv9ZXFaI/8LQqU2MyMmjczw7XXsWUQOTN4YXv0JyVgMNR3cI/wz0d2xsTfBdZ1N85Tdng+Ga1t0Sg==}
+ '@tiptap/extension-heading@3.27.3':
+ resolution: {integrity: sha512-QHXnsNic6iId8pnsFZ8z4PkX5L+HCHa/D7rAi3nNWtPlSIAOxo4nKrALcB5/tHmY+XL8kEXKH3nsNLNEDLCYPg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-highlight@3.27.1':
- resolution: {integrity: sha512-IeMIUKbW4oyRkgn92BPYQ0fifkbTwVigKwa107nGDHMokz+pHQPFHy8xG3U7gtUOra/8OUo57bFgNGuP0TaH4A==}
+ '@tiptap/extension-highlight@3.27.3':
+ resolution: {integrity: sha512-99QYxMx8F/NhdvznM8/Zhm4XiCdMU0OEiLwPvLNObJiKV8UBqjdA68cJLX6FRuOi2nqD7xfJq2KuSsFKBldi2A==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-horizontal-rule@3.27.1':
- resolution: {integrity: sha512-QlKE7qn5qMnIGVGhXQlvYedvLtNJ9z0dmit5w8vPb8tKzW4Spk6M7N2kruprrDA8GBwHfeR5wmF+njfUm34qxg==}
+ '@tiptap/extension-horizontal-rule@3.27.3':
+ resolution: {integrity: sha512-sNCuo0+Q001B5XTVWY+ULpWXQqtBNRmAqXxAexZl44bx3rDqHG8OzjwT4EM0LIj2+BYVbdqwaJ1vfQbZVEEbig==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-image@3.27.1':
- resolution: {integrity: sha512-+JTahgQT+NxiGjduaB3qJVyhU/wh4m3pVkht1Earioku2bm/apj5Lb8rSowa/NJYP3B+oQgV/V4YLw5dtDgBoA==}
+ '@tiptap/extension-image@3.27.3':
+ resolution: {integrity: sha512-3OVLRH54Xkh9yrI5oGIempuqZkhLG1plyJBRnapx0N8j9IjEImOLF78kPYoAZzaBuU78M3Zk/E7HQZgmnaNRBg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-italic@3.27.1':
- resolution: {integrity: sha512-jGGeyn9uRUnNjSTHpbqhiGsp6KaYTSbV09jDXPJI9cDwfV9hpugLvpaCZd0BMBbhU1B1W6kOfX0BE15qX/HQfA==}
+ '@tiptap/extension-italic@3.27.3':
+ resolution: {integrity: sha512-7VpVi2vn8kGFAc/HLrt96J/E6+LXOGKn8xLhJS863t150yLIG3EPQLA1h+G5O6eo+/w+9YokvJAAJoeDihj1Jg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-link@3.27.1':
- resolution: {integrity: sha512-/2jBfsxBZUDGJmpZifqRQPz7f1E5qpS1BckTZ39TADzUJX+feKy7RJ3DtQ02+8y6SSMzvP9loGVjrk6zEMTk4g==}
+ '@tiptap/extension-link@3.27.3':
+ resolution: {integrity: sha512-iXmu1tJ/3vP60c9d+zfO3+X64vod2EyBrM1qeufecAtWA6t0bT9tYeka0Zq6qDRGsZK5zViO9F2lsY7eHXiYuA==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-list-item@3.27.1':
- resolution: {integrity: sha512-zwRl01ETfCkWUvtvK5fw9bXtAajMPkvlkE3Cq6JvH3LF7XXJwDtNj5Tj7exacMpCaSZmlNc43vFb2rAYnrnwMA==}
+ '@tiptap/extension-list-item@3.27.3':
+ resolution: {integrity: sha512-UddhVaQ7+V9IfQVVE8AJLNzSmyaaNpZPQsoPQxFNlJyOFxD6RwSTT8L4rb/TwbUctxSFWpyd1J7exzf33Ony/g==}
peerDependencies:
- '@tiptap/extension-list': 3.27.1
+ '@tiptap/extension-list': 3.27.3
- '@tiptap/extension-list-keymap@3.27.1':
- resolution: {integrity: sha512-OIMZNlzPSO8WRd4ic73Fxckzl4N1tesjjLL2XApaNA/uMpO0LoF6WSRPAWv+Z24Wp92ARRJAnRP7iZoI5+Jxig==}
+ '@tiptap/extension-list-keymap@3.27.3':
+ resolution: {integrity: sha512-GZPVg4QCFm41yTMPEPeTlH2odNeQwRuWHY/pt3pI5LsfipQ4kDBv6h9we928vJQUnU2Gg9Y3cL5iRbmXIWWTUA==}
peerDependencies:
- '@tiptap/extension-list': 3.27.1
+ '@tiptap/extension-list': 3.27.3
- '@tiptap/extension-list@3.27.1':
- resolution: {integrity: sha512-c2Upru7lj0/ZV/Ibww6cNz6sUS8m6Dp/9uygFhYcZOd3X8M0xBIEk42c6m6SQehkPziVA8QOgNJz7sMqsbz1OQ==}
+ '@tiptap/extension-list@3.27.3':
+ resolution: {integrity: sha512-52rcaSzYjtVGUrNkdB8k1Bw/rId2lBirrWMvmnBLsieoeFd8zo8ow5zkwV057BYSgWXfnMAV7GOpDyq2IoSD9A==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-ordered-list@3.27.1':
- resolution: {integrity: sha512-GYrKqD//9nHJ2r80uXqbDMzRnFpGzbaEQRTSGaO/SH7DvXWFMow8evkOdjQ7PCQO07jNjJo75+A85Jwu3Ov3AA==}
+ '@tiptap/extension-ordered-list@3.27.3':
+ resolution: {integrity: sha512-oHYoE65WfRSM5tCcXi8MtQmzPxz83E2qw0pa2yHBKwr9xCCQUu8vJHJE+EJGduWdaNImv43+6/6kVMeYYbXRKg==}
peerDependencies:
- '@tiptap/extension-list': 3.27.1
+ '@tiptap/extension-list': 3.27.3
- '@tiptap/extension-paragraph@3.27.1':
- resolution: {integrity: sha512-7K7eo1gruOgAsnbK+GCV23AUVUI0cL1bTig8HaPneoFMVbig7vddk8jNLKBWO8TXVbG7TuHdnDN4F98vdtwh5Q==}
+ '@tiptap/extension-paragraph@3.27.3':
+ resolution: {integrity: sha512-G5XPCN7lm0nULYPelJC2eUbKbt1q97j67e/HSWxwMYEXhceec5eNAtVfpDCRyXNO9osyBi2kXqLv/IQtxbch9A==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-placeholder@3.27.1':
- resolution: {integrity: sha512-lhcNDcczQ75yJOSywCHb58Hmtg1aPL/2TdYmeLPxVrP048D7rRs133sfONcgyyw0AvhnfmPOkHLTv3QtKSowhw==}
+ '@tiptap/extension-placeholder@3.27.3':
+ resolution: {integrity: sha512-Y43dGaN3rA0oU4CWmXkZ2idjZjrxPX9oy0zZL92EgXOguhAUToBs0dIxRG5ZanYX9A8kKKWPlfeRFlBMtRhKvg==}
peerDependencies:
- '@tiptap/extensions': 3.27.1
+ '@tiptap/extensions': 3.27.3
- '@tiptap/extension-strike@3.27.1':
- resolution: {integrity: sha512-Y3DW1jlSlCNCyMGHP3+3qBNNPS83wuFz4RTYGjZtvRRTCRh7apZme9XRWMq1rN5mJ2Cr7fKocA2/5Bs13KgN6Q==}
+ '@tiptap/extension-strike@3.27.3':
+ resolution: {integrity: sha512-dp6Rs3I4zLVJPvAw2Q9yrNuYKcX5LTONH3/oyULvGsrqq5DKz7pqscfwhwnDSzrgm/3aCz6B9r1BVHlYI/DXlA==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-table-cell@3.27.1':
- resolution: {integrity: sha512-aopweoHugP+ZR5WTgb7mccXXWmjoNv7PBjtQDl8rvS4IWsJE1w23B+rkj7VuoncO8WK5bU3SS9O3l5aObql68w==}
+ '@tiptap/extension-table-cell@3.27.3':
+ resolution: {integrity: sha512-W8onBLgjge3D2PlYetbPC/BvwH5jgYfL9PLqMurfCPD7t8fyU4s+4E3SwbZkuf6eCH0twBjqyapH7+sOW/sPhA==}
peerDependencies:
- '@tiptap/extension-table': 3.27.1
+ '@tiptap/extension-table': 3.27.3
- '@tiptap/extension-table-header@3.27.1':
- resolution: {integrity: sha512-+J9EyKP6RMInfMJbIoNemqWzHxZe9XZv/7OjpsvtVZO1cxMTd5W1xIg0Ntr7YMdG9eKBC8Vwx5jjFbRm2tbM3A==}
+ '@tiptap/extension-table-header@3.27.3':
+ resolution: {integrity: sha512-8iBOxh0S1Wh5VC1rmVTZVJKanGhJpZd5E5O7Pycf+KKUu+BcWQZ17ewj3+VVSdU76sDCUWIjQE0qJ/EyI1vZeg==}
peerDependencies:
- '@tiptap/extension-table': 3.27.1
+ '@tiptap/extension-table': 3.27.3
- '@tiptap/extension-table-row@3.27.1':
- resolution: {integrity: sha512-peEcbNRrJJ9Qc/WNKQNFbkwBrJvBvq22Dp5WNqEygn/ZJez1qD9ctd10+D6f3b9GtSyx12sfDgn8yBufWa+Iug==}
+ '@tiptap/extension-table-row@3.27.3':
+ resolution: {integrity: sha512-AFMVQI+1kRh97++g+NA6MjATpwQPvjar4JUyaGlnSBIt+b5sYLTW3qQS8EzpMbKPqUp7uZOX9EkLgpvepWYSow==}
peerDependencies:
- '@tiptap/extension-table': 3.27.1
+ '@tiptap/extension-table': 3.27.3
- '@tiptap/extension-table@3.27.1':
- resolution: {integrity: sha512-tNB8kjxo0+XPremnWkd6NUikpeJ+JQrss7HntL8GgIxX4t0gkdnLn9yUWb0JzcaYP7Y8iTZZHdkPs0P154DG8Q==}
+ '@tiptap/extension-table@3.27.3':
+ resolution: {integrity: sha512-P7iQ0SkkDWZwnXzQDOVFLXktXlX67VQ3s2YxoJYKTHlc8rPZ4UCaSogFq0G2APyBlizlY3LbMNrDeZAVFOD8wQ==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-task-item@3.27.1':
- resolution: {integrity: sha512-HxS85Xqlf9voWpqW6yJNExjnqy9AcQbvL7K41gzKUIaXZdNxAyEkUg7wve7WAd7AUPI9yrS9WONplhmq7pWuJw==}
+ '@tiptap/extension-task-item@3.27.3':
+ resolution: {integrity: sha512-CajIPpHTsuE1l+bM3xKgpZ/3PTvRuFb+ZEyC+yxI/cY2pZd4EJ7iXHT5Fl3ITwdDq8/syVev1BBZ/QDZTOA3rw==}
peerDependencies:
- '@tiptap/extension-list': 3.27.1
+ '@tiptap/extension-list': 3.27.3
- '@tiptap/extension-task-list@3.27.1':
- resolution: {integrity: sha512-5LaJU3q/O6S1aNe9uj/VbZ7uS8G9mJMvJGNm/wRGyR3HcZtHAcFsPh9+woylQvUThD0qO9OMeGXkgqRSE+ayuA==}
+ '@tiptap/extension-task-list@3.27.3':
+ resolution: {integrity: sha512-g1zp2SnR+3DbsXbK1GbAucrj0lh1WnTarp1YPY4beFENzjAPklyVIpF22IjFZD/08QWN1j1fRN3zVzTGHuFXFA==}
peerDependencies:
- '@tiptap/extension-list': 3.27.1
+ '@tiptap/extension-list': 3.27.3
- '@tiptap/extension-text-align@3.27.1':
- resolution: {integrity: sha512-EXawuJBO55wd8WcTbHTMoPhv0CGQxza4yCCPB5Hqz4ZPQwahIr3ej+8yp/kimIl0xokabwZ0/Fu8STQ4AkZv5g==}
+ '@tiptap/extension-text-align@3.27.3':
+ resolution: {integrity: sha512-yyhlwRz0Eh6xQCn+GtTDWUGqxGajT02Qf8zBN/3eZQtl3EZ2xrI8lvfLmcV9SAW0srgMd+5hX0CVV+zKeXuxeg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-text-style@3.27.1':
- resolution: {integrity: sha512-J48WIl+6YDYTFPhWXUBQk+u7+AKVUqTdvrZOQyPYCGuQMgHrYzgWrI5+HeEifUgXJ5rMIWWP3qytp7KhVVqpDQ==}
+ '@tiptap/extension-text-style@3.27.3':
+ resolution: {integrity: sha512-oim4RqFtMBCA4N+J8f8dTFFYZrwyfmXLxLL5SvQkn+kkpfGLv8PqJCnJ4uHxsnHXDNsWHBtVVhfTGUABZsTEHg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-text@3.27.1':
- resolution: {integrity: sha512-6ZwaZwSrDh+KFFv6V1J79oO37yPs7y1bFxvk1/9Ih2rn3Xr5AWz+eMS+n8RpH3djBVVAQpdIAeYQgcn+VCSsTg==}
+ '@tiptap/extension-text@3.27.3':
+ resolution: {integrity: sha512-wSatZ/bop0pleeC18nF90zvWWEoRe/ewZncvm8LjcMrXwq41kTEs3j7nZflMYAh7X8fZvu00UIMeEyCNJl+5Yg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extension-underline@3.27.1':
- resolution: {integrity: sha512-N889J4nXN/TPfVt8uF9N1A0SY82E90zwc1y26lqOcw6KWNLmQrlhMh/9OD4ikLDbekmFpOBq/UicpHf/6S8hbQ==}
+ '@tiptap/extension-underline@3.27.3':
+ resolution: {integrity: sha512-YH7ka/Rp7ZwlzTuQCcs0OZ4CMSx/P/MzbseQKxKebEIZreWaKMZAaED97Fnu0dA66VlreD4/1C7xHJy84ovamg==}
peerDependencies:
- '@tiptap/core': 3.27.1
+ '@tiptap/core': 3.27.3
- '@tiptap/extensions@3.27.1':
- resolution: {integrity: sha512-1Tdx9faw8k0/83V6X+xCDVhV8yElGt95JxeW3YMkKQJI56QdlPz0xOdJPlMiSGJKinPyVier+x9LJD/YZUZIaw==}
+ '@tiptap/extensions@3.27.3':
+ resolution: {integrity: sha512-IA2QKUVJgzUPEhhkUfr6P5u5GFVfhiApiEaaHXBz07saL2c4HNoVs2RC18QlZDCtLNKrPR1mUScr72u7uYs+YQ==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
- '@tiptap/pm@3.27.1':
- resolution: {integrity: sha512-Ffjx+vimmBU7zH/KrpXzJid3+pziCe/VL2aexSTP63cyQwKQ65LkFkCKaIsSpFdQQuakVZBGWjCA5RoBV852pw==}
+ '@tiptap/pm@3.27.3':
+ resolution: {integrity: sha512-ppiG57RxM3HSHHgcHT0hP6Ib4P56Sd5itxdV4w0hIGHKPGyLLKiAkYp+htIHa9T7IvjMdaqxIlsfyV3ZKsS1sw==}
- '@tiptap/react@3.27.1':
- resolution: {integrity: sha512-/Wn2fc9zMtX08MXYScDFsm4wJ8lzfhfPEdbtls7WCDlbtrop48PWlkHDBBJrywARfAQTB2mFs9KiFy9yrQm5Lg==}
+ '@tiptap/react@3.27.3':
+ resolution: {integrity: sha512-lanXxMScw/LevbRFuFw5MoQJ1grmHUDszwph2VIk4l2U5e/EDIw3rr4CeDME6Z4isVReD6zccMFVShkHqsv+jg==}
peerDependencies:
- '@tiptap/core': 3.27.1
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3
+ '@tiptap/pm': 3.27.3
'@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
'@types/react-dom': ^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
- '@tiptap/starter-kit@3.27.1':
- resolution: {integrity: sha512-vfxRsqW8rCc0k4pzo0ilU3wobVi2wqVj88VZI2SlgZlNnUAkrDGDIAph7CTa9k9fshV+O1ivpEgPC5yC046jow==}
+ '@tiptap/starter-kit@3.27.3':
+ resolution: {integrity: sha512-xX3baFqiC30skntdhxUUvyJo755ON9c1pE83+2Wiq2g+Qnffg9knUuLCZStHoZZ318yB0aBsKAMvHWLtYDo8AA==}
'@trpc/client@11.18.0':
resolution: {integrity: sha512-wOqeg3Fvl25V1ZisQhUD3K8G60ZJDlSGJNSyeXrLH24xAo5w6GSR2Kzb1cSNY9Y+IQ2YZvYGZstBU+V/ulo/ow==}
@@ -7335,37 +7669,37 @@ packages:
'@tsconfig/docusaurus@2.0.9':
resolution: {integrity: sha512-0jVxZCgy2v7TnJrW9kVNikNwJHeiWb68Zhiiw2vHw4tzBFSP5vS2zn3O5EY2oPEVz5dXZRkK7MnWG3Ay5q0mIg==}
- '@turbo/darwin-64@2.10.2':
- resolution: {integrity: sha512-wBM3ObqOWnKUDmg7QfUFDkDHPFUAJmrYlYqmEM8jMPAPA/I6wRJIbWimeQUqhOiQ8xPKhzyWM+xaiUP0wz8FEQ==}
+ '@turbo/darwin-64@2.10.4':
+ resolution: {integrity: sha512-m1MUEI4MJ69r5CwfMYxmHi0H0rrgiYCBOp0tgBZ9x/YVvOb5uu/lRIDyDwdtH054R2yWeQaIigUGu6aCX9f8cA==}
cpu: [x64]
os: [darwin]
- '@turbo/darwin-arm64@2.10.2':
- resolution: {integrity: sha512-/Cq0joWnuMjDPfhjbFP4sv+C/7gkQ415zlaO4XUzD5EZxbtrKgXKvuuydMvogG8GeUnN1aDltW71RlmEfpjbyw==}
+ '@turbo/darwin-arm64@2.10.4':
+ resolution: {integrity: sha512-VQ1Yxs5zkPT+2z7t1P4mvn6JmcKLkOCAsPuK9XbOvuVj0DlTlETfIXNisX0771v/vTWHOQqiwoGi+TtAUq8efw==}
cpu: [arm64]
os: [darwin]
- '@turbo/gen@2.10.2':
- resolution: {integrity: sha512-euo5g9gAjMaWt0sl8Xg2ThahSIuGvK/hqciXt8sthH+HrifzjKa9TQaIVtdTpFzsTKfOqBlUvd5O+aPrEnvxqQ==}
+ '@turbo/gen@2.10.4':
+ resolution: {integrity: sha512-FP3XAL344PohE7yN8cR+SDLyhWIMk7kn+jCNlovzhXDQJBHjfn9Iv7GgMf1dnSTO7etYeOfe4v41Ix26bzYm+A==}
hasBin: true
- '@turbo/linux-64@2.10.2':
- resolution: {integrity: sha512-mMsf5IIhiKuceEXNstd25IbadjBXZ0amxzFOqliEzJX6HyeeHdBQPVSY583PWqYDyqM/FB8d5ZjkthfBSeuH3Q==}
+ '@turbo/linux-64@2.10.4':
+ resolution: {integrity: sha512-IzV1QovmwX7mfGnVinmE++2IB8tbeo38weltiuH5zNqwCTBjLs/DytyRKx+bmnhHdXIq9SheR8p0Nip/LBUPHg==}
cpu: [x64]
os: [linux]
- '@turbo/linux-arm64@2.10.2':
- resolution: {integrity: sha512-Wcng1i2kaKmXutmwxT9MUoYZvdaIekXAdlGr4+0TpgbhGLw7nDuEcRBFrxb5BbRoX1d1q8SpdRxLc45TvDZIdQ==}
+ '@turbo/linux-arm64@2.10.4':
+ resolution: {integrity: sha512-rfujSQkP5aYiRn0PgTM7F00WkJCP/bKDVZbOx3WmrZwa/vHA0bplhCl328kpX7VI9HH2vI90ISGwuSVgJgoqTw==}
cpu: [arm64]
os: [linux]
- '@turbo/windows-64@2.10.2':
- resolution: {integrity: sha512-SsNhM7Ho7EpAdwtrJKBOic9Hso23vu6Dp0gAfLOvUFjPzurr/sGQlXZEvr6z89ne4RDOypTwz5CBDrixpMKtXw==}
+ '@turbo/windows-64@2.10.4':
+ resolution: {integrity: sha512-NnspP7Wd5fa3Wwnqv9bKfhegqZzuHBgbPxdZU/idTLQcazx/vgKu95JlCx2YHY0hdvKCnPcARrDwM+KEUmaO7A==}
cpu: [x64]
os: [win32]
- '@turbo/windows-arm64@2.10.2':
- resolution: {integrity: sha512-Gf+S7ICAdimT/n02bOuVWKvhHnct/HYjZg3oBNIz5hZ9ZyWHbQim9J3P5Qip8WpX0ksxF7eaBVziJCuLnjhqDg==}
+ '@turbo/windows-arm64@2.10.4':
+ resolution: {integrity: sha512-Iv02YgOpaEShc2OkG7mgCJ2pEw1RUKiKbs0h8W5wAf4jZ5vpmraTEjuGTgHRuOORQnC1GN3KHo5WB+hu1abRMA==}
cpu: [arm64]
os: [win32]
@@ -7375,8 +7709,8 @@ packages:
'@types/adm-zip@0.5.8':
resolution: {integrity: sha512-RVVH7QvZYbN+ihqZ4kX/dMiowf6o+Jk1fNwiSdx0NahBJLU787zkULhGhJM8mf/obmLGmgdMM0bXsQTmyfbR7Q==}
- '@types/aws-lambda@8.10.162':
- resolution: {integrity: sha512-Fn658grtLOci1oxi1391vvDWJRKNGWRSqfxRkmN/Iy3c0tQH1USMKEXcPYHLvope+ZgTFocx9FRQJx1muBL6qw==}
+ '@types/aws-lambda@8.10.146':
+ resolution: {integrity: sha512-3BaDXYTh0e6UCJYL/jwV/3+GRslSc08toAiZSmleYtkAUyV5rtvdPYxrG/88uqvTuT6sb27WE9OS90ZNTIuQ0g==}
'@types/bcrypt@6.0.0':
resolution: {integrity: sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==}
@@ -7384,14 +7718,14 @@ packages:
'@types/better-sqlite3@7.6.13':
resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
- '@types/body-parser@1.19.6':
- resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
+ '@types/body-parser@1.19.5':
+ resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
'@types/bonjour@3.5.13':
resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==}
- '@types/chai@5.2.3':
- resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
+ '@types/chai@5.2.2':
+ resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
'@types/chroma-js@3.1.2':
resolution: {integrity: sha512-YBTQqArPN8A0niHXCwrO1z5x++a+6l0mLBykncUpr23oIPW7L4h39s6gokdK/bDrPmSh8+TjMmrhBPnyiaWPmQ==}
@@ -7411,8 +7745,8 @@ packages:
'@types/css-modules@1.0.5':
resolution: {integrity: sha512-oeKafs/df9lwOvtfiXVliZsocFVOexK9PZtLQWuPeuVCFR7jwiqlg60lu80JTe5NFNtH3tnV6Fs/ySR8BUPHAw==}
- '@types/d3-array@3.2.2':
- resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
+ '@types/d3-array@3.2.1':
+ resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==}
'@types/d3-axis@3.0.6':
resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==}
@@ -7486,8 +7820,8 @@ packages:
'@types/d3-selection@3.0.11':
resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==}
- '@types/d3-shape@3.1.8':
- resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==}
+ '@types/d3-shape@3.1.7':
+ resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==}
'@types/d3-time-format@2.3.4':
resolution: {integrity: sha512-xdDXbpVO74EvadI3UDxjxTdR6QIxm1FKzEA/+F8tL4GWWUg/hgvBqf6chql64U5A9ZUGWo7pEu4eNlyLwbKdhg==}
@@ -7516,8 +7850,8 @@ packages:
'@types/d3@7.4.3':
resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}
- '@types/debug@4.1.13':
- resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==}
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
'@types/deep-eql@4.0.2':
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
@@ -7531,21 +7865,15 @@ packages:
'@types/estree-jsx@1.0.5':
resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
- '@types/estree@1.0.9':
- resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- '@types/express-serve-static-core@4.19.8':
- resolution: {integrity: sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==}
-
- '@types/express-serve-static-core@5.1.1':
- resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==}
+ '@types/express-serve-static-core@4.19.5':
+ resolution: {integrity: sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==}
'@types/express@4.17.25':
resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==}
- '@types/express@5.0.6':
- resolution: {integrity: sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==}
-
'@types/geojson@7946.0.16':
resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}
@@ -7567,8 +7895,8 @@ packages:
'@types/http-cache-semantics@4.2.0':
resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==}
- '@types/http-errors@2.0.5':
- resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
+ '@types/http-errors@2.0.4':
+ resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==}
'@types/http-proxy@1.17.17':
resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==}
@@ -7612,14 +7940,14 @@ packages:
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
- '@types/node@18.19.130':
- resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==}
+ '@types/node@18.19.50':
+ resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==}
'@types/node@24.13.2':
resolution: {integrity: sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA==}
- '@types/node@26.0.1':
- resolution: {integrity: sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==}
+ '@types/node@24.13.3':
+ resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -7633,8 +7961,8 @@ packages:
'@types/prop-types@15.7.15':
resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==}
- '@types/qs@6.15.1':
- resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==}
+ '@types/qs@6.9.16':
+ resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==}
'@types/range-parser@1.2.7':
resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==}
@@ -7670,20 +7998,17 @@ packages:
'@types/sax@1.2.7':
resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==}
- '@types/send@0.17.6':
- resolution: {integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==}
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
- '@types/send@1.2.1':
- resolution: {integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==}
+ '@types/send@0.17.4':
+ resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
'@types/serve-index@1.9.4':
resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==}
- '@types/serve-static@1.15.10':
- resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==}
-
- '@types/serve-static@2.2.0':
- resolution: {integrity: sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==}
+ '@types/serve-static@1.15.7':
+ resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==}
'@types/set-cookie-parser@2.4.10':
resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==}
@@ -7691,20 +8016,20 @@ packages:
'@types/sockjs@0.3.36':
resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==}
- '@types/ssh2-streams@0.1.13':
- resolution: {integrity: sha512-faHyY3brO9oLEA0QlcO8N2wT7R0+1sHWZvQ+y3rMLwdY1ZyS1z0W3t65j9PqT4HmQ6ALzNe7RZlNuCNE0wBSWA==}
+ '@types/ssh2-streams@0.1.12':
+ resolution: {integrity: sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==}
'@types/ssh2@0.5.52':
resolution: {integrity: sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==}
- '@types/ssh2@1.15.5':
- resolution: {integrity: sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==}
+ '@types/ssh2@1.15.1':
+ resolution: {integrity: sha512-ZIbEqKAsi5gj35y4P4vkJYly642wIbY6PqoN0xiyQGshKUGXR9WQjF/iF9mXBQ8uBKy3ezfsCkcoHKhd0BzuDA==}
'@types/statuses@2.0.6':
resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==}
- '@types/stream-buffers@3.0.8':
- resolution: {integrity: sha512-J+7VaHKNvlNPJPEJXX/fKa9DZtR/xPMwuIbe+yNOwp1YB+ApUOBv2aUpEoBJEi8nJgbgs1x8e73ttg0r1rSUdw==}
+ '@types/stream-buffers@3.0.7':
+ resolution: {integrity: sha512-azOCy05sXVXrO+qklf0c/B07H/oHaIuDDAiHPVwlk3A9Ek+ksHyTeMajLZl3r76FxpPpxem//4Te61G1iW3Giw==}
'@types/triple-beam@1.3.5':
resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
@@ -7742,128 +8067,9 @@ packages:
'@types/yargs@17.0.35':
resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
- '@typescript/typescript-aix-ppc64@7.0.1-rc':
- resolution: {integrity: sha512-oqq2ZfEJ7BQuufcC3QBQndZLPNyamYNHLao8lKRBeeSkZKypBqxPSgkzrcFZtbYcIaBvpiyUnQP9MT7DEYHWbw==}
- engines: {node: '>=16.20.0'}
- cpu: [ppc64]
- os: [aix]
-
- '@typescript/typescript-darwin-arm64@7.0.1-rc':
- resolution: {integrity: sha512-Slc0yTftT2F/uGDmtPst8ijydneL6uZaLEyr2UjahxZpbhTjHFBJ5agXtVz/TL4A+ldxzjzj+E8QtLZlh/5mXw==}
- engines: {node: '>=16.20.0'}
- cpu: [arm64]
- os: [darwin]
-
- '@typescript/typescript-darwin-x64@7.0.1-rc':
- resolution: {integrity: sha512-h68iFW/LbA1/BsGgSRGFw981/3s1f/rY27YrmeZNuN+ly7dI+fiDduwT9ZT9866x2onoKNRq7PTyxSKyKDzfAQ==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [darwin]
-
- '@typescript/typescript-freebsd-arm64@7.0.1-rc':
- resolution: {integrity: sha512-DE+ppd8Ix2c6OMuRkKY4PJ4hngMGJ9M95OQUP17p9xL/1IKXof7npIeuusMN/bgL5o5JzMfSGh+N+5scTYRg0Q==}
- engines: {node: '>=16.20.0'}
- cpu: [arm64]
- os: [freebsd]
-
- '@typescript/typescript-freebsd-x64@7.0.1-rc':
- resolution: {integrity: sha512-ST1ozHMw0u+CLOnWkcTyWDMV4Qn9osZ6fd1V1lnKDM1t0hZIp81mdGpdHxyHJjd7jdGrb6Gb/QXcZ1uqZ0t5zw==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [freebsd]
-
- '@typescript/typescript-linux-arm64@7.0.1-rc':
- resolution: {integrity: sha512-N46pRihK3t5zD5MUtTQcdmQUqr1WI4U2nxno1gLwOtRSsB4krFkRjPHcQNG7h2DtRkX64rQiReX6WKwg2wprMA==}
- engines: {node: '>=16.20.0'}
- cpu: [arm64]
- os: [linux]
-
- '@typescript/typescript-linux-arm@7.0.1-rc':
- resolution: {integrity: sha512-gHmHwT5Naq5CKM8g9bbaGeEpnwQEvWCLn3fwP4K2m61VQdDKkPk0Dhab/OoZ4LV2SrMddmclYXTzpyg23YGt5g==}
- engines: {node: '>=16.20.0'}
- cpu: [arm]
- os: [linux]
-
- '@typescript/typescript-linux-loong64@7.0.1-rc':
- resolution: {integrity: sha512-G17Sao312rgiPBTh2F4nOpLpa3CcnBSaNhqNghZk2LNhnsp1RaMO5HMq2me21gqu9xLpc6CIgHtOzU6JBgNlfg==}
- engines: {node: '>=16.20.0'}
- cpu: [loong64]
- os: [linux]
-
- '@typescript/typescript-linux-mips64el@7.0.1-rc':
- resolution: {integrity: sha512-0FQspOb5UsQ4tQKvWgUO3pS9OIWkP7/8dPRWq+CRazJUeQZ4LBjtYK52jg5iIOrvItrVl2CwvRtrU3/9OihwJg==}
- engines: {node: '>=16.20.0'}
- cpu: [mips64el]
- os: [linux]
-
- '@typescript/typescript-linux-ppc64@7.0.1-rc':
- resolution: {integrity: sha512-SUmwfVBEv6A2Ld0eWfcvW0FqrgemfQL8jFGOmV1qYxsDqumjE5DekHXqbstgmbE4SHr4rrjHjvmuGCY+kTH/vw==}
- engines: {node: '>=16.20.0'}
- cpu: [ppc64]
- os: [linux]
-
- '@typescript/typescript-linux-riscv64@7.0.1-rc':
- resolution: {integrity: sha512-rxeqnNnGiYzv/LlPHi/3+4p0ooR1cNJLjRIHXKovtiVmxXGJq6gtw8VSpbHuWPekyFMXgIAoLCZN0SQ51rAALQ==}
- engines: {node: '>=16.20.0'}
- cpu: [riscv64]
- os: [linux]
-
- '@typescript/typescript-linux-s390x@7.0.1-rc':
- resolution: {integrity: sha512-RYWCHCiPypxajdRHM2CNK/eM22e4Ex5TTjV2pXf7PTtBowGr0xX8i8kIMknyZS0LX2QfleYHouaoMVsFDSle3g==}
- engines: {node: '>=16.20.0'}
- cpu: [s390x]
- os: [linux]
-
- '@typescript/typescript-linux-x64@7.0.1-rc':
- resolution: {integrity: sha512-PfLJSu0JzroDkqw2m4nqflPEcn8yev0m/vHFQlY9EzHorzjR6QG0wL8AJHvnD1e6h1s76AZngJ5u+z1K/D/HKw==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [linux]
-
- '@typescript/typescript-netbsd-arm64@7.0.1-rc':
- resolution: {integrity: sha512-FfbPxH3dTfp8yVIaNM7bdWTixXuyxpzoemluqcqMROSIz+ImpCG3Q9HO9Ptzp9/giv+P9YYEnCMSXh61migj2w==}
- engines: {node: '>=16.20.0'}
- cpu: [arm64]
- os: [netbsd]
-
- '@typescript/typescript-netbsd-x64@7.0.1-rc':
- resolution: {integrity: sha512-FzdTfSzhRYb6hlav6K3cI5RVgcvCTvNAu/vc+t7B6AmZkThQ+t/1ntnvT5fnHmY1Az2RIBw7/b+qtCEG61HJTQ==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [netbsd]
-
- '@typescript/typescript-openbsd-arm64@7.0.1-rc':
- resolution: {integrity: sha512-PQGhlxfNig+0YQ9Wwzd0USPBkt6w/ZqkBQWsU7G/0JkTzunJel+jSWwhKw4947pak/m7hGSeYiI04xReDLGZww==}
- engines: {node: '>=16.20.0'}
- cpu: [arm64]
- os: [openbsd]
-
- '@typescript/typescript-openbsd-x64@7.0.1-rc':
- resolution: {integrity: sha512-WJ7NYgO2mHmLUkI/tZ+hl8lFd26QPJqO8ONOHNuYbdsybLvSB6B6sep222JIVrOfPRDGvFinbGGB+l3m1FWRWA==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [openbsd]
-
- '@typescript/typescript-sunos-x64@7.0.1-rc':
- resolution: {integrity: sha512-UYjDeUxd765V9qcwlUPk4pEXyL0i3G76CJm9baK4i99u1pGO1psf3nXDw4MMmElVOPvGbZag99ZR/O59E2OX6w==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [sunos]
-
- '@typescript/typescript-win32-arm64@7.0.1-rc':
- resolution: {integrity: sha512-KzXzFSXZOm7zvEt2Aw0MsB2LbTL88znAiVqTDNAOHdlEb7brgmUQh/X2wM/8Be+N0fjEqWKl65cBKNwpWEbJiw==}
- engines: {node: '>=16.20.0'}
- cpu: [arm64]
- os: [win32]
-
- '@typescript/typescript-win32-x64@7.0.1-rc':
- resolution: {integrity: sha512-98R3+OqDr/r0/PLWEoXu88AE0lGVLNd335Ew8ONgzK1JWkNs4ou/5BGt3Or1ij4iXjH+c7PRL+jFjCbtWze+EA==}
- engines: {node: '>=16.20.0'}
- cpu: [x64]
- os: [win32]
-
- '@ungap/structured-clone@1.3.2':
- resolution: {integrity: sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==}
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+ deprecated: Potential CWE-502 - Update to 1.3.1 or higher
'@unhead/vue@2.1.15':
resolution: {integrity: sha512-SSByXfEjhzPn8gXdEdgpYqpLMPSkLUH2HVE0GxZfOtNsJ0GgOHQs0g9T67ZZ1z0kTELLKdtOtYrzrbv9+ffF7g==}
@@ -7883,6 +8089,10 @@ packages:
peerDependencies:
video.js: ^8.19.0
+ '@videojs/vhs-utils@4.1.1':
+ resolution: {integrity: sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==}
+ engines: {node: '>=8', npm: '>=5'}
+
'@videojs/vhs-utils@4.1.2':
resolution: {integrity: sha512-1Dsv5dtWOq0LP1G37O46FQFA2tKAZON5UMe6dFPxT7JvPhEx8QIXcFQxan8+hHI3fX6aomFRFrUBJNgRYQDSXA==}
engines: {node: '>=8', npm: '>=5'}
@@ -7946,34 +8156,34 @@ packages:
'@vitest/utils@4.1.9':
resolution: {integrity: sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==}
- '@vue/compiler-core@3.5.39':
- resolution: {integrity: sha512-16KBTEXAJCpDr0mwlw+AZyhu8iyC7R3S2vBwsI7QnWJU6X3WKc9VKeNEZpiMdZ569qWhz9574L3vV55qRL0Vtw==}
+ '@vue/compiler-core@3.5.35':
+ resolution: {integrity: sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==}
- '@vue/compiler-dom@3.5.39':
- resolution: {integrity: sha512-oQPigALqYbNxTNPvNgSOe+czwVExfbVF02lz8jP0S3AXJiu3jxYDygNUiqSep4ezzW8XgnubqH63My2A7JR/vg==}
+ '@vue/compiler-dom@3.5.35':
+ resolution: {integrity: sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==}
- '@vue/compiler-sfc@3.5.39':
- resolution: {integrity: sha512-d0ki86iOyN8LoZPBmk5SJWNwHP19CnDDCfuo//+2WJa2g5Ke0Jay983PIBIcSSzldC68I8DrD5GrHV3OSDfodg==}
+ '@vue/compiler-sfc@3.5.35':
+ resolution: {integrity: sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==}
- '@vue/compiler-ssr@3.5.39':
- resolution: {integrity: sha512-Ce7/wvwMHai74bdszfXExdazFigYnlF9zgCmEQUcM1j0fOymlouZ7XilTYNo8oUjhlnjYOZbGrcYKuqjz89Ucw==}
+ '@vue/compiler-ssr@3.5.35':
+ resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==}
- '@vue/reactivity@3.5.39':
- resolution: {integrity: sha512-TpsuBJ9gGlZa5d23XcM2y8EXanz9dZeVDQBXRwzy46ItgvM+rWpzs+UVM0wcRLxGvcav0HE5jz2gNL53xlRAog==}
+ '@vue/reactivity@3.5.35':
+ resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==}
- '@vue/runtime-core@3.5.39':
- resolution: {integrity: sha512-9GLtNyRvPAUMbX+7ono0RC2j0guo2LXVi8LvcmAooImACUKm0oFf0jjwbX8/H0AE/t1nxhAkn8RSl9PMCzzxZw==}
+ '@vue/runtime-core@3.5.35':
+ resolution: {integrity: sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==}
- '@vue/runtime-dom@3.5.39':
- resolution: {integrity: sha512-7Y6aAGboKcXAZ3ECuUy7RrS5yy2r47dhTp2SKaJmYxjopImaVFaNa5Ne66NwGovsrxVAl5S5rwc7m22UG7Lmww==}
+ '@vue/runtime-dom@3.5.35':
+ resolution: {integrity: sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==}
- '@vue/server-renderer@3.5.39':
- resolution: {integrity: sha512-yZSakiAGw85rZfG7UM8akMnIF+FmeiNk47uvHf2nVBBSe+dIKUhZuZq9+XgJhbV3nS5Z4ALH23/MpXofW+mbcw==}
+ '@vue/server-renderer@3.5.35':
+ resolution: {integrity: sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==}
peerDependencies:
- vue: 3.5.39
+ vue: 3.5.35
- '@vue/shared@3.5.39':
- resolution: {integrity: sha512-l1rrBtBfTnmxvtsvdQDXltUUy8S1Y+ZaqdfUzmAnJkTd8Z8rv5v/ytW+TKiqEOWyHPoqtPlNFSs0lhRmYVSHVA==}
+ '@vue/shared@3.5.35':
+ resolution: {integrity: sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==}
'@vueuse/core@10.11.1':
resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
@@ -8084,9 +8294,10 @@ packages:
'@webassemblyjs/wast-printer@1.14.1':
resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
- '@xmldom/xmldom@0.8.13':
- resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==}
+ '@xmldom/xmldom@0.8.10':
+ resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
engines: {node: '>=10.0.0'}
+ deprecated: this version has critical issues, please update to the latest version
'@xterm/addon-canvas@0.7.0':
resolution: {integrity: sha512-LF5LYcfvefJuJ7QotNRdRSPc9YASAVDeoT5uyXS/nZshZXjYplGXRECBGiznwvhNL2I8bq1Lf5MzRwstsYQ2Iw==}
@@ -8135,8 +8346,8 @@ packages:
resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==}
engines: {node: '>=0.4.0'}
- acorn@8.17.0:
- resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==}
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -8151,12 +8362,8 @@ packages:
aes-decrypter@4.0.2:
resolution: {integrity: sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==}
- agent-base@6.0.2:
- resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
- engines: {node: '>= 6.0.0'}
-
- agent-base@7.1.4:
- resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
+ agent-base@7.1.3:
+ resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==}
engines: {node: '>= 14'}
agent-base@9.0.0:
@@ -8206,29 +8413,28 @@ packages:
ajv@6.15.0:
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
- ajv@8.20.0:
- resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
+ ajv@8.18.0:
+ resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
algoliasearch-helper@3.29.1:
resolution: {integrity: sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA==}
peerDependencies:
algoliasearch: '>= 3.1 < 6'
- algoliasearch@5.55.1:
- resolution: {integrity: sha512-FyaFnnsbVPtevQwqSj/SdxE3jAsSsY0BEH8IVLf9rXxEBdAhAmT6VKCVSMWoaPIHVN1Eufh/1w8q6k8URpIkWw==}
+ algoliasearch@5.53.0:
+ resolution: {integrity: sha512-OGW1q6b91CRSSeiOnM8LxuR5NYJ2esvw66jUZ4IIvdv+ItNkx3pwLuyR+jaCdbGee4ov5WgUnyPryyh11xvByQ==}
engines: {node: '>= 14.0.0'}
ansi-align@3.0.1:
resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
- ansi-escapes@7.3.0:
- resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
+ ansi-escapes@7.0.0:
+ resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==}
engines: {node: '>=18'}
ansi-html-community@0.0.8:
resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
engines: {'0': node >= 0.8.0}
- hasBin: true
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@@ -8288,6 +8494,9 @@ packages:
resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
engines: {node: '>=10'}
+ arktype@2.1.20:
+ resolution: {integrity: sha512-IZCEEXaJ8g+Ijd59WtSYwtjnqXiwM8sWQ5EjGamcto7+HVN9eK0C4p0zDlCuAwWhpqr6fIBkxPuYDl4/Mcj/+Q==}
+
array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
@@ -8305,16 +8514,11 @@ packages:
resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==}
engines: {node: '>=12.0.0'}
- assertion-error@2.0.1:
- resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
- engines: {node: '>=12'}
-
- ast-v8-to-istanbul@1.0.4:
- resolution: {integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==}
+ ast-v8-to-istanbul@1.0.0:
+ resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==}
astring@1.9.0:
resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
- hasBin: true
async-lock@1.4.1:
resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==}
@@ -8333,8 +8537,8 @@ packages:
resolution: {integrity: sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==}
engines: {node: '>=4'}
- autoprefixer@10.5.2:
- resolution: {integrity: sha512-rD5t5DwOjJdmSORcTq64j8MawTC+tbQ+HHqjR4NDumamy/ambn1UJrlKL+KdwujWxMkFjPM3pPHOEA9tl4767Q==}
+ autoprefixer@10.5.0:
+ resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
@@ -8347,19 +8551,14 @@ packages:
resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==}
engines: {node: '>= 6.0.0'}
- axios@1.18.1:
- resolution: {integrity: sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==}
+ axios@1.15.0:
+ resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==}
axios@1.9.0:
resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
- b4a@1.8.1:
- resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==}
- peerDependencies:
- react-native-b4a: '*'
- peerDependenciesMeta:
- react-native-b4a:
- optional: true
+ b4a@1.6.6:
+ resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==}
babel-loader@9.2.1:
resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==}
@@ -8400,20 +8599,15 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- balanced-match@4.0.4:
- resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
- engines: {node: 18 || 20 || >=22}
+ balanced-match@4.0.2:
+ resolution: {integrity: sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==}
+ engines: {node: 20 || >=22}
- bare-events@2.9.1:
- resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==}
- peerDependencies:
- bare-abort-controller: '*'
- peerDependenciesMeta:
- bare-abort-controller:
- optional: true
+ bare-events@2.5.4:
+ resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==}
- bare-fs@4.7.2:
- resolution: {integrity: sha512-aTvMFUWkBmjzKtEQMDGGDNF8bkfpD5N1b/FCwt7A3wrU4t1o/e/85Wzkluh6JlODCjqVESYCkQCdTXqZ9G7VFg==}
+ bare-fs@4.1.2:
+ resolution: {integrity: sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==}
engines: {bare: '>=1.16.0'}
peerDependencies:
bare-buffer: '*'
@@ -8421,35 +8615,29 @@ packages:
bare-buffer:
optional: true
- bare-os@3.9.3:
- resolution: {integrity: sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ==}
+ bare-os@3.6.1:
+ resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==}
engines: {bare: '>=1.14.0'}
- bare-path@3.0.1:
- resolution: {integrity: sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ==}
+ bare-path@3.0.0:
+ resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
- bare-stream@2.13.3:
- resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==}
+ bare-stream@2.6.5:
+ resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==}
peerDependencies:
- bare-abort-controller: '*'
bare-buffer: '*'
bare-events: '*'
peerDependenciesMeta:
- bare-abort-controller:
- optional: true
bare-buffer:
optional: true
bare-events:
optional: true
- bare-url@2.4.5:
- resolution: {integrity: sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==}
-
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- baseline-browser-mapping@2.10.40:
- resolution: {integrity: sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw==}
+ baseline-browser-mapping@2.10.31:
+ resolution: {integrity: sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -8469,8 +8657,8 @@ packages:
before-after-hook@4.0.0:
resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==}
- better-auth@1.6.23:
- resolution: {integrity: sha512-4vOaRd9UiKGKm9R+ej0jjU1es3MiJIiNc9Qq3VCnYqOZ4/nb5272QqTxWYoDxyUXl5x6A2x2we5KZKQO9teTQQ==}
+ better-auth@1.6.15:
+ resolution: {integrity: sha512-0nuQuEru3ZrLF+9xFUuN3llAmR+6gHLtLunoXaZxB9lXGjSmfBcc6SZUgYq4DfzugPnLvdnzYazsyprZFSFC4Q==}
peerDependencies:
'@lynx-js/react': '*'
'@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -8531,8 +8719,8 @@ packages:
vue:
optional: true
- better-call@1.3.7:
- resolution: {integrity: sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w==}
+ better-call@1.3.5:
+ resolution: {integrity: sha512-kOFJkBP7utAQLEYrobZm3vkTH8mXq5GNgvjc5/XEST1ilVHaxXUXfeDeFlqoETMtyqS4+3/h4ONX2i++ebZrvA==}
peerDependencies:
zod: ^4.0.0
peerDependenciesMeta:
@@ -8566,12 +8754,12 @@ packages:
resolution: {integrity: sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
- body-parser@2.3.0:
- resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==}
+ body-parser@2.2.2:
+ resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==}
engines: {node: '>=18'}
- bonjour-service@1.4.2:
- resolution: {integrity: sha512-lMskhnsW70yWHr4PhPeh2rvaIkLSaDpp+nmtbXBZaNKTXwxL73QOkW6HhbzqTImXjevn9TreGT4GACGBCGP9nQ==}
+ bonjour-service@1.4.0:
+ resolution: {integrity: sha512-fGQtj1qdR9vIKjFiWPQd52qIqwjaYqhcI40JEiDuvlZ86E7ZBPBwY9fPgHy9r2rYGIjiRfctNPYz6OQU73ww2w==}
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -8590,6 +8778,10 @@ packages:
brace-expansion@2.1.1:
resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==}
+ brace-expansion@5.0.6:
+ resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
+ engines: {node: 18 || 20 || >=22}
+
brace-expansion@5.0.7:
resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==}
engines: {node: 18 || 20 || >=22}
@@ -8598,10 +8790,9 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.28.4:
- resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==}
+ browserslist@4.28.2:
+ resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
buffer-crc32@1.0.0:
resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
@@ -8616,8 +8807,8 @@ packages:
buffer@6.0.3:
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
- buildcheck@0.0.7:
- resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==}
+ buildcheck@0.0.6:
+ resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==}
engines: {node: '>=10.0.0'}
bundle-name@4.1.0:
@@ -8652,8 +8843,8 @@ packages:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
- call-bind@1.0.9:
- resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==}
+ call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
engines: {node: '>= 0.4'}
call-bound@1.0.4:
@@ -8682,8 +8873,8 @@ packages:
caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
- caniuse-lite@1.0.30001800:
- resolution: {integrity: sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA==}
+ caniuse-lite@1.0.30001793:
+ resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -8720,8 +8911,8 @@ packages:
character-reference-invalid@2.0.1:
resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
- chardet@2.2.0:
- resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==}
+ chardet@2.1.1:
+ resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}
cheerio-select@2.1.0:
resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
@@ -8767,8 +8958,8 @@ packages:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
- clean-stack@5.3.0:
- resolution: {integrity: sha512-9ngPTOhYGQqNVSfeJkYXHmF7AGWp4/nN5D/QqNQs3Dvxd1Kk/WpjHfNujKHYUQ/5CoGyOyFNoWSPk5afzP0QVg==}
+ clean-stack@5.2.0:
+ resolution: {integrity: sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==}
engines: {node: '>=14.16'}
cli-boxes@3.0.0:
@@ -8832,8 +9023,8 @@ packages:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-convert@3.1.3:
- resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==}
+ color-convert@3.1.2:
+ resolution: {integrity: sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg==}
engines: {node: '>=14.6'}
color-name@1.1.3:
@@ -8842,16 +9033,16 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- color-name@2.1.0:
- resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==}
+ color-name@2.0.2:
+ resolution: {integrity: sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A==}
engines: {node: '>=12.20'}
- color-string@2.1.4:
- resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==}
+ color-string@2.1.2:
+ resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==}
engines: {node: '>=18'}
- color@5.0.3:
- resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==}
+ color@5.0.2:
+ resolution: {integrity: sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==}
engines: {node: '>=18'}
colord@2.9.3:
@@ -8952,16 +9143,16 @@ packages:
resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==}
engines: {node: '>=18'}
- conventional-changelog-angular@8.3.1:
- resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==}
+ conventional-changelog-angular@8.0.0:
+ resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==}
engines: {node: '>=18'}
conventional-changelog-conventionalcommits@10.2.0:
resolution: {integrity: sha512-UtlM9GqolY7OmlQh5L/UEVoKsTUpTgUVy1PU8JN5gl5Ydaejb7WRklGliG1SKPxxj7hzA173eG3Kt5fYWE2pmg==}
engines: {node: '>=22'}
- conventional-changelog-writer@8.4.0:
- resolution: {integrity: sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==}
+ conventional-changelog-writer@8.0.0:
+ resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==}
engines: {node: '>=18'}
hasBin: true
@@ -8969,8 +9160,8 @@ packages:
resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==}
engines: {node: '>=18'}
- conventional-commits-parser@6.4.0:
- resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==}
+ conventional-commits-parser@6.0.0:
+ resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==}
engines: {node: '>=18'}
hasBin: true
@@ -8984,8 +9175,8 @@ packages:
cookie-es@1.2.3:
resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==}
- cookie-es@3.1.1:
- resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==}
+ cookie-es@3.0.1:
+ resolution: {integrity: sha512-1HqK6V6Prrm7cHzmjtCzfa370ljqPQoNeWIh5NXYqWwUI2l3DZlzjHHh25ZvJIPfwkiYnCvHykE2MIJkEVD1Rg==}
cookie-signature@1.0.7:
resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==}
@@ -9002,8 +9193,8 @@ packages:
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
engines: {node: '>=18'}
- cookie@2.0.0:
- resolution: {integrity: sha512-hRSFuKJ6SYHrFVNltQdagQFMk7e0Q/VrORTGqZGyUAmmhA3EwPeldHCTg0HqUaDodQOfQDe7qXuOtpf4lwCsaA==}
+ cookie@2.0.1:
+ resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==}
engines: {node: '>=22'}
cookies@0.9.1:
@@ -9052,8 +9243,8 @@ packages:
typescript:
optional: true
- cosmiconfig@9.0.2:
- resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==}
+ cosmiconfig@9.0.0:
+ resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
engines: {node: '>=14'}
peerDependencies:
typescript: '>=4.9.5'
@@ -9074,8 +9265,8 @@ packages:
resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==}
engines: {node: '>= 14'}
- crelt@1.0.7:
- resolution: {integrity: sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==}
+ crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
croner@10.0.1:
resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==}
@@ -9289,7 +9480,6 @@ packages:
d3-dsv@3.0.1:
resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
engines: {node: '>=12'}
- hasBin: true
d3-ease@3.0.1:
resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
@@ -9306,8 +9496,8 @@ packages:
d3-format@1.4.5:
resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==}
- d3-format@3.1.2:
- resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==}
+ d3-format@3.1.0:
+ resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
engines: {node: '>=12'}
d3-geo@3.1.1:
@@ -9373,9 +9563,6 @@ packages:
d3-time@1.1.0:
resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==}
- d3-time@2.1.1:
- resolution: {integrity: sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==}
-
d3-time@3.1.0:
resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
engines: {node: '>=12'}
@@ -9434,8 +9621,8 @@ packages:
decimal.js@10.6.0:
resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
- decode-named-character-reference@1.3.0:
- resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
+ decode-named-character-reference@1.1.0:
+ resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
@@ -9514,6 +9701,11 @@ packages:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ detect-libc@1.0.3:
+ resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
@@ -9527,7 +9719,6 @@ packages:
detect-port@1.6.1:
resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==}
engines: {node: '>= 4.0.0'}
- hasBin: true
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
@@ -9538,7 +9729,6 @@ packages:
direction@2.0.1:
resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==}
- hasBin: true
dns-caching@0.2.9:
resolution: {integrity: sha512-FSvmI/dC/HXYIyX2m7MvQt36Yut49GCw3hWaDqaTgLLmKyLs5lmv/jhmNKqWjSF2vRGTgFYL0G3mwcjLlKXj0w==}
@@ -9555,6 +9745,10 @@ packages:
resolution: {integrity: sha512-XJgGhoR/CLpqshm4d3L7rzH6t8NgDFUIIpztYlLHIApeJjMZKYJMz2zxPsYxnejq5h3ELYSw/RBsi3t5h7gNTA==}
engines: {node: '>= 8.0'}
+ dockerode@5.0.0:
+ resolution: {integrity: sha512-C52mvJ+7lcyhWNfrzVfFsbTrBfy/ezE9FGEYLpu17FUeBcCkxERk9nN7uDl/478ynDiQ4U+5DbQC2vENHkVEtQ==}
+ engines: {node: '>= 14.17'}
+
dockerode@5.0.1:
resolution: {integrity: sha512-avsq/xk4YPIrn0CgleX5bjT9Y8IT1p9PxrNQ++RBQ2WEyFfHCTDsT9kmyxz+H/axnjAwg8wJWEIuPGOUuNupiA==}
engines: {node: '>= 14.17'}
@@ -9744,8 +9938,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron-to-chromium@1.5.382:
- resolution: {integrity: sha512-8ETaWbV6SZOrno+G93Ffd9ENsMtetqdnqj4nlfxFW90Sm5GgnuV28Kf62hqQVD6VUgzm7qFQKsTsAPmeUiU3Ug==}
+ electron-to-chromium@1.5.361:
+ resolution: {integrity: sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -9776,15 +9970,15 @@ packages:
encoding-sniffer@0.2.1:
resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==}
- end-of-stream@1.4.5:
- resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
+ end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
enhanced-resolve@5.21.6:
resolution: {integrity: sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==}
engines: {node: '>=10.13.0'}
- enhanced-resolve@5.24.1:
- resolution: {integrity: sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==}
+ enhanced-resolve@5.22.0:
+ resolution: {integrity: sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==}
engines: {node: '>=10.13.0'}
entities@2.2.0:
@@ -9814,6 +10008,10 @@ packages:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
+ env-paths@3.0.0:
+ resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
environment@1.1.0:
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
engines: {node: '>=18'}
@@ -9821,8 +10019,8 @@ packages:
error-causes@3.0.2:
resolution: {integrity: sha512-i0B8zq1dHL6mM85FGoxaJnVtx6LD5nL2v0hlpGdntg5FOSyzQ46c9lmz5qx0xRS2+PWHGOHcYxGIBC5Le2dRMw==}
- error-ex@1.3.4:
- resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==}
+ error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
es-define-property@1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
@@ -9832,19 +10030,19 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-module-lexer@2.2.0:
- resolution: {integrity: sha512-3lGxdTXCLfe1MYfTz1y2ksAAUM4NAOP6rPEjxGJVKO7TZ5+tvHCaQWGpC4Y3IXvW3ece0Cz1cIP4FWBxOnGCTQ==}
+ es-module-lexer@2.1.0:
+ resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==}
- es-object-atoms@1.1.2:
- resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==}
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
es-set-tostringtag@2.1.0:
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
- es-toolkit@1.49.0:
- resolution: {integrity: sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==}
+ es-toolkit@1.46.1:
+ resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==}
esast-util-from-estree@2.0.0:
resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==}
@@ -9857,6 +10055,16 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.27.7:
+ resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ esbuild@0.28.0:
+ resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
esbuild@0.28.1:
resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==}
engines: {node: '>=18'}
@@ -9892,7 +10100,6 @@ packages:
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
- hasBin: true
esrecurse@4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
@@ -9965,9 +10172,6 @@ packages:
eventemitter3@5.0.4:
resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
- events-universal@1.0.1:
- resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
-
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
@@ -9988,16 +10192,16 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
- execa@9.6.1:
- resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==}
+ execa@9.5.2:
+ resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==}
engines: {node: ^18.19.0 || >=20.5.0}
expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
- expect-type@1.4.0:
- resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==}
+ expect-type@1.3.0:
+ resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
engines: {node: '>=12.0.0'}
express-rate-limit@8.5.2:
@@ -10021,6 +10225,9 @@ packages:
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ fast-content-type-parse@3.0.0:
+ resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==}
+
fast-decode-uri-component@1.0.1:
resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==}
@@ -10030,8 +10237,8 @@ packages:
fast-diff@1.3.0:
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
- fast-equals@5.4.0:
- resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
+ fast-equals@5.3.3:
+ resolution: {integrity: sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==}
engines: {node: '>=6.0.0'}
fast-fifo@1.3.2:
@@ -10044,8 +10251,8 @@ packages:
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
- fast-json-stringify@6.4.0:
- resolution: {integrity: sha512-ibRCQ0GZKJIQ+P3Et1h0LhPgp3PMTYk0MH8O+kW3lNYsvmaQww5Nn3f1jf73Q0jR1Yz3a1CDP4/NZD3vOajWJQ==}
+ fast-json-stringify@6.3.0:
+ resolution: {integrity: sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==}
fast-querystring@1.1.2:
resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==}
@@ -10056,8 +10263,8 @@ packages:
fast-string-width@3.0.2:
resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==}
- fast-uri@3.1.3:
- resolution: {integrity: sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==}
+ fast-uri@3.1.0:
+ resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
fast-wrap-ansi@0.2.2:
resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==}
@@ -10065,6 +10272,10 @@ packages:
fast-xml-builder@1.2.0:
resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==}
+ fast-xml-parser@5.8.0:
+ resolution: {integrity: sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==}
+ hasBin: true
+
fast-xml-parser@5.9.3:
resolution: {integrity: sha512-brCNCeScma/kqa54J4PIDriSSSLssRkuYaUCpvHJulGc3HGI/xxKUCTDcYkAdqJsyb//ydpbxecjC3hB9+tb/g==}
hasBin: true
@@ -10101,8 +10312,8 @@ packages:
fflate@0.4.8:
resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==}
- fflate@0.8.3:
- resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==}
+ fflate@0.8.2:
+ resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
figures@2.0.0:
resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
@@ -10166,7 +10377,6 @@ packages:
flat@5.0.2:
resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
- hasBin: true
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
@@ -10220,8 +10430,8 @@ packages:
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
- fs-extra@11.3.6:
- resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==}
+ fs-extra@11.2.0:
+ resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
engines: {node: '>=14.14'}
fsevents@2.3.2:
@@ -10245,6 +10455,11 @@ packages:
resolution: {integrity: sha512-LVbzjD4WA6UP5B1UnP8wuaXJiLnqMdM/E4fiJXTJ5haJ5b/MBNsK29h2fm6swEoQaVQjvYFWKLE2RanyZIoRVQ==}
engines: {node: '>=10'}
+ gel@2.0.0:
+ resolution: {integrity: sha512-Oq3Fjay71s00xzDc0BF/mpcLmnA+uRqMEJK8p5K4PaZjUEsxaeo+kR9OHBVAf289/qPd+0OcLOLUN0UhqiUCog==}
+ engines: {node: '>= 18.0.0'}
+ hasBin: true
+
gemoji@6.1.0:
resolution: {integrity: sha512-MOlX3doQ1fsfzxQX8Y+u6bC5Ssc1pBUBIPVyrS69EzKt+5LIZAOm0G5XGVNhwXFgkBF3r+Yk88ONyrFHo8iNFA==}
@@ -10263,8 +10478,8 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-east-asian-width@1.6.0:
- resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
+ get-east-asian-width@1.4.0:
+ resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}
engines: {node: '>=18'}
get-intrinsic@1.3.0:
@@ -10302,8 +10517,8 @@ packages:
resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
engines: {node: '>=18'}
- get-tsconfig@4.14.0:
- resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==}
+ get-tsconfig@4.13.6:
+ resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==}
git-log-parser@1.2.1:
resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==}
@@ -10328,6 +10543,9 @@ packages:
peerDependencies:
tslib: '2'
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
glob@10.5.0:
resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
@@ -10369,8 +10587,8 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- graphql@16.14.2:
- resolution: {integrity: sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==}
+ graphql@16.14.0:
+ resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
gray-matter@4.0.3:
@@ -10394,8 +10612,8 @@ packages:
handle-thing@2.0.1:
resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
- handlebars@4.7.9:
- resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==}
+ handlebars@4.7.8:
+ resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
engines: {node: '>=0.4.7'}
hasBin: true
@@ -10494,7 +10712,6 @@ packages:
he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
- hasBin: true
headers-polyfill@5.0.1:
resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==}
@@ -10512,8 +10729,8 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
- hono@4.12.27:
- resolution: {integrity: sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==}
+ hono@4.12.24:
+ resolution: {integrity: sha512-I36D1s+HgQc55KbhEr4iybfxv/9o1zdpw+XEM6dJa91LqQD0HCoSGdxpRJCZE+aavs87j4V3Ls2OJzq8C/U4iw==}
engines: {node: '>=16.9.0'}
hook-std@4.0.0:
@@ -10527,8 +10744,8 @@ packages:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
engines: {node: ^16.14.0 || >=18.0.0}
- hosted-git-info@9.0.3:
- resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==}
+ hosted-git-info@9.0.2:
+ resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==}
engines: {node: ^20.17.0 || >=22.9.0}
hpack.js@2.1.6:
@@ -10551,12 +10768,10 @@ packages:
html-minifier-terser@6.1.0:
resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==}
engines: {node: '>=12'}
- hasBin: true
html-minifier-terser@7.2.0:
resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==}
engines: {node: ^14.13.1 || >=16.0.0}
- hasBin: true
html-tags@3.3.1:
resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
@@ -10619,12 +10834,12 @@ packages:
http-parser-js@0.5.10:
resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==}
- http-proxy-agent@9.1.0:
- resolution: {integrity: sha512-2NxoveTT58mjYT4n3RPTEfCZGLMbidoO8XEieXfpSYxu+PQJ1qpx4ypwH6N+uF9twBPIvRRgvkvW5HUTYWENig==}
+ http-proxy-agent@9.0.0:
+ resolution: {integrity: sha512-FcF8VhXYLQcxWCnt/cCpT2apKsRDUGeVEeMqGu4HSTu29U8Yw0TLOjdYIlDsYk3IkUh+taX4IDWpPcCqKDhCjA==}
engines: {node: '>= 20'}
- http-proxy-middleware@2.0.10:
- resolution: {integrity: sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==}
+ http-proxy-middleware@2.0.9:
+ resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==}
engines: {node: '>=12.0.0'}
peerDependencies:
'@types/express': ^4.17.13
@@ -10640,12 +10855,8 @@ packages:
resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
engines: {node: '>=10.19.0'}
- https-proxy-agent@5.0.1:
- resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
- engines: {node: '>= 6'}
-
- https-proxy-agent@9.1.0:
- resolution: {integrity: sha512-ag87y7cJJ9/3+GxFr8Oy4O5faDsGRGnBGsJj/YjOSsSx/5eadKLYTMPlzuR6obgoCDDm0abAAZitXXQkMOPSpA==}
+ https-proxy-agent@9.0.0:
+ resolution: {integrity: sha512-/MVmHp58WkOypgFhCLk4fzpPcFQvTJ/e6LBI7irpIO2HfxUbpmYoHF+KzipzJpxxzJu7aJNWQ0xojJ/dzV2G5g==}
engines: {node: '>= 20'}
human-signals@2.1.0:
@@ -10656,8 +10867,8 @@ packages:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
- human-signals@8.0.1:
- resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
+ human-signals@8.0.0:
+ resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
engines: {node: '>=18.18.0'}
hyperdyperid@1.2.0:
@@ -10702,19 +10913,21 @@ packages:
image-size@2.0.2:
resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==}
engines: {node: '>=16.x'}
- hasBin: true
immediate@3.0.6:
resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+ immer@11.1.4:
+ resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==}
+
immer@11.1.9:
resolution: {integrity: sha512-sc/z0Cyti70bZa0ZU4sWfAElfovFb9Ni8tArJZLuklYWxegPiK3pDOql1Rq5H0FIRAW9LSQRG6OX4KqBldbhBA==}
- immutable@5.1.9:
- resolution: {integrity: sha512-m8nVez3rwrgmWxtLMt1ZYXB2Lv7OKYn/disyxAlSDYAlKSlFoPPfIAmAM/M5xqL4m4C/wAPw7S2/CNaUii1Hxg==}
+ immutable@5.1.5:
+ resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==}
- import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
import-from-esm@2.0.0:
@@ -10762,8 +10975,8 @@ packages:
resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
engines: {node: '>=10'}
- inline-style-parser@0.2.7:
- resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
+ inline-style-parser@0.2.4:
+ resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
internmap@1.0.1:
resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
@@ -10772,8 +10985,8 @@ packages:
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
engines: {node: '>=12'}
- intl-messageformat@11.2.9:
- resolution: {integrity: sha512-cGzymZerpDhVXRKjKLgXKda9gI29TU2o88L7gwNMHp3WZVxA/0c5tX52udXbW9JklDApolvMXZG6Dhhdz5eirA==}
+ intl-messageformat@11.1.1:
+ resolution: {integrity: sha512-vnrF2f4vfsdaFY6tuLZfzGcx1GZFMFAq6c7QdK3HSXNcGXEIQncNgbeAcnpjAOszQzq3Jbol2SwgshIGY08WyA==}
invariant@2.2.4:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
@@ -10786,12 +10999,16 @@ packages:
resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==}
engines: {node: '>= 12'}
+ ip-address@9.0.5:
+ resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
+ engines: {node: '>= 12'}
+
ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
- ipaddr.js@2.4.0:
- resolution: {integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==}
+ ipaddr.js@2.3.0:
+ resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==}
engines: {node: '>= 10'}
iron-webcrypto@1.2.1:
@@ -10819,7 +11036,6 @@ packages:
is-ci@3.0.1:
resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
- hasBin: true
is-core-module@2.16.2:
resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==}
@@ -10831,12 +11047,10 @@ packages:
is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
- hasBin: true
is-docker@3.0.0:
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- hasBin: true
is-extendable@0.1.1:
resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
@@ -10867,7 +11081,6 @@ packages:
is-inside-container@1.0.0:
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
engines: {node: '>=14.16'}
- hasBin: true
is-installed-globally@0.4.0:
resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
@@ -10980,6 +11193,10 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isexe@3.1.5:
+ resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==}
+ engines: {node: '>=18'}
+
isobject@3.0.1:
resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
engines: {node: '>=0.10.0'}
@@ -10993,8 +11210,8 @@ packages:
peerDependencies:
ws: '*'
- issue-parser@7.0.2:
- resolution: {integrity: sha512-7atWPjhGEIX3JEtMrOYd8TKzboYlq+5sNbdl9POiLYOI14G5HZiQbZP0Xj5EZdrufQVXfJlpTV0hys0CuxwxZw==}
+ issue-parser@7.0.1:
+ resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==}
engines: {node: ^18.17 || >=20.6.1}
istanbul-lib-coverage@3.2.2:
@@ -11012,6 +11229,10 @@ packages:
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+ jackspeak@4.2.3:
+ resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==}
+ engines: {node: 20 || >=22}
+
java-properties@1.0.2:
resolution: {integrity: sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==}
engines: {node: '>= 0.6.0'}
@@ -11030,14 +11251,13 @@ packages:
jiti@1.21.7:
resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
- hasBin: true
jiti@2.7.0:
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
- joi@17.13.4:
- resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==}
+ joi@17.13.3:
+ resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==}
jose@6.2.3:
resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==}
@@ -11060,8 +11280,8 @@ packages:
react:
optional: true
- js-base64@3.8.0:
- resolution: {integrity: sha512-65kvbemyZhj+ExQt1PEFyBEjL5vAHysu1lJdW1AwhhChkO8ZBPizYk/m9GVrpbS2Je1hF+UYZ+6KywqtZV8mHw==}
+ js-base64@3.7.8:
+ resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==}
js-tokens@10.0.0:
resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==}
@@ -11069,14 +11289,17 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-yaml@3.15.0:
- resolution: {integrity: sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==}
+ js-yaml@3.14.2:
+ resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
hasBin: true
- js-yaml@4.3.0:
- resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==}
+ js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
hasBin: true
+ jsbn@1.1.0:
+ resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
+
jsdom@29.1.1:
resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0}
@@ -11090,10 +11313,13 @@ packages:
resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==}
engines: {node: '>= 10.16.0'}
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
- hasBin: true
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
@@ -11119,9 +11345,6 @@ packages:
json-schema@0.4.0:
resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
- json-with-bigint@3.5.8:
- resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==}
-
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -11130,8 +11353,8 @@ packages:
jsonc-parser@3.3.1:
resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
- jsonfile@6.2.1:
- resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
jsonpath-plus@10.4.0:
resolution: {integrity: sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==}
@@ -11143,7 +11366,6 @@ packages:
katex@0.16.47:
resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==}
- hasBin: true
keygrip@1.1.0:
resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==}
@@ -11316,8 +11538,8 @@ packages:
resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- lodash-es@4.18.1:
- resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==}
+ lodash-es@4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
@@ -11382,8 +11604,8 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lru-cache@11.5.1:
- resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==}
+ lru-cache@11.3.5:
+ resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
engines: {node: 20 || >=22}
lru-cache@5.1.1:
@@ -11404,12 +11626,8 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- magicast@0.5.3:
- resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==}
-
- make-asynchronous@1.1.0:
- resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==}
- engines: {node: '>=18'}
+ magicast@0.5.2:
+ resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==}
make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
@@ -11454,8 +11672,8 @@ packages:
peerDependencies:
marked: '>=1 <16'
- marked@15.0.12:
- resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==}
+ marked@15.0.11:
+ resolution: {integrity: sha512-1BEXAU2euRCG3xwgLVT1y0xbJEld1XOrmRJpUwRCcy7rxhSCwMrmEu9LXoPhHSCJG41V7YcQ2mjKRr5BA3ITIA==}
engines: {node: '>= 18'}
hasBin: true
@@ -11487,8 +11705,8 @@ packages:
mdast-util-find-and-replace@3.0.2:
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
- mdast-util-from-markdown@2.0.3:
- resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==}
+ mdast-util-from-markdown@2.0.2:
+ resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
mdast-util-frontmatter@2.0.1:
resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==}
@@ -11526,8 +11744,8 @@ packages:
mdast-util-phrasing@4.1.0:
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
- mdast-util-to-hast@13.2.1:
- resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
+ mdast-util-to-hast@13.2.0:
+ resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
mdast-util-to-markdown@2.1.2:
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
@@ -11555,8 +11773,8 @@ packages:
medium-zoom@1.1.0:
resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==}
- memfs@4.57.8:
- resolution: {integrity: sha512-bApYhn8BLpFAnAQmFfEl/NPN+8qx5Ar3V4Qt3ek23mVwBEElzV7c6XoPkb/PCG8ZFpowCEpHcPwMFTwHS7tSMA==}
+ memfs@4.57.6:
+ resolution: {integrity: sha512-WQK+DGjKCnPdpSyJUXphz+COF2uEhhsxQ3VIWBSbzpbbXuch3h4FePMqXrXGdLjsTgo4JFzBFsP6AWd9pVazGw==}
peerDependencies:
tslib: '2'
@@ -11578,8 +11796,8 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- mermaid@11.16.0:
- resolution: {integrity: sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA==}
+ mermaid@11.15.0:
+ resolution: {integrity: sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==}
methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
@@ -11744,8 +11962,8 @@ packages:
engines: {node: '>=4'}
hasBin: true
- mime@4.1.0:
- resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==}
+ mime@4.0.4:
+ resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==}
engines: {node: '>=16'}
hasBin: true
@@ -11765,8 +11983,8 @@ packages:
resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- min-document@2.19.2:
- resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==}
+ min-document@2.19.0:
+ resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==}
mini-css-extract-plugin@2.10.2:
resolution: {integrity: sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==}
@@ -11795,49 +12013,6 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- minimizer-webpack-plugin@5.6.1:
- resolution: {integrity: sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==}
- engines: {node: '>= 10.13.0'}
- peerDependencies:
- '@minify-html/node': '*'
- '@swc/core': '*'
- '@swc/css': '*'
- '@swc/html': '*'
- clean-css: '*'
- cssnano: '*'
- csso: '*'
- esbuild: '*'
- html-minifier-terser: '*'
- lightningcss: '*'
- postcss: '*'
- uglify-js: '*'
- webpack: ^5.1.0
- peerDependenciesMeta:
- '@minify-html/node':
- optional: true
- '@swc/core':
- optional: true
- '@swc/css':
- optional: true
- '@swc/html':
- optional: true
- clean-css:
- optional: true
- cssnano:
- optional: true
- csso:
- optional: true
- esbuild:
- optional: true
- html-minifier-terser:
- optional: true
- lightningcss:
- optional: true
- postcss:
- optional: true
- uglify-js:
- optional: true
-
minipass@7.1.3:
resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -11854,8 +12029,8 @@ packages:
resolution: {integrity: sha512-blbA7XpAaOdC/PR0Tu8GiUxlx6CpBuRowQPYV7lhi9Yr9G9+dkPXIUjqjzc/NCn/uZZPopluaJlIYntIEI/VLw==}
hasBin: true
- mrmime@2.0.1:
- resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
engines: {node: '>=10'}
ms@2.0.0:
@@ -11876,7 +12051,6 @@ packages:
multicast-dns@7.2.5:
resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==}
- hasBin: true
mute-stream@2.0.0:
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
@@ -11904,11 +12078,11 @@ packages:
resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==}
engines: {node: '>=8.0.0'}
- nan@2.28.0:
- resolution: {integrity: sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==}
+ nan@2.20.0:
+ resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==}
- nanoid@3.3.15:
- resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ nanoid@3.3.12:
+ resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@@ -11917,12 +12091,12 @@ packages:
engines: {node: ^18 || >=20}
hasBin: true
- nanostores@1.4.0:
- resolution: {integrity: sha512-i0tloweeudshAEuddpDxcg9Ik6pkPfVsHIgKyf143JrgG7/MOh0+q7BypdLXZPoOP7fOYt1eTcwGkyiVmhJFkA==}
+ nanostores@1.3.0:
+ resolution: {integrity: sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA==}
engines: {node: ^20.0.0 || >=22.0.0}
- napi-build-utils@2.0.0:
- resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
+ napi-build-utils@1.0.2:
+ resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
negotiator@0.6.3:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
@@ -11974,8 +12148,8 @@ packages:
typescript:
optional: true
- next@16.2.9:
- resolution: {integrity: sha512-MEOJiq/UvuezAdqVSceHbqDgZt1kDw2tpGVOlsdIoJsQdbN2JY2hpVG4xnXGkbdJUOEWhnRfiu/O4Hpc9Juwww==}
+ next@16.2.10:
+ resolution: {integrity: sha512-2som5AVXb3kE6Yjine3/mNbBayYF58eguBWIVVUdr1y/L426xyVEgYxgBG+1QC34P2x5E+tcDup6XkuOAX3dCA==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -11998,15 +12172,15 @@ packages:
no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
- node-abi@3.93.0:
- resolution: {integrity: sha512-Cu6yUpX5Iavugm8BeX7c0wgU9CvOqfd1yM6A1d2q2ZMjym7GjpASv2GdRcTq3Fx+Sb5OgBkEEpw4VnAbY6Y5RA==}
+ node-abi@3.67.0:
+ resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==}
engines: {node: '>=10'}
node-addon-api@7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
- node-addon-api@8.9.0:
- resolution: {integrity: sha512-ekZMeaaIzSQTSpr7X2X3iJM7lTzgnx8ahAG9pJfT/7+14mlEM8ZYQ9cgCDvSSRbReFK0oHli3WrZdCiRsgAT9Q==}
+ node-addon-api@8.3.1:
+ resolution: {integrity: sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==}
engines: {node: ^18 || ^20 || >= 21}
node-emoji@2.2.0:
@@ -12038,8 +12212,8 @@ packages:
node-mock-http@1.0.4:
resolution: {integrity: sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==}
- node-releases@2.0.50:
- resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==}
+ node-releases@2.0.46:
+ resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==}
engines: {node: '>=18'}
normalize-package-data@6.0.2:
@@ -12058,8 +12232,8 @@ packages:
resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==}
engines: {node: '>=14.16'}
- normalize-url@9.0.1:
- resolution: {integrity: sha512-ARftfC5HdUNu9jJeL8pHj8debUIHA2b91FizCoMzY4lG6dDX13jdvTK0TBe24IBDRf2HvJSzzwEPvmbkQWHRSg==}
+ normalize-url@9.0.0:
+ resolution: {integrity: sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==}
engines: {node: '>=20'}
npm-run-path@4.0.1:
@@ -12074,8 +12248,8 @@ packages:
resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
engines: {node: '>=18'}
- npm@11.18.0:
- resolution: {integrity: sha512-T67M4L5wNm0cZ7EBLErcEkY1SmzEW/WJ+SADBzsFUY1UdAPfFHXFQtZ6SEXiK0+vzXysCvAsepbMaBTwnrAD+w==}
+ npm@11.6.2:
+ resolution: {integrity: sha512-7iKzNfy8lWYs3zq4oFPa8EXZz5xt9gQNKJZau3B1ErLBb6bF7sBJ00x09485DOvRT2l5Gerbl3VlZNT57MxJVA==}
engines: {node: ^20.17.0 || >=22.9.0}
hasBin: true
bundledDependencies:
@@ -12084,7 +12258,6 @@ packages:
- '@npmcli/config'
- '@npmcli/fs'
- '@npmcli/map-workspaces'
- - '@npmcli/metavuln-calculator'
- '@npmcli/package-json'
- '@npmcli/promise-spawn'
- '@npmcli/redact'
@@ -12095,6 +12268,7 @@ packages:
- cacache
- chalk
- ci-info
+ - cli-columns
- fastest-levenshtein
- fs-minipass
- glob
@@ -12157,8 +12331,8 @@ packages:
peerDependencies:
webpack: ^4.0.0 || ^5.0.0
- oauth4webapi@3.8.6:
- resolution: {integrity: sha512-iwemM91xz8nryHti2yTmg5fhyEMVOkOXwHNqbvcATjyajb5oQxCQzrNOA6uElRHuMhQQTKUyFKV9y/CNyg25BQ==}
+ oauth4webapi@3.3.0:
+ resolution: {integrity: sha512-ZlozhPlFfobzh3hB72gnBFLjXpugl/dljz1fJSRdqaV2r3D5dmi5lg2QWI0LmUYuazmE+b5exsloEv6toUtw9g==}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
@@ -12179,9 +12353,8 @@ packages:
obuf@1.1.2:
resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
- obug@2.1.3:
- resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==}
- engines: {node: '>=12.20.0'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
octokit@5.0.5:
resolution: {integrity: sha512-4+/OFSqOjoyULo7eN7EA97DE0Xydj/PW5aIckxqQIoFjFwqXKuFCvXUJObyJfBF9Khu4RL/jlDRI9FPaMGfPnw==}
@@ -12229,10 +12402,9 @@ packages:
opener@1.5.2:
resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==}
- hasBin: true
- openid-client@6.8.4:
- resolution: {integrity: sha512-QSw0BA08piujetEwfZsHoTrDpMEha7GDZDicQqVwX4u0ChCjefvjDB++TZ8BTg76UpwhzIQgdvvfgfl3HpCSAw==}
+ openid-client@6.3.3:
+ resolution: {integrity: sha512-lTK8AV8SjqCM4qznLX0asVESAwzV39XTVdfMAM185ekuaZCnkWdPzcxMTXNlsm9tsUAMa1Q30MBmKAykdT1LWw==}
orderedmap@2.1.1:
resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
@@ -12240,8 +12412,8 @@ packages:
outvariant@1.4.3:
resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==}
- oxfmt@0.57.0:
- resolution: {integrity: sha512-ZB7Bi+rGDSqmVIo9jwcLyFgjxXvQhDdU+jx+ZrVy6VRiVXK2+CHc4hO3J4dUQjHe7V0ymHB+MDuv5z+NhK07HA==}
+ oxfmt@0.58.0:
+ resolution: {integrity: sha512-8feG/7NVEHDVwc1OUpP6Pks+TnaDFUw2jLLFIMi5bcmmwxAX2wBQvjSzj62RRTYBf2Op1Wt8xbkmagmPTR5ETg==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -12274,10 +12446,6 @@ packages:
resolution: {integrity: sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==}
engines: {node: '>=12'}
- p-event@6.0.1:
- resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==}
- engines: {node: '>=16.17'}
-
p-filter@4.1.0:
resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==}
engines: {node: '>=18'}
@@ -12306,8 +12474,8 @@ packages:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
- p-map@7.0.5:
- resolution: {integrity: sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA==}
+ p-map@7.0.3:
+ resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==}
engines: {node: '>=18'}
p-queue@6.6.2:
@@ -12330,10 +12498,6 @@ packages:
resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
engines: {node: '>=8'}
- p-timeout@6.1.4:
- resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
- engines: {node: '>=14.16'}
-
p-try@1.0.0:
resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
engines: {node: '>=4'}
@@ -12422,8 +12586,8 @@ packages:
resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- path-expression-matcher@1.6.1:
- resolution: {integrity: sha512-h7bxdzhHk8Knyc4Tj+jMaa7fEEoUJy7p1qtbVgkYg1Uhpe5Np5VuGXCRZnkZvU+Q42M1vStt0ifa3ueykRJPmQ==}
+ path-expression-matcher@1.5.0:
+ resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==}
engines: {node: '>=14.0.0'}
path-is-inside@1.0.2:
@@ -12515,8 +12679,8 @@ packages:
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
- picomatch@2.3.2:
- resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==}
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
picomatch@4.0.4:
@@ -12716,8 +12880,8 @@ packages:
peerDependencies:
postcss: ^8.4
- postcss-js@4.1.0:
- resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==}
+ postcss-js@4.0.1:
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
@@ -12783,8 +12947,8 @@ packages:
peerDependencies:
postcss: ^8.4.31
- postcss-mixins@12.1.2:
- resolution: {integrity: sha512-90pSxmZVfbX9e5xCv7tI5RV1mnjdf16y89CJKbf/hD7GyOz1FCxcYMl8ZYA8Hc56dbApTKKmU9HfvgfWdCxlwg==}
+ postcss-mixins@12.0.0:
+ resolution: {integrity: sha512-br7vXwoA5niiQAW3BLgd66xoGie/JJ1O4k7uLDbb+fbdYFXouxAjppIkBZDpPtSIzx63WeVXRGEYStSYa5kQmw==}
engines: {node: ^20.0 || ^22.0 || >=24.0}
peerDependencies:
postcss: ^8.2.14
@@ -12954,12 +13118,12 @@ packages:
peerDependencies:
postcss: ^8.4
- postcss-selector-parser@6.1.4:
- resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==}
+ postcss-selector-parser@6.1.2:
+ resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
- postcss-selector-parser@7.1.4:
- resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==}
+ postcss-selector-parser@7.1.0:
+ resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==}
engines: {node: '>=4'}
postcss-simple-vars@7.0.1:
@@ -12999,6 +13163,10 @@ packages:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.15:
+ resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
+ engines: {node: ^10 || ^12 || >=14}
+
postcss@8.5.16:
resolution: {integrity: sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg==}
engines: {node: ^10 || ^12 || >=14}
@@ -13007,8 +13175,8 @@ packages:
resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
engines: {node: '>=4'}
- postgres-bytea@1.0.1:
- resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==}
+ postgres-bytea@1.0.0:
+ resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
engines: {node: '>=0.10.0'}
postgres-date@1.0.7:
@@ -13023,8 +13191,8 @@ packages:
resolution: {integrity: sha512-Ray65LYEJrMMqDtsBUBXunEVP/g4wtATvq/xz9rchUoLy/9mSkkFgUko/8DVtGxgiP3vivpFMgfb9HpCuDrBHg==}
engines: {node: '>=10.15.1'}
- posthog-js@1.396.5:
- resolution: {integrity: sha512-huW/8R151I08i/tkOaAv3Q/yWVqzhqPj3SxyhpgNLB/xysaNeV1ibp6DHzbRWV5D7FRM48Zg6Icxsm4q0irEtg==}
+ posthog-js@1.399.0:
+ resolution: {integrity: sha512-8l+uZJZM3+OAc0D0+iLBMDRVfWF9s26Rt0jv8EC3kMJcA/9oyOets0zDgqIZk2TTfUs3H96ycLE6Lwj1wWG16Q==}
posthog-node@5.39.4:
resolution: {integrity: sha512-+fCQ7htBFRQQFbIzl1T0TA7bDwYyaB9XP308ZFMCUoB5LzTzOFxBa6TYVrxdH/VQl43WXTp6sf0QsG2Z4XlNBg==}
@@ -13043,11 +13211,16 @@ packages:
preact@10.24.3:
resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==}
- preact@10.29.3:
- resolution: {integrity: sha512-D9NL1GAnJZhc3RndVs4gDdxEeU9TcHgywMrhhOsnpdlvFjdbx0gAsLUnH6JEhlJH5giL7Tx5biWPUSEXE/HPzw==}
+ preact@10.29.7:
+ resolution: {integrity: sha512-DCHYrK/B10yUD3ZjLfhZ3WIE/9Vf9VFUODcRE2dRomTYDpJk6z6L9wecSfhfE6M9ZTHUdyQkoC46arIDhEV84Q==}
+ peerDependencies:
+ preact-render-to-string: '>=5'
+ peerDependenciesMeta:
+ preact-render-to-string:
+ optional: true
- prebuild-install@7.1.3:
- resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
+ prebuild-install@7.1.2:
+ resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==}
engines: {node: '>=10'}
deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
hasBin: true
@@ -13099,8 +13272,8 @@ packages:
resolution: {integrity: sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g==}
engines: {node: '>=18'}
- property-information@7.2.0:
- resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==}
+ property-information@7.0.0:
+ resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
prosemirror-changeset@2.4.1:
resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==}
@@ -13108,8 +13281,8 @@ packages:
prosemirror-commands@1.7.1:
resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==}
- prosemirror-dropcursor@1.8.2:
- resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==}
+ prosemirror-dropcursor@1.8.3:
+ resolution: {integrity: sha512-FoYbsJR8gK+DGlqhNoE29Loa38eIZPzQRIb1VMaDNBoo4OLP6vVof/jR8qFY/6XvUd6Dhug8MDCHl2a/h8RTfQ==}
prosemirror-gapcursor@1.4.1:
resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==}
@@ -13123,8 +13296,8 @@ packages:
prosemirror-keymap@1.2.3:
resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==}
- prosemirror-model@1.25.9:
- resolution: {integrity: sha512-pRTklkDDMMRopyoAcrr9wV/8g/RYgrLHBuJAb5hlEuYZRdm5yqmPjWId83fpBwPpSFqEdja0H7Dfd7z1X/npcA==}
+ prosemirror-model@1.25.10:
+ resolution: {integrity: sha512-9n6rH4DbJU1eH4SxLt6Y0HhJIo6cZsb7DJ/30uob1hOKPeO6TAaMWI2tc7kwR92BjfPOU2fFHWbZLovLi3XQfA==}
prosemirror-schema-list@1.5.1:
resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==}
@@ -13138,14 +13311,14 @@ packages:
prosemirror-transform@1.12.0:
resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==}
- prosemirror-view@1.41.9:
- resolution: {integrity: sha512-clTunTX+eaLbr87L1V1QPheRlEQJyTlL3gXe9x3jQIk3rL0RVWxviDGz8tFaydwIVm+hKhYCyr+R/zBtWr9s6A==}
+ prosemirror-view@1.42.0:
+ resolution: {integrity: sha512-N54DF3OXNWDuP81G1kbfCys8ZzIjuL1VnvJ2mk5STSu/fNxWIcX/EutQLA3s9KR/2wVhgDi4hzBB/1fINVxk0A==}
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
- protobufjs@7.6.4:
- resolution: {integrity: sha512-RJJPTTpvFfHcWLkIa2JFWK4XvtSzS0yEWDmunqHXli1h3JlkbcQZXDZdcWxv+JK3Xsl5/UFDPZ0iGm7DAengYw==}
+ protobufjs@7.4.0:
+ resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==}
engines: {node: '>=12.0.0'}
proxmox-api@1.1.1:
@@ -13155,15 +13328,6 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
- proxy-agent-negotiate@1.1.0:
- resolution: {integrity: sha512-N8IBcM3UgCVzz2L2Lqv8DVntDnnC8/hiV4nEDUPkqq72TPUgYWjQc+bdZlBPZK9LzPAvOY//gAt0S0DApoOXWQ==}
- engines: {node: '>= 20'}
- peerDependencies:
- kerberos: ^2.0.0
- peerDependenciesMeta:
- kerberos:
- optional: true
-
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
@@ -13171,8 +13335,8 @@ packages:
resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
engines: {node: '>=10'}
- pump@3.0.4:
- resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==}
+ pump@3.0.2:
+ resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
@@ -13189,8 +13353,8 @@ packages:
resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==}
engines: {node: '>=16.0.0'}
- qs@6.15.3:
- resolution: {integrity: sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==}
+ qs@6.15.2:
+ resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==}
engines: {node: '>=0.6'}
query-selector-shadow-dom@1.0.1:
@@ -13236,10 +13400,6 @@ packages:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
- range-parser@1.3.0:
- resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==}
- engines: {node: '>= 0.6'}
-
raw-body@2.5.3:
resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==}
engines: {node: '>= 0.8'}
@@ -13313,8 +13473,8 @@ packages:
react: ^16 || ^17 || ^18 || ^19
react-dom: ^16 || ^17 || ^18 || ^19
- react-redux@9.3.0:
- resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==}
+ react-redux@9.2.0:
+ resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==}
peerDependencies:
'@types/react': ^18.2.25 || ^19
react: ^18.0 || ^19
@@ -13401,8 +13561,8 @@ packages:
resolution: {integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==}
engines: {node: '>=20'}
- read-pkg@10.1.0:
- resolution: {integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==}
+ read-pkg@10.0.0:
+ resolution: {integrity: sha512-A70UlgfNdKI5NSvTTfHzLQj7NJRpJ4mT5tGafkllJ4wh71oYuGm/pzphHcmW4s35iox56KSK721AihodoXSc/A==}
engines: {node: '>=20'}
read-pkg@9.0.1:
@@ -13416,8 +13576,8 @@ packages:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
- readable-stream@4.7.0:
- resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ readable-stream@4.5.2:
+ resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
readdir-glob@1.1.3:
@@ -13435,9 +13595,6 @@ packages:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'}
- real-require@1.0.0:
- resolution: {integrity: sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==}
-
recharts@3.9.1:
resolution: {integrity: sha512-WMcwlXcB7l+BbxiEdyClkG+1sxrMHNZpzT577LEvU4+rXPd8oTAy1wXk72hnk2KOOmxuLvw3z5DtXT7HEAydtg==}
engines: {node: '>=18'}
@@ -13493,8 +13650,8 @@ packages:
resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==}
engines: {node: '>=4'}
- registry-auth-token@5.1.1:
- resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==}
+ registry-auth-token@5.0.2:
+ resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==}
engines: {node: '>=14'}
registry-url@6.0.1:
@@ -13504,9 +13661,8 @@ packages:
regjsgen@0.8.0:
resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==}
- regjsparser@0.13.2:
- resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==}
- hasBin: true
+ regjsparser@0.13.1:
+ resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==}
rehype-external-links@3.0.0:
resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==}
@@ -13588,6 +13744,9 @@ packages:
requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ reselect@5.1.1:
+ resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
+
reselect@5.2.0:
resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==}
@@ -13619,7 +13778,6 @@ packages:
resolve@1.22.12:
resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
engines: {node: '>= 0.4'}
- hasBin: true
responselike@3.0.0:
resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
@@ -13674,7 +13832,6 @@ packages:
rtlcss@4.3.0:
resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==}
engines: {node: '>=12.0.0'}
- hasBin: true
run-applescript@7.1.0:
resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
@@ -13695,9 +13852,8 @@ packages:
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
- safe-regex2@5.1.1:
- resolution: {integrity: sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA==}
- hasBin: true
+ safe-regex2@5.0.0:
+ resolution: {integrity: sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==}
safe-stable-stringify@2.5.0:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
@@ -13770,8 +13926,8 @@ packages:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- semver@7.8.5:
- resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
+ semver@7.7.4:
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
engines: {node: '>=10'}
hasBin: true
@@ -13807,9 +13963,6 @@ packages:
set-cookie-parser@3.1.0:
resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==}
- set-cookie-parser@3.1.1:
- resolution: {integrity: sha512-vM9SUhjsUYs6UeJUmygc5Ofm5eQGe85riob5ju6XCgFGJI5PLV4nrDAQpQjd+LkFBpAkADn5BQQpZ9EUNkyLuA==}
-
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -13843,12 +13996,8 @@ packages:
resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==}
engines: {node: '>= 0.4'}
- shell-quote@1.9.0:
- resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==}
- engines: {node: '>= 0.4'}
-
- side-channel-list@1.0.1:
- resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
engines: {node: '>= 0.4'}
side-channel-map@1.0.1:
@@ -13859,8 +14008,8 @@ packages:
resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
engines: {node: '>= 0.4'}
- side-channel@1.1.1:
- resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==}
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
siginfo@2.0.0:
@@ -13897,7 +14046,6 @@ packages:
sitemap@7.1.3:
resolution: {integrity: sha512-tAjEd+wt/YwnEbfNB2ht51ybBJxbEWwe5ki/Z//Wh0rpBFTCUSj46GnxUKEWzhfuJTsee8x3lybHxFgUMig2hw==}
engines: {node: '>=12.0.0', npm: '>=5.6.0'}
- hasBin: true
skin-tone@2.0.0:
resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==}
@@ -13925,8 +14073,8 @@ packages:
resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
engines: {node: '>= 14'}
- socks@2.8.9:
- resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==}
+ socks@2.8.3:
+ resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
sonic-boom@4.2.1:
@@ -13966,8 +14114,8 @@ packages:
spdx-expression-parse@3.0.1:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
- spdx-license-ids@3.0.23:
- resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==}
+ spdx-license-ids@3.0.20:
+ resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==}
spdy-transport@3.0.0:
resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
@@ -13989,6 +14137,9 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ sprintf-js@1.1.3:
+ resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+
sql-escaper@1.3.3:
resolution: {integrity: sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==}
engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'}
@@ -14003,8 +14154,8 @@ packages:
ssh-remote-port-forward@1.0.4:
resolution: {integrity: sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==}
- ssh2@1.17.0:
- resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==}
+ ssh2@1.16.0:
+ resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==}
engines: {node: '>=10.16.0'}
stack-trace@0.0.10:
@@ -14027,8 +14178,8 @@ packages:
std-env@3.10.0:
resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
- std-env@4.1.0:
- resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==}
+ std-env@4.0.0:
+ resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==}
stream-buffers@3.0.3:
resolution: {integrity: sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==}
@@ -14037,8 +14188,8 @@ packages:
stream-combiner2@1.1.1:
resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==}
- streamx@2.28.0:
- resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==}
+ streamx@2.22.0:
+ resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==}
strict-event-emitter-types@2.0.0:
resolution: {integrity: sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==}
@@ -14087,8 +14238,8 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
- strip-ansi@7.2.0:
- resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
+ strip-ansi@7.1.2:
+ resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
engines: {node: '>=12'}
strip-bom-string@1.0.0:
@@ -14119,17 +14270,20 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ strnum@2.3.0:
+ resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==}
+
strnum@2.4.1:
resolution: {integrity: sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==}
style-mod@4.1.3:
resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==}
- style-to-js@1.1.21:
- resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
+ style-to-js@1.1.16:
+ resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==}
- style-to-object@1.0.14:
- resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
+ style-to-object@1.0.8:
+ resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
styled-jsx@5.1.6:
resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
@@ -14153,14 +14307,14 @@ packages:
stylis@4.4.0:
resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==}
- sugarss@5.0.1:
- resolution: {integrity: sha512-ctS5RYCBVvPoZAnzIaX5QSShK8ZiZxD5HUqSxlusvEMC+QZQIPCPOIJg6aceFX+K2rf4+SH89eu++h1Zmsr2nw==}
+ sugarss@5.0.0:
+ resolution: {integrity: sha512-3//knMoF9btXcxHTbMRckIYjkEzSZ6pZjiaZ3wM6OIpUtQ06Uwqc0XgAr6jf+U74cLLTV/BEgmHWoeXPC+NhdQ==}
engines: {node: '>=18.0'}
peerDependencies:
postcss: ^8.3.3
- super-regex@1.1.0:
- resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==}
+ super-regex@1.0.0:
+ resolution: {integrity: sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==}
engines: {node: '>=18'}
superjson@2.2.6:
@@ -14183,8 +14337,8 @@ packages:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
- supports-hyperlinks@3.2.0:
- resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==}
+ supports-hyperlinks@3.1.0:
+ resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==}
engines: {node: '>=14.18'}
supports-preserve-symlinks-flag@1.0.0:
@@ -14197,7 +14351,6 @@ packages:
svgo@3.3.3:
resolution: {integrity: sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==}
engines: {node: '>=14.0.0'}
- hasBin: true
svgson@5.3.1:
resolution: {integrity: sha512-qdPgvUNWb40gWktBJnbJRelWcPzkLed/ShhnRsjbayXz8OtdPOzbil9jtiZdrYvSDumAz/VNQr6JaNfPx/gvPA==}
@@ -14208,8 +14361,8 @@ packages:
'@swc/core': ^1.2.147
webpack: '>=2'
- swiper@14.0.1:
- resolution: {integrity: sha512-dibQY282S5rn6S9Ba+GTIvofyY4Qujy526a0cPaJnjR2S18Z7HMGKZBr8k/3ukboeKW/ig5h0q//7CYip0MCQw==}
+ swiper@14.0.2:
+ resolution: {integrity: sha512-KRFQZP0zXUh6MEmSQOJKSw27ARqS884OX/dfBz4i2/It9aixL7svh7/Ng0yZ0FE+PrjrW5vzBcjCfmNnq109XQ==}
engines: {node: '>= 4.7.0'}
swrv@1.2.0:
@@ -14220,8 +14373,8 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
- tabbable@6.5.0:
- resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==}
+ tabbable@6.4.0:
+ resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==}
tagged-tag@1.0.0:
resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==}
@@ -14240,8 +14393,11 @@ packages:
resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
engines: {node: '>=6'}
- tar-fs@2.1.5:
- resolution: {integrity: sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==}
+ tar-fs@2.1.4:
+ resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==}
+
+ tar-fs@3.1.2:
+ resolution: {integrity: sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==}
tar-fs@3.1.3:
resolution: {integrity: sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==}
@@ -14250,22 +14406,19 @@ packages:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
- tar-stream@3.2.0:
- resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
-
- teex@1.0.1:
- resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
temp-dir@3.0.0:
resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==}
engines: {node: '>=14.16'}
- tempy@3.2.0:
- resolution: {integrity: sha512-d79HhZya5Djd7am0q+W4RTsSU+D/aJzM+4Y4AGJGuGlgM2L6sx5ZvOYTmZjqPhrDrV6xJTtRSm1JCLj6V6LHLQ==}
+ tempy@3.1.0:
+ resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==}
engines: {node: '>=14.16'}
- terser-webpack-plugin@5.6.1:
- resolution: {integrity: sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==}
+ terser-webpack-plugin@5.6.0:
+ resolution: {integrity: sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
'@minify-html/node': '*'
@@ -14307,16 +14460,15 @@ packages:
uglify-js:
optional: true
- terser@5.48.0:
- resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==}
+ terser@5.46.1:
+ resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==}
engines: {node: '>=10'}
- hasBin: true
testcontainers@12.0.4:
resolution: {integrity: sha512-QIR/8xF1+F/26cIM+9B4yyxNTbKJxAv3hygZyhPRgZ8Q2AhlPZjDdpXRuk16V37X4bgJRI3hXFhoEICMBA7Adg==}
- text-decoder@1.2.7:
- resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==}
+ text-decoder@1.2.0:
+ resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==}
text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
@@ -14334,8 +14486,8 @@ packages:
peerDependencies:
tslib: ^2
- thread-stream@4.2.0:
- resolution: {integrity: sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==}
+ thread-stream@4.0.0:
+ resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==}
engines: {node: '>=20'}
through2@2.0.5:
@@ -14360,8 +14512,8 @@ packages:
tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
- tinyexec@1.2.4:
- resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==}
+ tinyexec@1.0.2:
+ resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
engines: {node: '>=18'}
tinyglobby@0.2.17:
@@ -14380,18 +14532,18 @@ packages:
resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==}
engines: {node: '>=14.0.0'}
- tldts-core@6.1.86:
- resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
+ tldts-core@6.1.69:
+ resolution: {integrity: sha512-nygxy9n2PBUFQUtAXAc122gGo+04/j5qr5TGQFZTHafTKYvmARVXt2cA5rgero2/dnXUfkdPtiJoKmrd3T+wdA==}
- tldts-core@7.4.5:
- resolution: {integrity: sha512-pGrwzZDvPwKe+7NNUqAunb6rqTfynr0VOUhCMdqbu5xlvNiszsAJygRzwvpVycdzejlbpY+SWJOn+s75Og7FEA==}
+ tldts-core@7.0.12:
+ resolution: {integrity: sha512-3K76aXywJFduGRsOYoY5JzINLs/WMlOkeDwPL+8OCPq2Rh39gkSDtWAxdJQlWjpun/xF/LHf29yqCi6VC/rHDA==}
- tldts@6.1.86:
- resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==}
+ tldts@6.1.69:
+ resolution: {integrity: sha512-Oh/CqRQ1NXNY7cy9NkTPUauOWiTro0jEYZTioGbOmcQh6EC45oribyIMJp0OJO3677r13tO6SKdWoGZUx2BDFw==}
hasBin: true
- tldts@7.4.5:
- resolution: {integrity: sha512-RfEzKWcq5fHUOFq7J3rl3Oz6ylKGtcHqUznzj4EcXsxLSIjJcvpbXAQtWGeJQ0xKnimR5e0Cn+cn9TssfMzm+g==}
+ tldts@7.0.12:
+ resolution: {integrity: sha512-M9ZQBPp6FyqhMcl233vHYyYRkxXOA1SKGlnq13S0mJdUhRSwr2w6I8rlchPL73wBwRlyIZpFvpu2VcdSMWLYXw==}
hasBin: true
tmp@0.2.7:
@@ -14402,9 +14554,9 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- toad-cache@3.7.1:
- resolution: {integrity: sha512-5DXWzE4Vz7xNHsv+xQ+MGfJYyC78Aok3tEr0MNwHoRf7vZnga1mQXZ4/Nsodld4VR6Wd+VhfmqnNrsRJyYPfrQ==}
- engines: {node: '>=20'}
+ toad-cache@3.7.0:
+ resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==}
+ engines: {node: '>=12'}
toidentifier@1.0.1:
resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
@@ -14475,12 +14627,12 @@ packages:
resolution: {integrity: sha512-QVsbr1WhGLq2F0oDyYbqtOXcf3gcnL8C9H5EX8bBwAr8ZWvWGJzukpPrDrWgJMrNtgDbo74BIjI4kJu3q2xQWw==}
engines: {node: '>=18.18.0'}
- ts-dedent@2.3.0:
- resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==}
+ ts-dedent@2.2.0:
+ resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
- tsconfck@3.1.6:
- resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+ tsconfck@3.1.3:
+ resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==}
engines: {node: ^18 || >=20}
deprecated: unmaintained
hasBin: true
@@ -14509,8 +14661,8 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- tsx@4.22.4:
- resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==}
+ tsx@4.21.0:
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
engines: {node: '>=18.0.0'}
hasBin: true
@@ -14525,8 +14677,8 @@ packages:
resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==}
engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'}
- turbo@2.10.2:
- resolution: {integrity: sha512-wTExrNrRjB8qzIcg+ZLm0A3GFNLDsWNwdS/RBXB0FPrBDyzk3i96Yx+TxWZC7a0k1SIreFB8ciUbxjmEqTH8IQ==}
+ turbo@2.10.4:
+ resolution: {integrity: sha512-GQpduILaKjoaGljw097ScsSyKTtZSY7cZ3bJktzfTkPMyCf3ShKLuXK2IaOEN2Plziml+ArR7WJ1m+V4VbnaKQ==}
hasBin: true
tweetnacl@0.14.5:
@@ -14544,6 +14696,10 @@ packages:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'}
+ type-fest@5.6.0:
+ resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==}
+ engines: {node: '>=20'}
+
type-fest@5.7.0:
resolution: {integrity: sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg==}
engines: {node: '>=20'}
@@ -14559,9 +14715,9 @@ packages:
typedarray-to-buffer@3.1.5:
resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
- typescript@7.0.1-rc:
- resolution: {integrity: sha512-drEP77wK7CCDlPfXZH4e008UUQOsw1DFmHmZOZjuNA+yoDLLnSNMZRXi90NbV/1LVo7SbNLq1bs3jjvk49TEqQ==}
- engines: {node: '>=16.20.0'}
+ typescript@6.0.3:
+ resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
+ engines: {node: '>=14.17'}
hasBin: true
ufo@1.6.4:
@@ -14585,13 +14741,14 @@ packages:
undici-types@7.18.2:
resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
- undici-types@8.3.0:
- resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
-
- undici@6.27.0:
- resolution: {integrity: sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==}
+ undici@6.23.0:
+ resolution: {integrity: sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==}
engines: {node: '>=18.17'}
+ undici@7.25.0:
+ resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==}
+ engines: {node: '>=20.18.1'}
+
undici@7.28.0:
resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==}
engines: {node: '>=20.18.1'}
@@ -14631,10 +14788,6 @@ packages:
resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
- unicorn-magic@0.4.0:
- resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==}
- engines: {node: '>=20'}
-
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
@@ -14648,8 +14801,8 @@ packages:
unist-util-is@4.1.0:
resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
- unist-util-is@6.0.1:
- resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
+ unist-util-is@6.0.0:
+ resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
unist-util-position-from-estree@2.0.0:
resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
@@ -14663,20 +14816,23 @@ packages:
unist-util-visit-parents@3.1.1:
resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
- unist-util-visit-parents@6.0.2:
- resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
+ unist-util-visit-parents@6.0.1:
+ resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
unist-util-visit@2.0.3:
resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
+ unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+
unist-util-visit@5.1.0:
resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
- universal-github-app-jwt@2.2.2:
- resolution: {integrity: sha512-dcmbeSrOdTnsjGjUfAlqNDJrhxXizjAz94ija9Qw8YkZ1uu0d+GoZzyH+Jb9tIIqvGsadUfwg+22k5aDqqwzbw==}
+ universal-github-app-jwt@2.2.0:
+ resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==}
- universal-user-agent@7.0.3:
- resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==}
+ universal-user-agent@7.0.2:
+ resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
@@ -14772,14 +14928,12 @@ packages:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
- uuid@14.0.1:
- resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==}
- hasBin: true
+ uuid@14.0.0:
+ resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==}
uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
- hasBin: true
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
@@ -14798,8 +14952,8 @@ packages:
vfile-location@5.0.3:
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
- vfile-message@4.0.3:
- resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+ vfile-message@4.0.2:
+ resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
@@ -14825,7 +14979,7 @@ packages:
vite-tsconfig-paths@6.1.1:
resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==}
peerDependencies:
- vite: '>=8.1.2'
+ vite: '>=8.1.3'
vite@8.1.3:
resolution: {integrity: sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA==}
@@ -14911,8 +15065,8 @@ packages:
jsdom:
optional: true
- vue-component-type-helpers@3.3.6:
- resolution: {integrity: sha512-FkljacAwJ9BUoSUdpFe3VDy0sGigNlTH9+2zcXUWmZOjN8swiCkl3t48wOJun0OsUd2cEIda1l04tsxMiKIIrQ==}
+ vue-component-type-helpers@3.3.4:
+ resolution: {integrity: sha512-joip1uZTaQR0nD23N400gIdJ7xY+WiiiMA/BCKz842gvGBknqDQAzklUvDEhqFvvrhQY8S2ZANBMu4X70VMFGw==}
vue-demi@0.14.10:
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
@@ -14928,8 +15082,8 @@ packages:
vue-sonner@1.3.2:
resolution: {integrity: sha512-UbZ48E9VIya3ToiRHAZUbodKute/z/M1iT8/3fU8zEbwBRE11AKuHikssv18LMk2gTTr6eMQT4qf6JoLHWuj/A==}
- vue@3.5.39:
- resolution: {integrity: sha512-xmZCYabFGcirU8r0fTuvl/LICc1OU620rnqepaJDL/a141ZigkG7AyaxQLdqJ02ZRYzWe6YPaDHeQx7MfknQfA==}
+ vue@3.5.35:
+ resolution: {integrity: sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -14943,8 +15097,8 @@ packages:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
- watchpack@2.5.2:
- resolution: {integrity: sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==}
+ watchpack@2.5.1:
+ resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==}
engines: {node: '>=10.13.0'}
wbuf@1.7.3:
@@ -14956,9 +15110,6 @@ packages:
web-vitals@5.3.0:
resolution: {integrity: sha512-q6LWsLatGYZp5VGBIOvbTj6JBV2nOmC8KvWztXBmwJcfFAzhwKwbOxhUH306XY3CcaZDUlSmSuNPBsCn0bFu+g==}
- web-worker@1.5.0:
- resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==}
-
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -14969,7 +15120,6 @@ packages:
webpack-bundle-analyzer@4.10.2:
resolution: {integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==}
engines: {node: '>= 10.13.0'}
- hasBin: true
webpack-dev-middleware@7.4.5:
resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==}
@@ -14980,8 +15130,8 @@ packages:
webpack:
optional: true
- webpack-dev-server@5.2.5:
- resolution: {integrity: sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg==}
+ webpack-dev-server@5.2.4:
+ resolution: {integrity: sha512-GqDPGZN9bRqKBTkp4aWkobDDHMsrXKoGSdOH56smIri8qR0JG8gfL8/v/f/OZR3/OKXjG8uwJbFVhKm/FNU/UA==}
engines: {node: '>= 18.12.0'}
hasBin: true
peerDependencies:
@@ -15005,8 +15155,8 @@ packages:
resolution: {integrity: sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==}
engines: {node: '>=10.13.0'}
- webpack@5.108.3:
- resolution: {integrity: sha512-hOpaCHmQVVY66IVTjofnH14IgSdmod2aquSGHGuYig/OIdWge01Hk2Wt988DZcwXumFUT4+FvJY5N+ikl8o/ww==}
+ webpack@5.107.1:
+ resolution: {integrity: sha512-mvdIWxj/H6QsfgDdH9djne3a5dYcmEmtsXGESkypaGN5jXjF/b+9KDlmTDQ2TKlFUeA2fI9Y65kihD30JOdB+Q==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@@ -15060,6 +15210,11 @@ packages:
engines: {node: '>= 8'}
hasBin: true
+ which@4.0.0:
+ resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==}
+ engines: {node: ^16.13.0 || >=18.0.0}
+ hasBin: true
+
why-is-node-running@2.3.0:
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
@@ -15197,12 +15352,12 @@ packages:
resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}
engines: {node: ^20.19.0 || ^22.12.0 || >=23}
- yargs@16.2.2:
- resolution: {integrity: sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==}
+ yargs@16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
engines: {node: '>=10'}
- yargs@17.7.3:
- resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==}
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
yargs@18.0.0:
@@ -15217,8 +15372,8 @@ packages:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
- yoctocolors@2.1.2:
- resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}
+ yoctocolors@2.1.1:
+ resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
engines: {node: '>=18'}
zip-stream@6.0.1:
@@ -15230,8 +15385,8 @@ packages:
peerDependencies:
zod: '>= 3.25.0'
- zod-openapi@5.4.6:
- resolution: {integrity: sha512-P2jsOOBAq/6hCwUsMCjUATZ8szkMsV5VAwZENfyxp2Hc/XPJQpVwAgevWZc65xZauCwWB9LAn7zYeiCJFAEL+A==}
+ zod-openapi@5.3.0:
+ resolution: {integrity: sha512-hv3DU37kV39v0MEiQ0vcL06NLS9bTHTb7FNtuFk2zhuATsi+UNcNN6y03z7qbI9NdC6LJS+Knk5shOSCUMwsDQ==}
engines: {node: '>=20'}
peerDependencies:
zod: ^3.25.74 || ^4.0.0
@@ -15255,19 +15410,19 @@ packages:
snapshots:
- '@actions/core@3.0.1':
+ '@actions/core@3.0.0':
dependencies:
'@actions/exec': 3.0.0
- '@actions/http-client': 4.0.1
+ '@actions/http-client': 4.0.0
'@actions/exec@3.0.0':
dependencies:
'@actions/io': 3.0.2
- '@actions/http-client@4.0.1':
+ '@actions/http-client@4.0.0':
dependencies:
tunnel: 0.0.6
- undici: 6.27.0
+ undici: 6.23.0
'@actions/io@3.0.2': {}
@@ -15289,157 +15444,165 @@ snapshots:
dependencies:
json-schema: 0.4.0
- '@ai-sdk/vue@3.0.33(vue@3.5.39(typescript@7.0.1-rc))(zod@4.4.3)':
+ '@ai-sdk/vue@3.0.33(vue@3.5.35(typescript@6.0.3))(zod@4.4.3)':
dependencies:
'@ai-sdk/provider-utils': 4.0.5(zod@4.4.3)
ai: 6.0.33(zod@4.4.3)
- swrv: 1.2.0(vue@3.5.39(typescript@7.0.1-rc))
- vue: 3.5.39(typescript@7.0.1-rc)
+ swrv: 1.2.0(vue@3.5.35(typescript@6.0.3))
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- zod
- '@algolia/abtesting@1.21.1':
+ '@algolia/abtesting@1.19.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)':
+ '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)
- '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)
+ '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)
+ '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
- '@algolia/autocomplete-core@1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)':
+ '@algolia/autocomplete-core@1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)
- '@algolia/autocomplete-shared': 1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)
+ '@algolia/autocomplete-plugin-algolia-insights': 1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)
+ '@algolia/autocomplete-shared': 1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- search-insights
- '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)':
+ '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)
+ '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)
search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- '@algolia/autocomplete-plugin-algolia-insights@1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)':
+ '@algolia/autocomplete-plugin-algolia-insights@1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-shared': 1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)
+ '@algolia/autocomplete-shared': 1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)
search-insights: 2.17.3
transitivePeerDependencies:
- '@algolia/client-search'
- algoliasearch
- '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)':
+ '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)':
dependencies:
- '@algolia/client-search': 5.55.1
- algoliasearch: 5.55.1
+ '@algolia/client-search': 5.53.0
+ algoliasearch: 5.53.0
- '@algolia/autocomplete-shared@1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)':
+ '@algolia/autocomplete-shared@1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)':
dependencies:
- '@algolia/client-search': 5.55.1
- algoliasearch: 5.55.1
+ '@algolia/client-search': 5.53.0
+ algoliasearch: 5.53.0
- '@algolia/client-abtesting@5.55.1':
+ '@algolia/client-abtesting@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/client-analytics@5.55.1':
+ '@algolia/client-analytics@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/client-common@5.55.1': {}
+ '@algolia/client-common@5.53.0': {}
- '@algolia/client-insights@5.55.1':
+ '@algolia/client-insights@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/client-personalization@5.55.1':
+ '@algolia/client-personalization@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/client-query-suggestions@5.55.1':
+ '@algolia/client-query-suggestions@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/client-search@5.55.1':
+ '@algolia/client-search@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
'@algolia/events@4.0.1': {}
- '@algolia/ingestion@1.55.1':
+ '@algolia/ingestion@1.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/monitoring@1.55.1':
+ '@algolia/monitoring@1.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/recommend@5.55.1':
+ '@algolia/recommend@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/client-common': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
- '@algolia/requester-browser-xhr@5.55.1':
+ '@algolia/requester-browser-xhr@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
+ '@algolia/client-common': 5.53.0
- '@algolia/requester-fetch@5.55.1':
+ '@algolia/requester-fetch@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
+ '@algolia/client-common': 5.53.0
- '@algolia/requester-node-http@5.55.1':
+ '@algolia/requester-node-http@5.53.0':
dependencies:
- '@algolia/client-common': 5.55.1
+ '@algolia/client-common': 5.53.0
'@alloc/quick-lru@5.2.0': {}
'@antfu/install-pkg@1.1.0':
dependencies:
package-manager-detector: 1.6.0
- tinyexec: 1.2.4
+ tinyexec: 1.0.2
+
+ '@ark/schema@0.46.0':
+ dependencies:
+ '@ark/util': 0.46.0
+ optional: true
+
+ '@ark/util@0.46.0':
+ optional: true
'@asamuzakjp/css-color@5.1.11':
dependencies:
'@asamuzakjp/generational-cache': 1.0.1
- '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
- '@csstools/css-color-parser': 4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
@@ -15459,7 +15622,7 @@ snapshots:
dependencies:
'@panva/hkdf': 1.2.1
jose: 6.2.3
- oauth4webapi: 3.8.6
+ oauth4webapi: 3.3.0
preact: 10.24.3
preact-render-to-string: 6.5.11(preact@10.24.3)
@@ -15471,6 +15634,12 @@ snapshots:
- '@simplewebauthn/server'
- nodemailer
+ '@babel/code-frame@7.29.0':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
'@babel/code-frame@7.29.7':
dependencies:
'@babel/helper-validator-identifier': 7.29.7
@@ -15479,13 +15648,13 @@ snapshots:
'@babel/compat-data@7.29.7': {}
- '@babel/core@7.29.7':
+ '@babel/core@7.29.0':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/generator': 7.29.7
'@babel/helper-compilation-targets': 7.29.7
- '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
- '@babel/helpers': 7.29.7
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0)
+ '@babel/helpers': 7.29.2
'@babel/parser': 7.29.7
'@babel/template': 7.29.7
'@babel/traverse': 7.29.7
@@ -15499,6 +15668,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/generator@7.29.0':
+ dependencies:
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.0.2
+
'@babel/generator@7.29.7':
dependencies:
'@babel/parser': 7.29.7
@@ -15515,33 +15692,33 @@ snapshots:
dependencies:
'@babel/compat-data': 7.29.7
'@babel/helper-validator-option': 7.29.7
- browserslist: 4.28.4
+ browserslist: 4.28.2
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)':
+ '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-member-expression-to-functions': 7.29.7
'@babel/helper-optimise-call-expression': 7.29.7
- '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0)
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
'@babel/traverse': 7.29.7
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)':
+ '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
regexpu-core: 6.4.0
semver: 6.3.1
- '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)':
+ '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
debug: 4.4.3
@@ -15550,6 +15727,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-globals@7.28.0': {}
+
'@babel/helper-globals@7.29.7': {}
'@babel/helper-member-expression-to-functions@7.29.7':
@@ -15566,9 +15745,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
+ '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@babel/traverse': 7.29.7
@@ -15579,20 +15758,22 @@ snapshots:
dependencies:
'@babel/types': 7.29.7
+ '@babel/helper-plugin-utils@7.27.1': {}
+
'@babel/helper-plugin-utils@7.29.7': {}
- '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)':
+ '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-wrap-function': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)':
+ '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-member-expression-to-functions': 7.29.7
'@babel/helper-optimise-call-expression': 7.29.7
'@babel/traverse': 7.29.7
@@ -15620,7 +15801,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/helpers@7.29.7':
+ '@babel/helpers@7.29.2':
dependencies:
'@babel/template': 7.29.7
'@babel/types': 7.29.7
@@ -15629,589 +15810,607 @@ snapshots:
dependencies:
'@babel/types': 7.29.7
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
- '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)':
+ '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7)':
+ '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.0)':
+ dependencies:
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)':
+ '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
-
- '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)':
- dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.0)
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-globals': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0)
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/template': 7.29.7
- '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.0)
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
- '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-react-constant-elements@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-react-constant-elements@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0)
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
- babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7)
- babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7)
- babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7)
+ babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0)
+ babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.0)
+ babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.29.7
- '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
- '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)':
+ '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.0)
'@babel/helper-plugin-utils': 7.29.7
- '@babel/preset-env@7.29.7(@babel/core@7.29.7)':
+ '@babel/preset-env@7.29.7(@babel/core@7.29.0)':
dependencies:
'@babel/compat-data': 7.29.7
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-validator-option': 7.29.7
- '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)
- '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7)
- '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7)
- babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7)
- babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7)
- babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7)
+ '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)
+ '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.0)
+ babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.0)
+ babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.0)
+ babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.0)
core-js-compat: 3.49.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)':
+ '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/types': 7.29.7
esutils: 2.0.3
- '@babel/preset-react@7.29.7(@babel/core@7.29.7)':
+ '@babel/preset-react@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-validator-option': 7.29.7
- '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/preset-typescript@7.29.7(@babel/core@7.29.7)':
+ '@babel/preset-typescript@7.29.7(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-validator-option': 7.29.7
- '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
- '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7)
+ '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
'@babel/runtime@7.29.7': {}
+ '@babel/template@7.28.6':
+ dependencies:
+ '@babel/code-frame': 7.29.7
+ '@babel/parser': 7.29.7
+ '@babel/types': 7.29.7
+
'@babel/template@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/parser': 7.29.7
'@babel/types': 7.29.7
+ '@babel/traverse@7.29.0':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.0
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.29.7
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.7
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/traverse@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
@@ -16256,67 +16455,60 @@ snapshots:
'@bcoe/v8-coverage@1.0.2': {}
- '@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)':
+ '@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)':
dependencies:
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
+ '@better-auth/utils': 0.4.1
+ '@better-fetch/fetch': 1.1.21
'@opentelemetry/semantic-conventions': 1.41.1
'@standard-schema/spec': 1.1.0
- better-call: 1.3.7(zod@4.4.3)
+ better-call: 1.3.5(zod@4.4.3)
jose: 6.2.3
kysely: 0.29.2
- nanostores: 1.4.0
+ nanostores: 1.3.0
zod: 4.4.3
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@better-auth/drizzle-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))':
+ '@better-auth/drizzle-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))':
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/utils': 0.4.1
optionalDependencies:
- drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1)
+ drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1)
- '@better-auth/drizzle-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))':
+ '@better-auth/kysely-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(kysely@0.29.2)':
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
- optionalDependencies:
- drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1)
-
- '@better-auth/kysely-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(kysely@0.29.2)':
- dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/utils': 0.4.1
optionalDependencies:
kysely: 0.29.2
- '@better-auth/memory-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)':
+ '@better-auth/memory-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)':
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/utils': 0.4.1
- '@better-auth/mongo-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)':
+ '@better-auth/mongo-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)':
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/utils': 0.4.1
- '@better-auth/prisma-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)':
+ '@better-auth/prisma-adapter@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)':
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/utils': 0.4.1
- '@better-auth/telemetry@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)':
+ '@better-auth/telemetry@1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)':
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/utils': 0.4.1
+ '@better-fetch/fetch': 1.1.21
- '@better-auth/utils@0.4.2':
+ '@better-auth/utils@0.4.1':
dependencies:
- '@noble/hashes': 2.2.0
+ '@noble/hashes': 2.0.1
- '@better-fetch/fetch@1.3.1': {}
+ '@better-fetch/fetch@1.1.21': {}
'@braintree/sanitize-url@7.1.2': {}
@@ -16328,95 +16520,95 @@ snapshots:
'@codemirror/autocomplete@6.20.3':
dependencies:
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
- '@codemirror/commands@6.10.4':
+ '@codemirror/commands@6.10.3':
dependencies:
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
'@codemirror/lang-css@6.3.1':
dependencies:
'@codemirror/autocomplete': 6.20.3
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
'@lezer/common': 1.5.2
- '@lezer/css': 1.3.4
+ '@lezer/css': 1.3.3
'@codemirror/lang-html@6.4.11':
dependencies:
'@codemirror/autocomplete': 6.20.3
'@codemirror/lang-css': 6.3.1
'@codemirror/lang-javascript': 6.2.5
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
- '@lezer/css': 1.3.4
+ '@lezer/css': 1.3.3
'@lezer/html': 1.3.13
'@codemirror/lang-javascript@6.2.5':
dependencies:
'@codemirror/autocomplete': 6.20.3
- '@codemirror/language': 6.12.4
- '@codemirror/lint': 6.9.7
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/lint': 6.9.6
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
'@lezer/javascript': 1.5.4
'@codemirror/lang-json@6.0.2':
dependencies:
- '@codemirror/language': 6.12.4
+ '@codemirror/language': 6.12.3
'@lezer/json': 1.0.3
'@codemirror/lang-xml@6.1.0':
dependencies:
'@codemirror/autocomplete': 6.20.3
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
'@lezer/xml': 1.0.6
'@codemirror/lang-yaml@6.1.3':
dependencies:
'@codemirror/autocomplete': 6.20.3
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.10
'@lezer/yaml': 1.0.4
- '@codemirror/language@6.12.4':
+ '@codemirror/language@6.12.3':
dependencies:
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
'@lezer/lr': 1.4.10
style-mod: 4.1.3
- '@codemirror/lint@6.9.7':
+ '@codemirror/lint@6.9.6':
dependencies:
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
- crelt: 1.0.7
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
+ crelt: 1.0.6
- '@codemirror/state@6.7.0':
+ '@codemirror/state@6.6.0':
dependencies:
- '@marijn/find-cluster-break': 1.0.3
+ '@marijn/find-cluster-break': 1.0.2
- '@codemirror/view@6.43.4':
+ '@codemirror/view@6.43.0':
dependencies:
- '@codemirror/state': 6.7.0
- crelt: 1.0.7
+ '@codemirror/state': 6.6.0
+ crelt: 1.0.6
style-mod: 4.1.3
w3c-keyname: 2.2.8
@@ -16434,14 +16626,14 @@ snapshots:
'@csstools/color-helpers@5.1.0': {}
- '@csstools/color-helpers@6.1.0': {}
+ '@csstools/color-helpers@6.0.2': {}
'@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
dependencies:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
- '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
dependencies:
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
@@ -16453,10 +16645,10 @@ snapshots:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
- '@csstools/css-color-parser@4.1.9(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
+ '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)':
dependencies:
- '@csstools/color-helpers': 6.1.0
- '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
+ '@csstools/color-helpers': 6.0.2
+ '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)
'@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0)
'@csstools/css-tokenizer': 4.0.0
@@ -16468,7 +16660,7 @@ snapshots:
dependencies:
'@csstools/css-tokenizer': 4.0.0
- '@csstools/css-syntax-patches-for-csstree@1.1.6(css-tree@3.2.1)':
+ '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)':
optionalDependencies:
css-tree: 3.2.1
@@ -16492,9 +16684,9 @@ snapshots:
'@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.16)':
dependencies:
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.4)
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
'@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.16)':
dependencies:
@@ -16600,9 +16792,9 @@ snapshots:
'@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.16)':
dependencies:
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.4)
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
'@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.16)':
dependencies:
@@ -16704,7 +16896,7 @@ snapshots:
'@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.16)':
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
'@csstools/postcss-sign-functions@1.1.4(postcss@8.5.16)':
dependencies:
@@ -16748,13 +16940,13 @@ snapshots:
dependencies:
postcss: 8.5.16
- '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.4)':
+ '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)':
dependencies:
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
- '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.4)':
+ '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)':
dependencies:
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
'@csstools/utilities@2.0.0(postcss@8.5.16)':
dependencies:
@@ -16764,10 +16956,10 @@ snapshots:
dependencies:
'@ctrl/magnet-link': 4.3.0
'@ctrl/shared-torrent': 6.5.1(ofetch@1.5.1)
- cookie-es: 3.1.1
+ cookie-es: 3.0.1
node-fetch-native: 1.6.7
ofetch: 1.5.1
- type-fest: 5.7.0
+ type-fest: 5.6.0
ufo: 1.6.4
uint8array-extras: 1.5.0
@@ -16784,7 +16976,7 @@ snapshots:
cookie: 1.1.1
node-fetch-native: 1.6.7
ofetch: 1.5.1
- type-fest: 5.7.0
+ type-fest: 5.6.0
ufo: 1.6.4
uint8array-extras: 1.5.0
@@ -16851,9 +17043,9 @@ snapshots:
'@docsearch/css@4.6.3': {}
- '@docsearch/react@4.6.3(@algolia/client-search@5.55.1)(@types/react@19.2.17)(algoliasearch@5.55.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)':
+ '@docsearch/react@4.6.3(@algolia/client-search@5.53.0)(@types/react@19.2.17)(algoliasearch@5.53.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)':
dependencies:
- '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)
+ '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)
'@docsearch/core': 4.6.3(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docsearch/css': 4.6.3
optionalDependencies:
@@ -16865,21 +17057,21 @@ snapshots:
- '@algolia/client-search'
- algoliasearch
- '@docusaurus/babel@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/babel@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/generator': 7.29.7
- '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7)
- '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-env': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-react': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.0
+ '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0)
+ '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-env': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-react': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0)
'@babel/runtime': 7.29.7
- '@babel/traverse': 7.29.7
+ '@babel/traverse': 7.29.0
'@docusaurus/logger': 3.10.1
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
babel-plugin-dynamic-import-node: 2.3.3
- fs-extra: 11.3.6
+ fs-extra: 11.2.0
tslib: 2.8.1
transitivePeerDependencies:
- '@minify-html/node'
@@ -16899,34 +17091,34 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/bundler@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/bundler@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@babel/core': 7.29.7
- '@docusaurus/babel': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@babel/core': 7.29.0
+ '@docusaurus/babel': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docusaurus/cssnano-preset': 3.10.1
'@docusaurus/logger': 3.10.1
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
clean-css: 5.3.3
- copy-webpack-plugin: 11.0.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
- css-loader: 6.11.0(@rspack/core@1.7.12(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
- css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ copy-webpack-plugin: 11.0.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ css-loader: 6.11.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.28.0)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
cssnano: 6.1.2(postcss@8.5.16)
- file-loader: 6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
html-minifier-terser: 7.2.0
- mini-css-extract-plugin: 2.10.2(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
- null-loader: 4.0.1(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ mini-css-extract-plugin: 2.10.2(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ null-loader: 4.0.1(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
postcss: 8.5.16
- postcss-loader: 7.3.4(postcss@8.5.16)(typescript@7.0.1-rc)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ postcss-loader: 7.3.4(postcss@8.5.16)(typescript@6.0.3)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
postcss-preset-env: 10.6.1(postcss@8.5.16)
- terser-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ terser-webpack-plugin: 5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.0)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
tslib: 2.8.1
- url-loader: 4.1.1(file-loader@6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
- webpackbar: 7.0.0(@rspack/core@1.7.12(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpackbar: 7.0.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
optionalDependencies:
- '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16)
+ '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16)
transitivePeerDependencies:
- '@minify-html/node'
- '@parcel/css'
@@ -16944,15 +17136,15 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/babel': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/bundler': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@docusaurus/babel': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/bundler': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/logger': 3.10.1
- '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7)
boxen: 6.2.1
chalk: 4.1.2
@@ -16966,9 +17158,9 @@ snapshots:
eta: 2.2.0
eval: 0.1.8
execa: 5.1.1
- fs-extra: 11.3.6
+ fs-extra: 11.2.0
html-tags: 3.3.1
- html-webpack-plugin: 5.6.7(@rspack/core@1.7.12(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ html-webpack-plugin: 5.6.7(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
leven: 3.1.0
lodash: 4.18.1
open: 8.4.2
@@ -16978,21 +17170,21 @@ snapshots:
react-dom: 19.2.7(react@19.2.7)
react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)'
react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)'
- react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
react-router: 5.3.4(react@19.2.7)
react-router-config: 5.1.1(react-router@5.3.4(react@19.2.7))(react@19.2.7)
react-router-dom: 5.3.4(react@19.2.7)
- semver: 7.8.5
+ semver: 7.7.4
serve-handler: 6.1.7
tinypool: 1.1.1
tslib: 2.8.1
update-notifier: 6.0.2
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
webpack-bundle-analyzer: 4.10.2
- webpack-dev-server: 5.2.5(tslib@2.8.1)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ webpack-dev-server: 5.2.4(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
webpack-merge: 6.0.1
optionalDependencies:
- '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16)
+ '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16)
transitivePeerDependencies:
- '@minify-html/node'
- '@parcel/css'
@@ -17022,18 +17214,18 @@ snapshots:
postcss-sort-media-queries: 5.2.0(postcss@8.5.16)
tslib: 2.8.1
- '@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16)':
+ '@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16)':
dependencies:
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@rspack/core': 1.7.12(@swc/helpers@0.5.23)
- '@swc/core': 1.15.43(@swc/helpers@0.5.23)
- '@swc/html': 1.15.43
- browserslist: 4.28.4
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@rspack/core': 1.7.11(@swc/helpers@0.5.15)
+ '@swc/core': 1.15.3(@swc/helpers@0.5.15)
+ '@swc/html': 1.15.40
+ browserslist: 4.28.2
lightningcss: 1.32.0
- semver: 7.8.5
- swc-loader: 0.2.7(@swc/core@1.15.43(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ semver: 7.7.4
+ swc-loader: 0.2.7(@swc/core@1.15.3(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
tslib: 2.8.1
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(@swc/html@1.15.43)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@minify-html/node'
- '@swc/css'
@@ -17052,17 +17244,17 @@ snapshots:
chalk: 4.1.2
tslib: 2.8.1
- '@docusaurus/mdx-loader@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/mdx-loader@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
'@docusaurus/logger': 3.10.1
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@mdx-js/mdx': 3.1.1
'@slorber/remark-comment': 1.0.0
escape-html: 1.0.3
estree-util-value-to-estree: 3.5.0
- file-loader: 6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
- fs-extra: 11.3.6
+ file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ fs-extra: 11.2.0
image-size: 2.0.2
mdast-util-mdx: 3.0.0
mdast-util-to-string: 4.0.0
@@ -17077,9 +17269,9 @@ snapshots:
tslib: 2.8.1
unified: 11.0.5
unist-util-visit: 5.1.0
- url-loader: 4.1.1(file-loader@6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
vfile: 6.0.3
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@minify-html/node'
- '@swc/core'
@@ -17096,9 +17288,9 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/module-type-aliases@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/module-type-aliases@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@types/history': 4.7.11
'@types/react': 19.2.17
'@types/react-router-config': 5.0.11
@@ -17123,21 +17315,21 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/plugin-content-blog@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-content-blog@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/logger': 3.10.1
- '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
cheerio: 1.0.0-rc.12
combine-promises: 1.2.0
feed: 4.2.2
- fs-extra: 11.3.6
+ fs-extra: 11.2.0
lodash: 4.18.1
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
@@ -17146,7 +17338,7 @@ snapshots:
tslib: 2.8.1
unist-util-visit: 5.1.0
utility-types: 3.11.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@docusaurus/faster'
- '@mdx-js/react'
@@ -17171,28 +17363,28 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/logger': 3.10.1
- '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@types/react-router-config': 5.0.11
combine-promises: 1.2.0
- fs-extra: 11.3.6
- js-yaml: 4.3.0
+ fs-extra: 11.2.0
+ js-yaml: 4.1.1
lodash: 4.18.1
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
schema-dts: 1.1.5
tslib: 2.8.1
utility-types: 3.11.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@docusaurus/faster'
- '@mdx-js/react'
@@ -17217,18 +17409,18 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-content-pages@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-content-pages@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- fs-extra: 11.3.6
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ fs-extra: 11.2.0
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
tslib: 2.8.1
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@docusaurus/faster'
- '@mdx-js/react'
@@ -17253,12 +17445,12 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-css-cascade-layers@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-css-cascade-layers@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
tslib: 2.8.1
transitivePeerDependencies:
- '@docusaurus/faster'
@@ -17286,12 +17478,12 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-debug@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-debug@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- fs-extra: 11.3.6
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ fs-extra: 11.2.0
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
react-json-view-lite: 2.5.0(react@19.2.7)
@@ -17320,11 +17512,11 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-google-analytics@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-google-analytics@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
tslib: 2.8.1
@@ -17352,11 +17544,11 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-google-gtag@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-google-gtag@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@types/gtag.js': 0.0.20
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
@@ -17385,11 +17577,11 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-google-tag-manager@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-google-tag-manager@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
tslib: 2.8.1
@@ -17417,15 +17609,15 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-sitemap@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-sitemap@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/logger': 3.10.1
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- fs-extra: 11.3.6
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ fs-extra: 11.2.0
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
sitemap: 7.1.3
@@ -17454,18 +17646,18 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/plugin-svgr@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/plugin-svgr@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@svgr/core': 8.1.0(typescript@7.0.1-rc)
- '@svgr/webpack': 8.1.0(typescript@7.0.1-rc)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@svgr/core': 8.1.0(typescript@6.0.3)
+ '@svgr/webpack': 8.1.0(typescript@6.0.3)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
tslib: 2.8.1
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@docusaurus/faster'
- '@mdx-js/react'
@@ -17490,23 +17682,23 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.55.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@7.0.1-rc)':
+ '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-css-cascade-layers': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-debug': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-google-analytics': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-google-gtag': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-google-tag-manager': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-sitemap': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-svgr': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.55.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@7.0.1-rc)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-css-cascade-layers': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-debug': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-google-analytics': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-google-gtag': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-google-tag-manager': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-sitemap': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-svgr': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
transitivePeerDependencies:
@@ -17541,21 +17733,21 @@ snapshots:
'@types/react': 19.2.17
react: 19.2.7
- '@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/logger': 3.10.1
- '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docusaurus/theme-translations': 3.10.1
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.7)
clsx: 2.1.1
copy-text-to-clipboard: 3.2.2
@@ -17594,13 +17786,13 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/theme-common@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/theme-common@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
- '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@types/history': 4.7.11
'@types/react': 19.2.17
'@types/react-router-config': 5.0.11
@@ -17627,14 +17819,14 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/theme-mermaid@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@docusaurus/theme-mermaid@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- mermaid: 11.16.0
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ mermaid: 11.15.0
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
tslib: 2.8.1
@@ -17663,22 +17855,22 @@ snapshots:
- utf-8-validate
- webpack-cli
- '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.55.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@7.0.1-rc)':
+ '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.53.0)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)(typescript@6.0.3)':
dependencies:
- '@algolia/autocomplete-core': 1.19.9(@algolia/client-search@5.55.1)(algoliasearch@5.55.1)(search-insights@2.17.3)
- '@docsearch/react': 4.6.3(@algolia/client-search@5.55.1)(@types/react@19.2.17)(algoliasearch@5.55.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@algolia/autocomplete-core': 1.19.8(@algolia/client-search@5.53.0)(algoliasearch@5.53.0)(search-insights@2.17.3)
+ '@docsearch/react': 4.6.3(@algolia/client-search@5.53.0)(@types/react@19.2.17)(algoliasearch@5.53.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(search-insights@2.17.3)
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
'@docusaurus/logger': 3.10.1
- '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@docusaurus/theme-translations': 3.10.1
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- algoliasearch: 5.55.1
- algoliasearch-helper: 3.29.1(algoliasearch@5.55.1)
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ algoliasearch: 5.53.0
+ algoliasearch-helper: 3.29.1(algoliasearch@5.53.0)
clsx: 2.1.1
eta: 2.2.0
- fs-extra: 11.3.6
+ fs-extra: 11.2.0
lodash: 4.18.1
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
@@ -17713,24 +17905,24 @@ snapshots:
'@docusaurus/theme-translations@3.10.1':
dependencies:
- fs-extra: 11.3.6
+ fs-extra: 11.2.0
tslib: 2.8.1
'@docusaurus/tsconfig@3.10.1': {}
- '@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
'@mdx-js/mdx': 3.1.1
'@types/history': 4.7.11
'@types/mdast': 4.0.4
'@types/react': 19.2.17
commander: 5.1.0
- joi: 17.13.4
+ joi: 17.13.3
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)'
utility-types: 3.11.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
webpack-merge: 5.10.0
transitivePeerDependencies:
- '@minify-html/node'
@@ -17748,9 +17940,9 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/utils-common@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/utils-common@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
tslib: 2.8.1
transitivePeerDependencies:
- '@minify-html/node'
@@ -17770,14 +17962,14 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/utils-validation@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/utils-validation@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
'@docusaurus/logger': 3.10.1
- '@docusaurus/utils': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- fs-extra: 11.3.6
- joi: 17.13.4
- js-yaml: 4.3.0
+ '@docusaurus/utils': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ fs-extra: 11.2.0
+ joi: 17.13.3
+ js-yaml: 4.1.1
lodash: 4.18.1
tslib: 2.8.1
transitivePeerDependencies:
@@ -17798,29 +17990,29 @@ snapshots:
- uglify-js
- webpack-cli
- '@docusaurus/utils@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@docusaurus/utils@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
'@docusaurus/logger': 3.10.1
- '@docusaurus/types': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/types': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
escape-string-regexp: 4.0.0
execa: 5.1.1
- file-loader: 6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
- fs-extra: 11.3.6
+ file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ fs-extra: 11.2.0
github-slugger: 1.5.0
globby: 11.1.0
gray-matter: 4.0.3
jiti: 1.21.7
- js-yaml: 4.3.0
+ js-yaml: 4.1.1
lodash: 4.18.1
micromatch: 4.0.8
p-queue: 6.6.2
prompts: 2.4.2
resolve-pathname: 3.0.0
tslib: 2.8.1
- url-loader: 4.1.1(file-loader@6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ url-loader: 4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
utility-types: 3.11.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- '@minify-html/node'
- '@swc/core'
@@ -17869,185 +18061,341 @@ snapshots:
'@esbuild-kit/esm-loader@2.6.5':
dependencies:
'@esbuild-kit/core-utils': 3.3.2
- get-tsconfig: 4.14.0
+ get-tsconfig: 4.13.6
'@esbuild/aix-ppc64@0.25.12':
optional: true
+ '@esbuild/aix-ppc64@0.27.7':
+ optional: true
+
+ '@esbuild/aix-ppc64@0.28.0':
+ optional: true
+
'@esbuild/aix-ppc64@0.28.1':
optional: true
'@esbuild/android-arm64@0.25.12':
optional: true
+ '@esbuild/android-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/android-arm64@0.28.0':
+ optional: true
+
'@esbuild/android-arm64@0.28.1':
optional: true
'@esbuild/android-arm@0.25.12':
optional: true
+ '@esbuild/android-arm@0.27.7':
+ optional: true
+
+ '@esbuild/android-arm@0.28.0':
+ optional: true
+
'@esbuild/android-arm@0.28.1':
optional: true
'@esbuild/android-x64@0.25.12':
optional: true
+ '@esbuild/android-x64@0.27.7':
+ optional: true
+
+ '@esbuild/android-x64@0.28.0':
+ optional: true
+
'@esbuild/android-x64@0.28.1':
optional: true
'@esbuild/darwin-arm64@0.25.12':
optional: true
+ '@esbuild/darwin-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.28.0':
+ optional: true
+
'@esbuild/darwin-arm64@0.28.1':
optional: true
'@esbuild/darwin-x64@0.25.12':
optional: true
+ '@esbuild/darwin-x64@0.27.7':
+ optional: true
+
+ '@esbuild/darwin-x64@0.28.0':
+ optional: true
+
'@esbuild/darwin-x64@0.28.1':
optional: true
'@esbuild/freebsd-arm64@0.25.12':
optional: true
+ '@esbuild/freebsd-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.28.0':
+ optional: true
+
'@esbuild/freebsd-arm64@0.28.1':
optional: true
'@esbuild/freebsd-x64@0.25.12':
optional: true
+ '@esbuild/freebsd-x64@0.27.7':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.28.0':
+ optional: true
+
'@esbuild/freebsd-x64@0.28.1':
optional: true
'@esbuild/linux-arm64@0.25.12':
optional: true
+ '@esbuild/linux-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-arm64@0.28.0':
+ optional: true
+
'@esbuild/linux-arm64@0.28.1':
optional: true
'@esbuild/linux-arm@0.25.12':
optional: true
+ '@esbuild/linux-arm@0.27.7':
+ optional: true
+
+ '@esbuild/linux-arm@0.28.0':
+ optional: true
+
'@esbuild/linux-arm@0.28.1':
optional: true
'@esbuild/linux-ia32@0.25.12':
optional: true
+ '@esbuild/linux-ia32@0.27.7':
+ optional: true
+
+ '@esbuild/linux-ia32@0.28.0':
+ optional: true
+
'@esbuild/linux-ia32@0.28.1':
optional: true
'@esbuild/linux-loong64@0.25.12':
optional: true
+ '@esbuild/linux-loong64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-loong64@0.28.0':
+ optional: true
+
'@esbuild/linux-loong64@0.28.1':
optional: true
'@esbuild/linux-mips64el@0.25.12':
optional: true
+ '@esbuild/linux-mips64el@0.27.7':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.28.0':
+ optional: true
+
'@esbuild/linux-mips64el@0.28.1':
optional: true
'@esbuild/linux-ppc64@0.25.12':
optional: true
+ '@esbuild/linux-ppc64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.28.0':
+ optional: true
+
'@esbuild/linux-ppc64@0.28.1':
optional: true
'@esbuild/linux-riscv64@0.25.12':
optional: true
+ '@esbuild/linux-riscv64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.28.0':
+ optional: true
+
'@esbuild/linux-riscv64@0.28.1':
optional: true
'@esbuild/linux-s390x@0.25.12':
optional: true
+ '@esbuild/linux-s390x@0.27.7':
+ optional: true
+
+ '@esbuild/linux-s390x@0.28.0':
+ optional: true
+
'@esbuild/linux-s390x@0.28.1':
optional: true
'@esbuild/linux-x64@0.25.12':
optional: true
+ '@esbuild/linux-x64@0.27.7':
+ optional: true
+
+ '@esbuild/linux-x64@0.28.0':
+ optional: true
+
'@esbuild/linux-x64@0.28.1':
optional: true
'@esbuild/netbsd-arm64@0.25.12':
optional: true
+ '@esbuild/netbsd-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.28.0':
+ optional: true
+
'@esbuild/netbsd-arm64@0.28.1':
optional: true
'@esbuild/netbsd-x64@0.25.12':
optional: true
+ '@esbuild/netbsd-x64@0.27.7':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.28.0':
+ optional: true
+
'@esbuild/netbsd-x64@0.28.1':
optional: true
'@esbuild/openbsd-arm64@0.25.12':
optional: true
+ '@esbuild/openbsd-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.28.0':
+ optional: true
+
'@esbuild/openbsd-arm64@0.28.1':
optional: true
'@esbuild/openbsd-x64@0.25.12':
optional: true
+ '@esbuild/openbsd-x64@0.27.7':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.28.0':
+ optional: true
+
'@esbuild/openbsd-x64@0.28.1':
optional: true
'@esbuild/openharmony-arm64@0.25.12':
optional: true
+ '@esbuild/openharmony-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ optional: true
+
'@esbuild/openharmony-arm64@0.28.1':
optional: true
'@esbuild/sunos-x64@0.25.12':
optional: true
+ '@esbuild/sunos-x64@0.27.7':
+ optional: true
+
+ '@esbuild/sunos-x64@0.28.0':
+ optional: true
+
'@esbuild/sunos-x64@0.28.1':
optional: true
'@esbuild/win32-arm64@0.25.12':
optional: true
+ '@esbuild/win32-arm64@0.27.7':
+ optional: true
+
+ '@esbuild/win32-arm64@0.28.0':
+ optional: true
+
'@esbuild/win32-arm64@0.28.1':
optional: true
'@esbuild/win32-ia32@0.25.12':
optional: true
+ '@esbuild/win32-ia32@0.27.7':
+ optional: true
+
+ '@esbuild/win32-ia32@0.28.0':
+ optional: true
+
'@esbuild/win32-ia32@0.28.1':
optional: true
'@esbuild/win32-x64@0.25.12':
optional: true
+ '@esbuild/win32-x64@0.27.7':
+ optional: true
+
+ '@esbuild/win32-x64@0.28.0':
+ optional: true
+
'@esbuild/win32-x64@0.28.1':
optional: true
- '@exodus/bytes@1.15.1(@noble/hashes@2.2.0)':
+ '@exodus/bytes@1.15.0(@noble/hashes@2.0.1)':
optionalDependencies:
- '@noble/hashes': 2.2.0
+ '@noble/hashes': 2.0.1
'@extractus/feed-extractor@7.2.1':
dependencies:
'@pwshub/bellajs': 13.0.2
- fast-xml-parser: 5.9.3
+ fast-xml-parser: 5.8.0
html-entities: 2.6.0
'@fastify/ajv-compiler@4.0.5':
dependencies:
- ajv: 8.20.0
- ajv-formats: 3.0.1(ajv@8.20.0)
- fast-uri: 3.1.3
+ ajv: 8.18.0
+ ajv-formats: 3.0.1(ajv@8.18.0)
+ fast-uri: 3.1.0
'@fastify/error@4.2.0': {}
'@fastify/fast-json-stringify-compiler@5.0.3':
dependencies:
- fast-json-stringify: 6.4.0
+ fast-json-stringify: 6.3.0
'@fastify/forwarded@3.0.1': {}
@@ -18058,7 +18406,7 @@ snapshots:
'@fastify/proxy-addr@5.1.0':
dependencies:
'@fastify/forwarded': 3.0.1
- ipaddr.js: 2.4.0
+ ipaddr.js: 2.3.0
'@fec/remark-a11y-emoji@4.0.2':
dependencies:
@@ -18088,41 +18436,61 @@ snapshots:
'@floating-ui/utils': 0.2.11
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- tabbable: 6.5.0
+ tabbable: 6.4.0
'@floating-ui/utils@0.2.10': {}
'@floating-ui/utils@0.2.11': {}
- '@floating-ui/vue@1.1.11(vue@3.5.39(typescript@7.0.1-rc))':
+ '@floating-ui/vue@1.1.11(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@floating-ui/dom': 1.7.6
'@floating-ui/utils': 0.2.11
- vue-demi: 0.14.10(vue@3.5.39(typescript@7.0.1-rc))
+ vue-demi: 0.14.10(vue@3.5.35(typescript@6.0.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@floating-ui/vue@1.1.9(vue@3.5.39(typescript@7.0.1-rc))':
+ '@floating-ui/vue@1.1.9(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@floating-ui/dom': 1.7.6
'@floating-ui/utils': 0.2.11
- vue-demi: 0.14.10(vue@3.5.39(typescript@7.0.1-rc))
+ vue-demi: 0.14.10(vue@3.5.35(typescript@6.0.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@formatjs/fast-memoize@3.1.6': {}
-
- '@formatjs/icu-messageformat-parser@3.5.12':
+ '@formatjs/ecma402-abstract@3.1.0':
dependencies:
- '@formatjs/icu-skeleton-parser': 2.1.10
+ '@formatjs/fast-memoize': 3.1.0
+ '@formatjs/intl-localematcher': 0.8.0
+ decimal.js: 10.6.0
+ tslib: 2.8.1
- '@formatjs/icu-skeleton-parser@2.1.10': {}
-
- '@formatjs/intl-localematcher@0.8.10':
+ '@formatjs/fast-memoize@3.1.0':
dependencies:
- '@formatjs/fast-memoize': 3.1.6
+ tslib: 2.8.1
+
+ '@formatjs/icu-messageformat-parser@3.5.0':
+ dependencies:
+ '@formatjs/ecma402-abstract': 3.1.0
+ '@formatjs/icu-skeleton-parser': 2.1.0
+ tslib: 2.8.1
+
+ '@formatjs/icu-skeleton-parser@2.1.0':
+ dependencies:
+ '@formatjs/ecma402-abstract': 3.1.0
+ tslib: 2.8.1
+
+ '@formatjs/intl-localematcher@0.8.0':
+ dependencies:
+ '@formatjs/fast-memoize': 3.1.0
+ tslib: 2.8.1
+
+ '@formatjs/intl-localematcher@0.8.1':
+ dependencies:
+ '@formatjs/fast-memoize': 3.1.0
+ tslib: 2.8.1
'@gfazioli/mantine-onboarding-tour@4.0.6(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tabler/icons-react@3.44.0(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
@@ -18132,24 +18500,17 @@ snapshots:
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- '@grpc/grpc-js@1.14.4':
+ '@grpc/grpc-js@1.12.5':
dependencies:
- '@grpc/proto-loader': 0.8.1
+ '@grpc/proto-loader': 0.7.13
'@js-sdsl/ordered-map': 4.4.2
- '@grpc/proto-loader@0.7.15':
+ '@grpc/proto-loader@0.7.13':
dependencies:
lodash.camelcase: 4.3.0
long: 5.3.2
- protobufjs: 7.6.4
- yargs: 17.7.3
-
- '@grpc/proto-loader@0.8.1':
- dependencies:
- lodash.camelcase: 4.3.0
- long: 5.3.2
- protobufjs: 7.6.4
- yargs: 17.7.3
+ protobufjs: 7.4.0
+ yargs: 17.7.2
'@hapi/bourne@3.0.0': {}
@@ -18163,10 +18524,10 @@ snapshots:
dependencies:
tailwindcss: 4.3.2
- '@headlessui/vue@1.7.23(vue@3.5.39(typescript@7.0.1-rc))':
+ '@headlessui/vue@1.7.23(vue@3.5.35(typescript@6.0.3))':
dependencies:
- '@tanstack/vue-virtual': 3.13.31(vue@3.5.39(typescript@7.0.1-rc))
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@tanstack/vue-virtual': 3.13.28(vue@3.5.35(typescript@6.0.3))
+ vue: 3.5.35(typescript@6.0.3)
'@homarr/gridstack@1.12.0': {}
@@ -18183,9 +18544,9 @@ snapshots:
- undici
- utf-8-validate
- '@hono/node-server@1.19.14(hono@4.12.27)':
+ '@hono/node-server@1.19.14(hono@4.12.24)':
dependencies:
- hono: 4.12.27
+ hono: 4.12.24
'@iconify/types@2.0.0': {}
@@ -18195,7 +18556,7 @@ snapshots:
'@iconify/types': 2.0.0
import-meta-resolve: 4.2.0
- '@img/colour@1.1.0':
+ '@img/colour@1.0.0':
optional: true
'@img/sharp-darwin-arm64@0.34.5':
@@ -18298,194 +18659,168 @@ snapshots:
'@inquirer/ansi@1.0.2': {}
- '@inquirer/ansi@2.0.7':
+ '@inquirer/ansi@2.0.5':
optional: true
- '@inquirer/checkbox@4.3.2(@types/node@26.0.1)':
+ '@inquirer/checkbox@4.3.2(@types/node@24.13.3)':
dependencies:
'@inquirer/ansi': 1.0.2
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/confirm@5.1.21(@types/node@26.0.1)':
+ '@inquirer/confirm@5.1.21(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/confirm@6.1.1(@types/node@24.13.2)':
+ '@inquirer/confirm@6.0.13(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@24.13.2)
- '@inquirer/type': 4.0.7(@types/node@24.13.2)
+ '@inquirer/core': 11.1.10(@types/node@24.13.3)
+ '@inquirer/type': 4.0.5(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 24.13.2
+ '@types/node': 24.13.3
optional: true
- '@inquirer/confirm@6.1.1(@types/node@26.0.1)':
- dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.0.1)
- '@inquirer/type': 4.0.7(@types/node@26.0.1)
- optionalDependencies:
- '@types/node': 26.0.1
- optional: true
-
- '@inquirer/core@10.3.2(@types/node@26.0.1)':
+ '@inquirer/core@10.3.2(@types/node@24.13.3)':
dependencies:
'@inquirer/ansi': 1.0.2
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/core@11.2.1(@types/node@24.13.2)':
+ '@inquirer/core@11.1.10(@types/node@24.13.3)':
dependencies:
- '@inquirer/ansi': 2.0.7
- '@inquirer/figures': 2.0.7
- '@inquirer/type': 4.0.7(@types/node@24.13.2)
+ '@inquirer/ansi': 2.0.5
+ '@inquirer/figures': 2.0.5
+ '@inquirer/type': 4.0.5(@types/node@24.13.3)
cli-width: 4.1.0
fast-wrap-ansi: 0.2.2
mute-stream: 3.0.0
signal-exit: 4.1.0
optionalDependencies:
- '@types/node': 24.13.2
+ '@types/node': 24.13.3
optional: true
- '@inquirer/core@11.2.1(@types/node@26.0.1)':
+ '@inquirer/editor@4.2.23(@types/node@24.13.3)':
dependencies:
- '@inquirer/ansi': 2.0.7
- '@inquirer/figures': 2.0.7
- '@inquirer/type': 4.0.7(@types/node@26.0.1)
- cli-width: 4.1.0
- fast-wrap-ansi: 0.2.2
- mute-stream: 3.0.0
- signal-exit: 4.1.0
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/external-editor': 1.0.3(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 26.0.1
- optional: true
+ '@types/node': 24.13.3
- '@inquirer/editor@4.2.23(@types/node@26.0.1)':
+ '@inquirer/expand@4.0.23(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/external-editor': 1.0.3(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
- optionalDependencies:
- '@types/node': 26.0.1
-
- '@inquirer/expand@4.0.23(@types/node@26.0.1)':
- dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/external-editor@1.0.3(@types/node@26.0.1)':
+ '@inquirer/external-editor@1.0.3(@types/node@24.13.3)':
dependencies:
- chardet: 2.2.0
+ chardet: 2.1.1
iconv-lite: 0.7.2
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
'@inquirer/figures@1.0.15': {}
- '@inquirer/figures@2.0.7':
+ '@inquirer/figures@2.0.5':
optional: true
- '@inquirer/input@4.3.1(@types/node@26.0.1)':
+ '@inquirer/input@4.3.1(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/number@3.0.23(@types/node@26.0.1)':
+ '@inquirer/number@3.0.23(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/password@4.0.23(@types/node@26.0.1)':
+ '@inquirer/password@4.0.23(@types/node@24.13.3)':
dependencies:
'@inquirer/ansi': 1.0.2
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/prompts@7.10.1(@types/node@26.0.1)':
+ '@inquirer/prompts@7.10.1(@types/node@24.13.3)':
dependencies:
- '@inquirer/checkbox': 4.3.2(@types/node@26.0.1)
- '@inquirer/confirm': 5.1.21(@types/node@26.0.1)
- '@inquirer/editor': 4.2.23(@types/node@26.0.1)
- '@inquirer/expand': 4.0.23(@types/node@26.0.1)
- '@inquirer/input': 4.3.1(@types/node@26.0.1)
- '@inquirer/number': 3.0.23(@types/node@26.0.1)
- '@inquirer/password': 4.0.23(@types/node@26.0.1)
- '@inquirer/rawlist': 4.1.11(@types/node@26.0.1)
- '@inquirer/search': 3.2.2(@types/node@26.0.1)
- '@inquirer/select': 4.4.2(@types/node@26.0.1)
+ '@inquirer/checkbox': 4.3.2(@types/node@24.13.3)
+ '@inquirer/confirm': 5.1.21(@types/node@24.13.3)
+ '@inquirer/editor': 4.2.23(@types/node@24.13.3)
+ '@inquirer/expand': 4.0.23(@types/node@24.13.3)
+ '@inquirer/input': 4.3.1(@types/node@24.13.3)
+ '@inquirer/number': 3.0.23(@types/node@24.13.3)
+ '@inquirer/password': 4.0.23(@types/node@24.13.3)
+ '@inquirer/rawlist': 4.1.11(@types/node@24.13.3)
+ '@inquirer/search': 3.2.2(@types/node@24.13.3)
+ '@inquirer/select': 4.4.2(@types/node@24.13.3)
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/rawlist@4.1.11(@types/node@26.0.1)':
+ '@inquirer/rawlist@4.1.11(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/search@3.2.2(@types/node@26.0.1)':
+ '@inquirer/search@3.2.2(@types/node@24.13.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/select@4.4.2(@types/node@26.0.1)':
+ '@inquirer/select@4.4.2(@types/node@24.13.3)':
dependencies:
'@inquirer/ansi': 1.0.2
- '@inquirer/core': 10.3.2(@types/node@26.0.1)
+ '@inquirer/core': 10.3.2(@types/node@24.13.3)
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@26.0.1)
+ '@inquirer/type': 3.0.10(@types/node@24.13.3)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/type@3.0.10(@types/node@26.0.1)':
+ '@inquirer/type@3.0.10(@types/node@24.13.3)':
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@inquirer/type@4.0.7(@types/node@24.13.2)':
+ '@inquirer/type@4.0.5(@types/node@24.13.3)':
optionalDependencies:
- '@types/node': 24.13.2
- optional: true
-
- '@inquirer/type@4.0.7(@types/node@26.0.1)':
- optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
optional: true
'@internationalized/date@3.12.2':
dependencies:
- '@swc/helpers': 0.5.23
+ '@swc/helpers': 0.5.15
'@internationalized/number@3.6.7':
dependencies:
- '@swc/helpers': 0.5.23
+ '@swc/helpers': 0.5.15
'@ioredis/commands@1.10.0': {}
@@ -18493,14 +18828,16 @@ snapshots:
dependencies:
string-width: 5.1.2
string-width-cjs: string-width@4.2.3
- strip-ansi: 7.2.0
+ strip-ansi: 7.1.2
strip-ansi-cjs: strip-ansi@6.0.1
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
- '@jellyfin/sdk@0.13.0(axios@1.18.1)':
+ '@isaacs/cliui@9.0.0': {}
+
+ '@jellyfin/sdk@0.13.0(axios@1.15.0)':
dependencies:
- axios: 1.18.1
+ axios: 1.15.0
'@jest/schemas@29.6.3':
dependencies:
@@ -18511,7 +18848,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -18573,58 +18910,58 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@jsonjoy.com/fs-core@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-core@4.57.6(tslib@2.8.1)':
dependencies:
- '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-builtins': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
thingies: 2.6.0(tslib@2.8.1)
tslib: 2.8.1
- '@jsonjoy.com/fs-fsa@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-fsa@4.57.6(tslib@2.8.1)':
dependencies:
- '@jsonjoy.com/fs-core': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-core': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-builtins': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
thingies: 2.6.0(tslib@2.8.1)
tslib: 2.8.1
- '@jsonjoy.com/fs-node-builtins@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-node-builtins@4.57.6(tslib@2.8.1)':
dependencies:
tslib: 2.8.1
- '@jsonjoy.com/fs-node-to-fsa@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-node-to-fsa@4.57.6(tslib@2.8.1)':
dependencies:
- '@jsonjoy.com/fs-fsa': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-fsa': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-builtins': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
tslib: 2.8.1
- '@jsonjoy.com/fs-node-utils@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-node-utils@4.57.6(tslib@2.8.1)':
dependencies:
- '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-builtins': 4.57.6(tslib@2.8.1)
tslib: 2.8.1
- '@jsonjoy.com/fs-node@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-node@4.57.6(tslib@2.8.1)':
dependencies:
- '@jsonjoy.com/fs-core': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-print': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-snapshot': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-core': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-builtins': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-print': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-snapshot': 4.57.6(tslib@2.8.1)
glob-to-regex.js: 1.2.0(tslib@2.8.1)
thingies: 2.6.0(tslib@2.8.1)
tslib: 2.8.1
- '@jsonjoy.com/fs-print@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-print@4.57.6(tslib@2.8.1)':
dependencies:
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
tree-dump: 1.1.0(tslib@2.8.1)
tslib: 2.8.1
- '@jsonjoy.com/fs-snapshot@4.57.8(tslib@2.8.1)':
+ '@jsonjoy.com/fs-snapshot@4.57.6(tslib@2.8.1)':
dependencies:
'@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1)
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
'@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1)
'@jsonjoy.com/util': 17.67.0(tslib@2.8.1)
tslib: 2.8.1
@@ -18681,25 +19018,23 @@ snapshots:
'@types/js-yaml': 4.0.9
'@types/node': 24.13.2
'@types/node-fetch': 2.6.13
- '@types/stream-buffers': 3.0.8
+ '@types/stream-buffers': 3.0.7
form-data: 4.0.6
hpagent: 1.2.0
isomorphic-ws: 5.0.0(ws@8.21.0)
- js-yaml: 4.3.0
+ js-yaml: 4.1.1
jsonpath-plus: 10.4.0
node-fetch: 2.7.0
- openid-client: 6.8.4
+ openid-client: 6.3.3
rfc4648: 1.5.4
socks-proxy-agent: 8.0.5
stream-buffers: 3.0.3
- tar-fs: 3.1.3
+ tar-fs: 3.1.2
ws: 8.21.0
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- bufferutil
- encoding
- - react-native-b4a
- supports-color
- utf-8-validate
@@ -18713,7 +19048,7 @@ snapshots:
'@lezer/common@1.5.2': {}
- '@lezer/css@1.3.4':
+ '@lezer/css@1.3.3':
dependencies:
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
@@ -18760,12 +19095,12 @@ snapshots:
'@libsql/client-wasm@0.14.0':
dependencies:
'@libsql/core': 0.14.0
- js-base64: 3.8.0
+ js-base64: 3.7.8
optional: true
'@libsql/core@0.14.0':
dependencies:
- js-base64: 3.8.0
+ js-base64: 3.7.8
optional: true
'@mantine/charts@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(recharts@3.9.1(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1))':
@@ -18849,24 +19184,24 @@ snapshots:
dependencies:
react: 19.2.7
- '@mantine/tiptap@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tiptap/extension-link@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))(@tiptap/react@3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@mantine/tiptap@9.4.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(@tiptap/extension-link@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))(@tiptap/react@3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
'@mantine/core': 9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@mantine/hooks': 9.4.1(react@19.2.7)
- '@tiptap/extension-link': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/react': 3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@tiptap/extension-link': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/react': 3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- '@marijn/find-cluster-break@1.0.3': {}
+ '@marijn/find-cluster-break@1.0.2': {}
'@mdx-js/mdx@3.1.1':
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdx': 2.0.14
- acorn: 8.17.0
+ acorn: 8.16.0
collapse-white-space: 2.1.0
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
@@ -18875,7 +19210,7 @@ snapshots:
hast-util-to-jsx-runtime: 2.3.6
markdown-extensions: 2.0.0
recma-build-jsx: 1.0.0
- recma-jsx: 1.0.1(acorn@8.17.0)
+ recma-jsx: 1.0.1(acorn@8.16.0)
recma-stringify: 1.0.0
rehype-recma: 1.0.0
remark-mdx: 3.1.1
@@ -18896,15 +19231,15 @@ snapshots:
'@types/react': 19.2.17
react: 19.2.7
- '@mermaid-js/parser@1.2.0':
+ '@mermaid-js/parser@1.1.1':
dependencies:
'@chevrotain/types': 11.1.2
'@modelcontextprotocol/sdk@1.26.0(zod@4.4.3)':
dependencies:
- '@hono/node-server': 1.19.14(hono@4.12.27)
- ajv: 8.20.0
- ajv-formats: 3.0.1(ajv@8.20.0)
+ '@hono/node-server': 1.19.14(hono@4.12.24)
+ ajv: 8.18.0
+ ajv-formats: 3.0.1(ajv@8.18.0)
content-type: 1.0.5
cors: 2.8.6
cross-spawn: 7.0.6
@@ -18912,7 +19247,7 @@ snapshots:
eventsource-parser: 3.1.0
express: 5.2.1
express-rate-limit: 8.5.2(express@5.2.1)
- hono: 4.12.27
+ hono: 4.12.24
jose: 6.2.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
@@ -18924,9 +19259,9 @@ snapshots:
'@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)':
dependencies:
- '@hono/node-server': 1.19.14(hono@4.12.27)
- ajv: 8.20.0
- ajv-formats: 3.0.1(ajv@8.20.0)
+ '@hono/node-server': 1.19.14(hono@4.12.24)
+ ajv: 8.18.0
+ ajv-formats: 3.0.1(ajv@8.18.0)
content-type: 1.0.5
cors: 2.8.6
cross-spawn: 7.0.6
@@ -18934,7 +19269,7 @@ snapshots:
eventsource-parser: 3.1.0
express: 5.2.1
express-rate-limit: 8.5.2(express@5.2.1)
- hono: 4.12.27
+ hono: 4.12.24
jose: 6.2.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
@@ -18993,30 +19328,30 @@ snapshots:
'@tybys/wasm-util': 0.10.3
optional: true
- '@next/env@16.2.9': {}
+ '@next/env@16.2.10': {}
- '@next/swc-darwin-arm64@16.2.9':
+ '@next/swc-darwin-arm64@16.2.10':
optional: true
- '@next/swc-darwin-x64@16.2.9':
+ '@next/swc-darwin-x64@16.2.10':
optional: true
- '@next/swc-linux-arm64-gnu@16.2.9':
+ '@next/swc-linux-arm64-gnu@16.2.10':
optional: true
- '@next/swc-linux-arm64-musl@16.2.9':
+ '@next/swc-linux-arm64-musl@16.2.10':
optional: true
- '@next/swc-linux-x64-gnu@16.2.9':
+ '@next/swc-linux-x64-gnu@16.2.10':
optional: true
- '@next/swc-linux-x64-musl@16.2.9':
+ '@next/swc-linux-x64-musl@16.2.10':
optional: true
- '@next/swc-win32-arm64-msvc@16.2.9':
+ '@next/swc-win32-arm64-msvc@16.2.10':
optional: true
- '@next/swc-win32-x64-msvc@16.2.9':
+ '@next/swc-win32-x64-msvc@16.2.10':
optional: true
'@nivo/annotations@0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
@@ -19024,7 +19359,7 @@ snapshots:
'@nivo/colors': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@nivo/core': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@nivo/theming': 0.99.0(react@19.2.7)
- '@react-spring/web': 10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@react-spring/web': 10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
lodash: 4.18.1
react: 19.2.7
transitivePeerDependencies:
@@ -19036,7 +19371,7 @@ snapshots:
'@nivo/scales': 0.99.0
'@nivo/text': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@nivo/theming': 0.99.0(react@19.2.7)
- '@react-spring/web': 10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@react-spring/web': 10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@types/d3-format': 1.4.5
'@types/d3-time-format': 2.3.4
d3-format: 1.4.5
@@ -19064,8 +19399,8 @@ snapshots:
dependencies:
'@nivo/theming': 0.99.0(react@19.2.7)
'@nivo/tooltip': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@react-spring/web': 10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@types/d3-shape': 3.1.8
+ '@react-spring/web': 10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@types/d3-shape': 3.1.7
d3-color: 3.1.0
d3-format: 1.4.5
d3-interpolate: 3.0.1
@@ -19103,8 +19438,8 @@ snapshots:
'@nivo/theming': 0.99.0(react@19.2.7)
'@nivo/tooltip': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@nivo/voronoi': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@react-spring/web': 10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@types/d3-shape': 3.1.8
+ '@react-spring/web': 10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@types/d3-shape': 3.1.7
d3-shape: 3.2.0
react: 19.2.7
transitivePeerDependencies:
@@ -19126,7 +19461,7 @@ snapshots:
dependencies:
'@nivo/core': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@nivo/theming': 0.99.0(react@19.2.7)
- '@react-spring/web': 10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@react-spring/web': 10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
transitivePeerDependencies:
- react-dom
@@ -19140,7 +19475,7 @@ snapshots:
dependencies:
'@nivo/core': 0.99.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@nivo/theming': 0.99.0(react@19.2.7)
- '@react-spring/web': 10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
+ '@react-spring/web': 10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
transitivePeerDependencies:
- react-dom
@@ -19162,7 +19497,9 @@ snapshots:
'@noble/hashes@1.4.0': {}
- '@noble/hashes@2.2.0': {}
+ '@noble/hashes@2.0.1': {}
+
+ '@nodable/entities@2.1.0': {}
'@nodable/entities@2.2.0': {}
@@ -19188,69 +19525,69 @@ snapshots:
'@octokit/oauth-app': 8.0.3
'@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
'@octokit/types': 16.0.0
- '@octokit/webhooks': 14.2.0
+ '@octokit/webhooks': 14.0.0
'@octokit/auth-app@8.2.0':
dependencies:
'@octokit/auth-oauth-app': 9.0.3
'@octokit/auth-oauth-user': 6.0.2
- '@octokit/request': 10.0.11
- '@octokit/request-error': 7.1.0
+ '@octokit/request': 10.0.6
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
- toad-cache: 3.7.1
- universal-github-app-jwt: 2.2.2
- universal-user-agent: 7.0.3
+ toad-cache: 3.7.0
+ universal-github-app-jwt: 2.2.0
+ universal-user-agent: 7.0.2
'@octokit/auth-oauth-app@9.0.3':
dependencies:
'@octokit/auth-oauth-device': 8.0.3
'@octokit/auth-oauth-user': 6.0.2
- '@octokit/request': 10.0.11
+ '@octokit/request': 10.0.6
'@octokit/types': 16.0.0
- universal-user-agent: 7.0.3
+ universal-user-agent: 7.0.2
'@octokit/auth-oauth-device@8.0.3':
dependencies:
'@octokit/oauth-methods': 6.0.2
- '@octokit/request': 10.0.11
+ '@octokit/request': 10.0.6
'@octokit/types': 16.0.0
- universal-user-agent: 7.0.3
+ universal-user-agent: 7.0.2
'@octokit/auth-oauth-user@6.0.2':
dependencies:
'@octokit/auth-oauth-device': 8.0.3
'@octokit/oauth-methods': 6.0.2
- '@octokit/request': 10.0.11
+ '@octokit/request': 10.0.6
'@octokit/types': 16.0.0
- universal-user-agent: 7.0.3
+ universal-user-agent: 7.0.2
'@octokit/auth-token@6.0.0': {}
'@octokit/auth-unauthenticated@7.0.3':
dependencies:
- '@octokit/request-error': 7.1.0
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
'@octokit/core@7.0.6':
dependencies:
'@octokit/auth-token': 6.0.0
'@octokit/graphql': 9.0.3
- '@octokit/request': 10.0.11
- '@octokit/request-error': 7.1.0
+ '@octokit/request': 10.0.6
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
before-after-hook: 4.0.0
- universal-user-agent: 7.0.3
+ universal-user-agent: 7.0.2
- '@octokit/endpoint@11.0.3':
+ '@octokit/endpoint@11.0.2':
dependencies:
'@octokit/types': 16.0.0
- universal-user-agent: 7.0.3
+ universal-user-agent: 7.0.2
'@octokit/graphql@9.0.3':
dependencies:
- '@octokit/request': 10.0.11
+ '@octokit/request': 10.0.6
'@octokit/types': 16.0.0
- universal-user-agent: 7.0.3
+ universal-user-agent: 7.0.2
'@octokit/oauth-app@8.0.3':
dependencies:
@@ -19260,21 +19597,21 @@ snapshots:
'@octokit/core': 7.0.6
'@octokit/oauth-authorization-url': 8.0.0
'@octokit/oauth-methods': 6.0.2
- '@types/aws-lambda': 8.10.162
- universal-user-agent: 7.0.3
+ '@types/aws-lambda': 8.10.146
+ universal-user-agent: 7.0.2
'@octokit/oauth-authorization-url@8.0.0': {}
'@octokit/oauth-methods@6.0.2':
dependencies:
'@octokit/oauth-authorization-url': 8.0.0
- '@octokit/request': 10.0.11
- '@octokit/request-error': 7.1.0
+ '@octokit/request': 10.0.6
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
'@octokit/openapi-types@27.0.0': {}
- '@octokit/openapi-webhooks-types@12.1.0': {}
+ '@octokit/openapi-webhooks-types@11.0.0': {}
'@octokit/plugin-paginate-graphql@6.0.0(@octokit/core@7.0.6)':
dependencies:
@@ -19290,10 +19627,10 @@ snapshots:
'@octokit/core': 7.0.6
'@octokit/types': 16.0.0
- '@octokit/plugin-retry@8.1.0(@octokit/core@7.0.6)':
+ '@octokit/plugin-retry@8.0.3(@octokit/core@7.0.6)':
dependencies:
'@octokit/core': 7.0.6
- '@octokit/request-error': 7.1.0
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
bottleneck: 2.19.5
@@ -19303,18 +19640,17 @@ snapshots:
'@octokit/types': 16.0.0
bottleneck: 2.19.5
- '@octokit/request-error@7.1.0':
+ '@octokit/request-error@7.0.2':
dependencies:
'@octokit/types': 16.0.0
- '@octokit/request@10.0.11':
+ '@octokit/request@10.0.6':
dependencies:
- '@octokit/endpoint': 11.0.3
- '@octokit/request-error': 7.1.0
+ '@octokit/endpoint': 11.0.2
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
- content-type: 2.0.0
- json-with-bigint: 3.5.8
- universal-user-agent: 7.0.3
+ fast-content-type-parse: 3.0.0
+ universal-user-agent: 7.0.2
'@octokit/types@16.0.0':
dependencies:
@@ -19322,10 +19658,10 @@ snapshots:
'@octokit/webhooks-methods@6.0.0': {}
- '@octokit/webhooks@14.2.0':
+ '@octokit/webhooks@14.0.0':
dependencies:
- '@octokit/openapi-webhooks-types': 12.1.0
- '@octokit/request-error': 7.1.0
+ '@octokit/openapi-webhooks-types': 11.0.0
+ '@octokit/request-error': 7.0.2
'@octokit/webhooks-methods': 6.0.0
'@open-draft/deferred-promise@2.2.0':
@@ -19349,61 +19685,61 @@ snapshots:
'@oxc-project/types@0.138.0': {}
- '@oxfmt/binding-android-arm-eabi@0.57.0':
+ '@oxfmt/binding-android-arm-eabi@0.58.0':
optional: true
- '@oxfmt/binding-android-arm64@0.57.0':
+ '@oxfmt/binding-android-arm64@0.58.0':
optional: true
- '@oxfmt/binding-darwin-arm64@0.57.0':
+ '@oxfmt/binding-darwin-arm64@0.58.0':
optional: true
- '@oxfmt/binding-darwin-x64@0.57.0':
+ '@oxfmt/binding-darwin-x64@0.58.0':
optional: true
- '@oxfmt/binding-freebsd-x64@0.57.0':
+ '@oxfmt/binding-freebsd-x64@0.58.0':
optional: true
- '@oxfmt/binding-linux-arm-gnueabihf@0.57.0':
+ '@oxfmt/binding-linux-arm-gnueabihf@0.58.0':
optional: true
- '@oxfmt/binding-linux-arm-musleabihf@0.57.0':
+ '@oxfmt/binding-linux-arm-musleabihf@0.58.0':
optional: true
- '@oxfmt/binding-linux-arm64-gnu@0.57.0':
+ '@oxfmt/binding-linux-arm64-gnu@0.58.0':
optional: true
- '@oxfmt/binding-linux-arm64-musl@0.57.0':
+ '@oxfmt/binding-linux-arm64-musl@0.58.0':
optional: true
- '@oxfmt/binding-linux-ppc64-gnu@0.57.0':
+ '@oxfmt/binding-linux-ppc64-gnu@0.58.0':
optional: true
- '@oxfmt/binding-linux-riscv64-gnu@0.57.0':
+ '@oxfmt/binding-linux-riscv64-gnu@0.58.0':
optional: true
- '@oxfmt/binding-linux-riscv64-musl@0.57.0':
+ '@oxfmt/binding-linux-riscv64-musl@0.58.0':
optional: true
- '@oxfmt/binding-linux-s390x-gnu@0.57.0':
+ '@oxfmt/binding-linux-s390x-gnu@0.58.0':
optional: true
- '@oxfmt/binding-linux-x64-gnu@0.57.0':
+ '@oxfmt/binding-linux-x64-gnu@0.58.0':
optional: true
- '@oxfmt/binding-linux-x64-musl@0.57.0':
+ '@oxfmt/binding-linux-x64-musl@0.58.0':
optional: true
- '@oxfmt/binding-openharmony-arm64@0.57.0':
+ '@oxfmt/binding-openharmony-arm64@0.58.0':
optional: true
- '@oxfmt/binding-win32-arm64-msvc@0.57.0':
+ '@oxfmt/binding-win32-arm64-msvc@0.58.0':
optional: true
- '@oxfmt/binding-win32-ia32-msvc@0.57.0':
+ '@oxfmt/binding-win32-ia32-msvc@0.58.0':
optional: true
- '@oxfmt/binding-win32-x64-msvc@0.57.0':
+ '@oxfmt/binding-win32-x64-msvc@0.58.0':
optional: true
'@oxlint/binding-android-arm-eabi@1.72.0':
@@ -19467,142 +19803,138 @@ snapshots:
'@paralleldrive/cuid2@3.3.0':
dependencies:
- '@noble/hashes': 2.2.0
+ '@noble/hashes': 2.0.1
bignumber.js: 9.3.1
error-causes: 3.0.2
- '@parcel/watcher-android-arm64@2.5.6':
+ '@parcel/watcher-android-arm64@2.4.1':
optional: true
- '@parcel/watcher-darwin-arm64@2.5.6':
+ '@parcel/watcher-darwin-arm64@2.4.1':
optional: true
- '@parcel/watcher-darwin-x64@2.5.6':
+ '@parcel/watcher-darwin-x64@2.4.1':
optional: true
- '@parcel/watcher-freebsd-x64@2.5.6':
+ '@parcel/watcher-freebsd-x64@2.4.1':
optional: true
- '@parcel/watcher-linux-arm-glibc@2.5.6':
+ '@parcel/watcher-linux-arm-glibc@2.4.1':
optional: true
- '@parcel/watcher-linux-arm-musl@2.5.6':
+ '@parcel/watcher-linux-arm64-glibc@2.4.1':
optional: true
- '@parcel/watcher-linux-arm64-glibc@2.5.6':
+ '@parcel/watcher-linux-arm64-musl@2.4.1':
optional: true
- '@parcel/watcher-linux-arm64-musl@2.5.6':
+ '@parcel/watcher-linux-x64-glibc@2.4.1':
optional: true
- '@parcel/watcher-linux-x64-glibc@2.5.6':
+ '@parcel/watcher-linux-x64-musl@2.4.1':
optional: true
- '@parcel/watcher-linux-x64-musl@2.5.6':
+ '@parcel/watcher-win32-arm64@2.4.1':
optional: true
- '@parcel/watcher-win32-arm64@2.5.6':
+ '@parcel/watcher-win32-ia32@2.4.1':
optional: true
- '@parcel/watcher-win32-ia32@2.5.6':
+ '@parcel/watcher-win32-x64@2.4.1':
optional: true
- '@parcel/watcher-win32-x64@2.5.6':
- optional: true
-
- '@parcel/watcher@2.5.6':
+ '@parcel/watcher@2.4.1':
dependencies:
- detect-libc: 2.1.2
+ detect-libc: 1.0.3
is-glob: 4.0.3
+ micromatch: 4.0.8
node-addon-api: 7.1.1
- picomatch: 4.0.4
optionalDependencies:
- '@parcel/watcher-android-arm64': 2.5.6
- '@parcel/watcher-darwin-arm64': 2.5.6
- '@parcel/watcher-darwin-x64': 2.5.6
- '@parcel/watcher-freebsd-x64': 2.5.6
- '@parcel/watcher-linux-arm-glibc': 2.5.6
- '@parcel/watcher-linux-arm-musl': 2.5.6
- '@parcel/watcher-linux-arm64-glibc': 2.5.6
- '@parcel/watcher-linux-arm64-musl': 2.5.6
- '@parcel/watcher-linux-x64-glibc': 2.5.6
- '@parcel/watcher-linux-x64-musl': 2.5.6
- '@parcel/watcher-win32-arm64': 2.5.6
- '@parcel/watcher-win32-ia32': 2.5.6
- '@parcel/watcher-win32-x64': 2.5.6
+ '@parcel/watcher-android-arm64': 2.4.1
+ '@parcel/watcher-darwin-arm64': 2.4.1
+ '@parcel/watcher-darwin-x64': 2.4.1
+ '@parcel/watcher-freebsd-x64': 2.4.1
+ '@parcel/watcher-linux-arm-glibc': 2.4.1
+ '@parcel/watcher-linux-arm64-glibc': 2.4.1
+ '@parcel/watcher-linux-arm64-musl': 2.4.1
+ '@parcel/watcher-linux-x64-glibc': 2.4.1
+ '@parcel/watcher-linux-x64-musl': 2.4.1
+ '@parcel/watcher-win32-arm64': 2.4.1
+ '@parcel/watcher-win32-ia32': 2.4.1
+ '@parcel/watcher-win32-x64': 2.4.1
- '@peculiar/asn1-cms@2.8.0':
+ '@peculiar/asn1-cms@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
- '@peculiar/asn1-x509-attr': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
+ '@peculiar/asn1-x509-attr': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-csr@2.8.0':
+ '@peculiar/asn1-csr@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-ecc@2.8.0':
+ '@peculiar/asn1-ecc@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-pfx@2.8.0':
+ '@peculiar/asn1-pfx@2.7.0':
dependencies:
- '@peculiar/asn1-cms': 2.8.0
- '@peculiar/asn1-pkcs8': 2.8.0
- '@peculiar/asn1-rsa': 2.8.0
- '@peculiar/asn1-schema': 2.8.0
+ '@peculiar/asn1-cms': 2.7.0
+ '@peculiar/asn1-pkcs8': 2.7.0
+ '@peculiar/asn1-rsa': 2.7.0
+ '@peculiar/asn1-schema': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-pkcs8@2.8.0':
+ '@peculiar/asn1-pkcs8@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-pkcs9@2.8.0':
+ '@peculiar/asn1-pkcs9@2.7.0':
dependencies:
- '@peculiar/asn1-cms': 2.8.0
- '@peculiar/asn1-pfx': 2.8.0
- '@peculiar/asn1-pkcs8': 2.8.0
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
- '@peculiar/asn1-x509-attr': 2.8.0
+ '@peculiar/asn1-cms': 2.7.0
+ '@peculiar/asn1-pfx': 2.7.0
+ '@peculiar/asn1-pkcs8': 2.7.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
+ '@peculiar/asn1-x509-attr': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-rsa@2.8.0':
+ '@peculiar/asn1-rsa@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-schema@2.8.0':
+ '@peculiar/asn1-schema@2.7.0':
dependencies:
'@peculiar/utils': 2.0.3
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-x509-attr@2.8.0':
+ '@peculiar/asn1-x509-attr@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
asn1js: 3.0.10
tslib: 2.8.1
- '@peculiar/asn1-x509@2.8.0':
+ '@peculiar/asn1-x509@2.7.0':
dependencies:
- '@peculiar/asn1-schema': 2.8.0
+ '@peculiar/asn1-schema': 2.7.0
'@peculiar/utils': 2.0.3
asn1js: 3.0.10
tslib: 2.8.1
@@ -19613,18 +19945,21 @@ snapshots:
'@peculiar/x509@1.14.3':
dependencies:
- '@peculiar/asn1-cms': 2.8.0
- '@peculiar/asn1-csr': 2.8.0
- '@peculiar/asn1-ecc': 2.8.0
- '@peculiar/asn1-pkcs9': 2.8.0
- '@peculiar/asn1-rsa': 2.8.0
- '@peculiar/asn1-schema': 2.8.0
- '@peculiar/asn1-x509': 2.8.0
+ '@peculiar/asn1-cms': 2.7.0
+ '@peculiar/asn1-csr': 2.7.0
+ '@peculiar/asn1-ecc': 2.7.0
+ '@peculiar/asn1-pkcs9': 2.7.0
+ '@peculiar/asn1-rsa': 2.7.0
+ '@peculiar/asn1-schema': 2.7.0
+ '@peculiar/asn1-x509': 2.7.0
pvtsutils: 1.3.6
reflect-metadata: 0.2.2
tslib: 2.8.1
tsyringe: 4.10.0
+ '@petamoriken/float16@3.9.3':
+ optional: true
+
'@phosphor-icons/core@2.1.1': {}
'@pinojs/redact@0.4.0': {}
@@ -19642,71 +19977,80 @@ snapshots:
dependencies:
graceful-fs: 4.2.10
- '@pnpm/npm-conf@3.0.3':
+ '@pnpm/npm-conf@2.3.1':
dependencies:
'@pnpm/config.env-replace': 1.1.0
'@pnpm/network.ca-file': 1.0.2
config-chain: 1.1.13
- '@polka/url@1.0.0-next.29': {}
+ '@polka/url@1.0.0-next.25': {}
'@posthog/core@1.39.6':
dependencies:
'@posthog/types': 1.392.0
+ '@posthog/core@1.40.0':
+ dependencies:
+ '@posthog/types': 1.393.0
+
'@posthog/types@1.392.0': {}
+ '@posthog/types@1.393.0': {}
+
'@protobufjs/aspromise@1.1.2': {}
'@protobufjs/base64@1.1.2': {}
- '@protobufjs/codegen@2.0.5': {}
+ '@protobufjs/codegen@2.0.4': {}
- '@protobufjs/eventemitter@1.1.1': {}
+ '@protobufjs/eventemitter@1.1.0': {}
- '@protobufjs/fetch@1.1.1':
+ '@protobufjs/fetch@1.1.0':
dependencies:
'@protobufjs/aspromise': 1.1.2
+ '@protobufjs/inquire': 1.1.0
'@protobufjs/float@1.0.2': {}
+ '@protobufjs/inquire@1.1.0': {}
+
'@protobufjs/path@1.1.2': {}
'@protobufjs/pool@1.1.0': {}
- '@protobufjs/utf8@1.1.1': {}
+ '@protobufjs/utf8@1.1.0': {}
'@pwshub/bellajs@13.0.2': {}
- '@react-spring/animated@10.1.2(react@19.2.7)':
+ '@react-spring/animated@10.1.0(react@19.2.7)':
dependencies:
- '@react-spring/shared': 10.1.2(react@19.2.7)
- '@react-spring/types': 10.1.2
+ '@react-spring/shared': 10.1.0(react@19.2.7)
+ '@react-spring/types': 10.1.0
react: 19.2.7
- '@react-spring/core@10.1.2(react@19.2.7)':
+ '@react-spring/core@10.1.0(react@19.2.7)':
dependencies:
- '@react-spring/animated': 10.1.2(react@19.2.7)
- '@react-spring/shared': 10.1.2(react@19.2.7)
- '@react-spring/types': 10.1.2
+ '@react-spring/animated': 10.1.0(react@19.2.7)
+ '@react-spring/shared': 10.1.0(react@19.2.7)
+ '@react-spring/types': 10.1.0
react: 19.2.7
- '@react-spring/rafz@10.1.2': {}
+ '@react-spring/rafz@10.1.0': {}
- '@react-spring/shared@10.1.2(react@19.2.7)':
+ '@react-spring/shared@10.1.0(react@19.2.7)':
dependencies:
- '@react-spring/rafz': 10.1.2
- '@react-spring/types': 10.1.2
+ '@react-spring/rafz': 10.1.0
+ '@react-spring/types': 10.1.0
react: 19.2.7
- '@react-spring/types@10.1.2': {}
+ '@react-spring/types@10.1.0': {}
- '@react-spring/web@10.1.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@react-spring/web@10.1.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
- '@react-spring/animated': 10.1.2(react@19.2.7)
- '@react-spring/core': 10.1.2(react@19.2.7)
- '@react-spring/shared': 10.1.2(react@19.2.7)
- '@react-spring/types': 10.1.2
+ '@react-spring/animated': 10.1.0(react@19.2.7)
+ '@react-spring/core': 10.1.0(react@19.2.7)
+ '@react-spring/shared': 10.1.0(react@19.2.7)
+ '@react-spring/types': 10.1.0
csstype: 3.2.3
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
@@ -19737,23 +20081,23 @@ snapshots:
dependencies:
'@redis/client': 1.6.1
- '@reduxjs/toolkit@2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1))(react@19.2.7)':
+ '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1))(react@19.2.7)':
dependencies:
'@standard-schema/spec': 1.1.0
'@standard-schema/utils': 0.3.0
- immer: 11.1.9
+ immer: 11.1.4
redux: 5.0.1
redux-thunk: 3.1.0(redux@5.0.1)
- reselect: 5.2.0
+ reselect: 5.1.1
optionalDependencies:
react: 19.2.7
- react-redux: 9.3.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1)
+ react-redux: 9.2.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1)
- '@replit/codemirror-css-color-picker@6.3.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.0)(@codemirror/view@6.43.4)':
+ '@replit/codemirror-css-color-picker@6.3.0(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.43.0)':
dependencies:
- '@codemirror/language': 6.12.4
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@rolldown/binding-android-arm64@1.1.4':
optional: true
@@ -19809,84 +20153,84 @@ snapshots:
'@rollup/rollup-linux-x64-gnu@4.6.1':
optional: true
- '@rspack/binding-darwin-arm64@1.7.12':
+ '@rspack/binding-darwin-arm64@1.7.11':
optional: true
- '@rspack/binding-darwin-x64@1.7.12':
+ '@rspack/binding-darwin-x64@1.7.11':
optional: true
- '@rspack/binding-linux-arm64-gnu@1.7.12':
+ '@rspack/binding-linux-arm64-gnu@1.7.11':
optional: true
- '@rspack/binding-linux-arm64-musl@1.7.12':
+ '@rspack/binding-linux-arm64-musl@1.7.11':
optional: true
- '@rspack/binding-linux-x64-gnu@1.7.12':
+ '@rspack/binding-linux-x64-gnu@1.7.11':
optional: true
- '@rspack/binding-linux-x64-musl@1.7.12':
+ '@rspack/binding-linux-x64-musl@1.7.11':
optional: true
- '@rspack/binding-wasm32-wasi@1.7.12':
+ '@rspack/binding-wasm32-wasi@1.7.11':
dependencies:
'@napi-rs/wasm-runtime': 1.0.7
optional: true
- '@rspack/binding-win32-arm64-msvc@1.7.12':
+ '@rspack/binding-win32-arm64-msvc@1.7.11':
optional: true
- '@rspack/binding-win32-ia32-msvc@1.7.12':
+ '@rspack/binding-win32-ia32-msvc@1.7.11':
optional: true
- '@rspack/binding-win32-x64-msvc@1.7.12':
+ '@rspack/binding-win32-x64-msvc@1.7.11':
optional: true
- '@rspack/binding@1.7.12':
+ '@rspack/binding@1.7.11':
optionalDependencies:
- '@rspack/binding-darwin-arm64': 1.7.12
- '@rspack/binding-darwin-x64': 1.7.12
- '@rspack/binding-linux-arm64-gnu': 1.7.12
- '@rspack/binding-linux-arm64-musl': 1.7.12
- '@rspack/binding-linux-x64-gnu': 1.7.12
- '@rspack/binding-linux-x64-musl': 1.7.12
- '@rspack/binding-wasm32-wasi': 1.7.12
- '@rspack/binding-win32-arm64-msvc': 1.7.12
- '@rspack/binding-win32-ia32-msvc': 1.7.12
- '@rspack/binding-win32-x64-msvc': 1.7.12
+ '@rspack/binding-darwin-arm64': 1.7.11
+ '@rspack/binding-darwin-x64': 1.7.11
+ '@rspack/binding-linux-arm64-gnu': 1.7.11
+ '@rspack/binding-linux-arm64-musl': 1.7.11
+ '@rspack/binding-linux-x64-gnu': 1.7.11
+ '@rspack/binding-linux-x64-musl': 1.7.11
+ '@rspack/binding-wasm32-wasi': 1.7.11
+ '@rspack/binding-win32-arm64-msvc': 1.7.11
+ '@rspack/binding-win32-ia32-msvc': 1.7.11
+ '@rspack/binding-win32-x64-msvc': 1.7.11
- '@rspack/core@1.7.12(@swc/helpers@0.5.23)':
+ '@rspack/core@1.7.11(@swc/helpers@0.5.15)':
dependencies:
'@module-federation/runtime-tools': 0.22.0
- '@rspack/binding': 1.7.12
+ '@rspack/binding': 1.7.11
'@rspack/lite-tapable': 1.1.0
optionalDependencies:
- '@swc/helpers': 0.5.23
+ '@swc/helpers': 0.5.15
'@rspack/lite-tapable@1.1.0': {}
- '@rvf/set-get@7.0.2': {}
+ '@rvf/set-get@7.0.1': {}
- '@scalar/agent-chat@0.12.16(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)':
+ '@scalar/agent-chat@0.12.18(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)':
dependencies:
- '@ai-sdk/vue': 3.0.33(vue@3.5.39(typescript@7.0.1-rc))(zod@4.4.3)
- '@scalar/api-client': 3.13.1(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)
- '@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@7.0.1-rc)
+ '@ai-sdk/vue': 3.0.33(vue@3.5.35(typescript@6.0.3))(zod@4.4.3)
+ '@scalar/api-client': 3.13.3(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)
+ '@scalar/components': 0.27.6(tailwindcss@4.3.2)(typescript@6.0.3)
'@scalar/helpers': 0.9.0
- '@scalar/icons': 0.7.3(typescript@7.0.1-rc)
+ '@scalar/icons': 0.7.3(typescript@6.0.3)
'@scalar/json-magic': 0.12.17
'@scalar/openapi-types': 0.9.1
- '@scalar/schemas': 0.7.1
+ '@scalar/schemas': 0.7.2
'@scalar/themes': 0.16.2
- '@scalar/types': 0.16.1
- '@scalar/use-toasts': 0.10.2(typescript@7.0.1-rc)
+ '@scalar/types': 0.16.2
+ '@scalar/use-toasts': 0.10.2(typescript@6.0.3)
'@scalar/validation': 0.6.0
- '@scalar/workspace-store': 0.55.2(typescript@7.0.1-rc)
- '@vueuse/core': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
+ '@scalar/workspace-store': 0.55.3(typescript@6.0.3)
+ '@vueuse/core': 13.9.0(vue@3.5.35(typescript@6.0.3))
ai: 6.0.33(zod@4.4.3)
- js-base64: 3.8.0
+ js-base64: 3.7.8
neverpanic: 0.0.8
truncate-json: 3.0.1
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
- async-validator
@@ -19904,36 +20248,36 @@ snapshots:
- universal-cookie
- zod
- '@scalar/api-client@3.13.1(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)':
+ '@scalar/api-client@3.13.3(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)':
dependencies:
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.2)
- '@headlessui/vue': 1.7.23(vue@3.5.39(typescript@7.0.1-rc))
- '@scalar/blocks': 0.1.2(tailwindcss@4.3.2)(typescript@7.0.1-rc)
- '@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@7.0.1-rc)
+ '@headlessui/vue': 1.7.23(vue@3.5.35(typescript@6.0.3))
+ '@scalar/blocks': 0.1.4(tailwindcss@4.3.2)(typescript@6.0.3)
+ '@scalar/components': 0.27.6(tailwindcss@4.3.2)(typescript@6.0.3)
'@scalar/helpers': 0.9.0
- '@scalar/icons': 0.7.3(typescript@7.0.1-rc)
- '@scalar/oas-utils': 0.19.3(typescript@7.0.1-rc)
+ '@scalar/icons': 0.7.3(typescript@6.0.3)
+ '@scalar/oas-utils': 0.19.4(typescript@6.0.3)
'@scalar/openapi-types': 0.9.1
- '@scalar/sidebar': 0.9.27(tailwindcss@4.3.2)(typescript@7.0.1-rc)
- '@scalar/snippetz': 0.9.20
+ '@scalar/sidebar': 0.9.29(tailwindcss@4.3.2)(typescript@6.0.3)
+ '@scalar/snippetz': 0.9.21
'@scalar/themes': 0.16.2
'@scalar/typebox': 0.1.3
- '@scalar/types': 0.16.1
- '@scalar/use-codemirror': 0.14.12(typescript@7.0.1-rc)
- '@scalar/use-hooks': 0.4.7(typescript@7.0.1-rc)
- '@scalar/use-toasts': 0.10.2(typescript@7.0.1-rc)
- '@scalar/workspace-store': 0.55.2(typescript@7.0.1-rc)
- '@vueuse/core': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
- '@vueuse/integrations': 13.9.0(axios@1.18.1)(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.39(typescript@7.0.1-rc))
+ '@scalar/types': 0.16.2
+ '@scalar/use-codemirror': 0.14.12(typescript@6.0.3)
+ '@scalar/use-hooks': 0.4.7(typescript@6.0.3)
+ '@scalar/use-toasts': 0.10.2(typescript@6.0.3)
+ '@scalar/workspace-store': 0.55.3(typescript@6.0.3)
+ '@vueuse/core': 13.9.0(vue@3.5.35(typescript@6.0.3))
+ '@vueuse/integrations': 13.9.0(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.35(typescript@6.0.3))
focus-trap: 7.8.0
fuse.js: 7.4.2
- js-base64: 3.8.0
+ js-base64: 3.7.8
jsonc-parser: 3.3.1
nanoid: 5.1.16
pretty-ms: 9.3.0
- radix-vue: 1.9.17(vue@3.5.39(typescript@7.0.1-rc))
+ radix-vue: 1.9.17(vue@3.5.35(typescript@6.0.3))
set-cookie-parser: 3.1.0
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
yaml: 2.9.0
zod: 4.4.3
transitivePeerDependencies:
@@ -19952,10 +20296,10 @@ snapshots:
- typescript
- universal-cookie
- '@scalar/api-reference-react@0.9.52(axios@1.18.1)(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)':
+ '@scalar/api-reference-react@0.9.54(nprogress@0.2.0)(react@19.2.7)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)':
dependencies:
- '@scalar/api-reference': 1.62.3(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)
- '@scalar/types': 0.16.1
+ '@scalar/api-reference': 1.62.5(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
+ '@scalar/types': 0.16.2
react: 19.2.7
transitivePeerDependencies:
- '@vue/composition-api'
@@ -19974,32 +20318,32 @@ snapshots:
- universal-cookie
- zod
- '@scalar/api-reference@1.62.3(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)':
+ '@scalar/api-reference@1.62.5(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)':
dependencies:
- '@headlessui/vue': 1.7.23(vue@3.5.39(typescript@7.0.1-rc))
- '@scalar/agent-chat': 0.12.16(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)(zod@4.4.3)
- '@scalar/api-client': 3.13.1(axios@1.18.1)(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@7.0.1-rc)
- '@scalar/blocks': 0.1.2(tailwindcss@4.3.2)(typescript@7.0.1-rc)
- '@scalar/code-highlight': 0.4.0
- '@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@7.0.1-rc)
+ '@headlessui/vue': 1.7.23(vue@3.5.35(typescript@6.0.3))
+ '@scalar/agent-chat': 0.12.18(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)(zod@4.4.3)
+ '@scalar/api-client': 3.13.3(nprogress@0.2.0)(tailwindcss@4.3.2)(typescript@6.0.3)
+ '@scalar/blocks': 0.1.4(tailwindcss@4.3.2)(typescript@6.0.3)
+ '@scalar/code-highlight': 0.4.1
+ '@scalar/components': 0.27.6(tailwindcss@4.3.2)(typescript@6.0.3)
'@scalar/helpers': 0.9.0
- '@scalar/icons': 0.7.3(typescript@7.0.1-rc)
- '@scalar/oas-utils': 0.19.3(typescript@7.0.1-rc)
- '@scalar/schemas': 0.7.1
- '@scalar/sidebar': 0.9.27(tailwindcss@4.3.2)(typescript@7.0.1-rc)
- '@scalar/snippetz': 0.9.20
+ '@scalar/icons': 0.7.3(typescript@6.0.3)
+ '@scalar/oas-utils': 0.19.4(typescript@6.0.3)
+ '@scalar/schemas': 0.7.2
+ '@scalar/sidebar': 0.9.29(tailwindcss@4.3.2)(typescript@6.0.3)
+ '@scalar/snippetz': 0.9.21
'@scalar/themes': 0.16.2
- '@scalar/types': 0.16.1
- '@scalar/use-hooks': 0.4.7(typescript@7.0.1-rc)
- '@scalar/use-toasts': 0.10.2(typescript@7.0.1-rc)
+ '@scalar/types': 0.16.2
+ '@scalar/use-hooks': 0.4.7(typescript@6.0.3)
+ '@scalar/use-toasts': 0.10.2(typescript@6.0.3)
'@scalar/validation': 0.6.0
- '@scalar/workspace-store': 0.55.2(typescript@7.0.1-rc)
- '@unhead/vue': 2.1.15(vue@3.5.39(typescript@7.0.1-rc))
- '@vueuse/core': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
+ '@scalar/workspace-store': 0.55.3(typescript@6.0.3)
+ '@unhead/vue': 2.1.15(vue@3.5.35(typescript@6.0.3))
+ '@vueuse/core': 13.9.0(vue@3.5.35(typescript@6.0.3))
fuse.js: 7.4.2
microdiff: 1.5.0
nanoid: 5.1.16
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
yaml: 2.9.0
transitivePeerDependencies:
- '@vue/composition-api'
@@ -20022,25 +20366,25 @@ snapshots:
dependencies:
'@scalar/helpers': 0.9.0
- '@scalar/blocks@0.1.2(tailwindcss@4.3.2)(typescript@7.0.1-rc)':
+ '@scalar/blocks@0.1.4(tailwindcss@4.3.2)(typescript@6.0.3)':
dependencies:
- '@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@7.0.1-rc)
+ '@scalar/components': 0.27.6(tailwindcss@4.3.2)(typescript@6.0.3)
'@scalar/helpers': 0.9.0
- '@scalar/icons': 0.7.3(typescript@7.0.1-rc)
- '@scalar/snippetz': 0.9.20
+ '@scalar/icons': 0.7.3(typescript@6.0.3)
+ '@scalar/snippetz': 0.9.21
'@scalar/themes': 0.16.2
- '@scalar/types': 0.16.1
- '@scalar/workspace-store': 0.55.2(typescript@7.0.1-rc)
+ '@scalar/types': 0.16.2
+ '@scalar/workspace-store': 0.55.3(typescript@6.0.3)
'@types/har-format': 1.2.16
- js-base64: 3.8.0
- vue: 3.5.39(typescript@7.0.1-rc)
+ js-base64: 3.7.8
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- tailwindcss
- typescript
- '@scalar/code-highlight@0.4.0':
+ '@scalar/code-highlight@0.4.1':
dependencies:
hast-util-to-text: 4.0.2
highlight.js: 11.11.1
@@ -20060,22 +20404,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@scalar/components@0.27.4(tailwindcss@4.3.2)(typescript@7.0.1-rc)':
+ '@scalar/components@0.27.6(tailwindcss@4.3.2)(typescript@6.0.3)':
dependencies:
'@floating-ui/utils': 0.2.10
- '@floating-ui/vue': 1.1.9(vue@3.5.39(typescript@7.0.1-rc))
+ '@floating-ui/vue': 1.1.9(vue@3.5.35(typescript@6.0.3))
'@headlessui/tailwindcss': 0.2.2(tailwindcss@4.3.2)
- '@headlessui/vue': 1.7.23(vue@3.5.39(typescript@7.0.1-rc))
- '@scalar/code-highlight': 0.4.0
+ '@headlessui/vue': 1.7.23(vue@3.5.35(typescript@6.0.3))
+ '@scalar/code-highlight': 0.4.1
'@scalar/helpers': 0.9.0
- '@scalar/icons': 0.7.3(typescript@7.0.1-rc)
+ '@scalar/icons': 0.7.3(typescript@6.0.3)
'@scalar/themes': 0.16.2
- '@scalar/use-hooks': 0.4.7(typescript@7.0.1-rc)
- '@vueuse/core': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
- cva: 1.0.0-beta.4(typescript@7.0.1-rc)
- radix-vue: 1.9.17(vue@3.5.39(typescript@7.0.1-rc))
- vue: 3.5.39(typescript@7.0.1-rc)
- vue-component-type-helpers: 3.3.6
+ '@scalar/use-hooks': 0.4.7(typescript@6.0.3)
+ '@vueuse/core': 13.9.0(vue@3.5.35(typescript@6.0.3))
+ cva: 1.0.0-beta.4(typescript@6.0.3)
+ radix-vue: 1.9.17(vue@3.5.35(typescript@6.0.3))
+ vue: 3.5.35(typescript@6.0.3)
+ vue-component-type-helpers: 3.3.4
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
@@ -20084,12 +20428,12 @@ snapshots:
'@scalar/helpers@0.9.0': {}
- '@scalar/icons@0.7.3(typescript@7.0.1-rc)':
+ '@scalar/icons@0.7.3(typescript@6.0.3)':
dependencies:
'@phosphor-icons/core': 2.1.1
'@types/node': 24.13.2
chalk: 5.6.2
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- typescript
@@ -20099,14 +20443,14 @@ snapshots:
pathe: 2.0.3
yaml: 2.9.0
- '@scalar/oas-utils@0.19.3(typescript@7.0.1-rc)':
+ '@scalar/oas-utils@0.19.4(typescript@6.0.3)':
dependencies:
'@scalar/helpers': 0.9.0
'@scalar/themes': 0.16.2
- '@scalar/types': 0.16.1
- '@scalar/workspace-store': 0.55.2(typescript@7.0.1-rc)
+ '@scalar/types': 0.16.2
+ '@scalar/workspace-store': 0.55.3(typescript@6.0.3)
flatted: 3.4.2
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
yaml: 2.9.0
transitivePeerDependencies:
- typescript
@@ -20117,31 +20461,31 @@ snapshots:
dependencies:
'@scalar/openapi-types': 0.9.1
- '@scalar/schemas@0.7.1':
+ '@scalar/schemas@0.7.2':
dependencies:
'@scalar/helpers': 0.9.0
'@scalar/validation': 0.6.0
- '@scalar/sidebar@0.9.27(tailwindcss@4.3.2)(typescript@7.0.1-rc)':
+ '@scalar/sidebar@0.9.29(tailwindcss@4.3.2)(typescript@6.0.3)':
dependencies:
- '@scalar/components': 0.27.4(tailwindcss@4.3.2)(typescript@7.0.1-rc)
+ '@scalar/components': 0.27.6(tailwindcss@4.3.2)(typescript@6.0.3)
'@scalar/helpers': 0.9.0
- '@scalar/icons': 0.7.3(typescript@7.0.1-rc)
+ '@scalar/icons': 0.7.3(typescript@6.0.3)
'@scalar/themes': 0.16.2
- '@scalar/use-hooks': 0.4.7(typescript@7.0.1-rc)
- '@scalar/workspace-store': 0.55.2(typescript@7.0.1-rc)
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@scalar/use-hooks': 0.4.7(typescript@6.0.3)
+ '@scalar/workspace-store': 0.55.3(typescript@6.0.3)
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- tailwindcss
- typescript
- '@scalar/snippetz@0.9.20':
+ '@scalar/snippetz@0.9.21':
dependencies:
'@scalar/helpers': 0.9.0
- '@scalar/types': 0.16.1
- js-base64: 3.8.0
+ '@scalar/types': 0.16.2
+ js-base64: 3.7.8
stringify-object: 6.0.0
'@scalar/themes@0.16.2':
@@ -20150,67 +20494,67 @@ snapshots:
'@scalar/typebox@0.1.3': {}
- '@scalar/types@0.16.1':
+ '@scalar/types@0.16.2':
dependencies:
'@scalar/helpers': 0.9.0
nanoid: 5.1.16
type-fest: 5.7.0
zod: 4.4.3
- '@scalar/use-codemirror@0.14.12(typescript@7.0.1-rc)':
+ '@scalar/use-codemirror@0.14.12(typescript@6.0.3)':
dependencies:
'@codemirror/autocomplete': 6.20.3
- '@codemirror/commands': 6.10.4
+ '@codemirror/commands': 6.10.3
'@codemirror/lang-css': 6.3.1
'@codemirror/lang-html': 6.4.11
'@codemirror/lang-json': 6.0.2
'@codemirror/lang-xml': 6.1.0
'@codemirror/lang-yaml': 6.1.3
- '@codemirror/language': 6.12.4
- '@codemirror/lint': 6.9.7
- '@codemirror/state': 6.7.0
- '@codemirror/view': 6.43.4
+ '@codemirror/language': 6.12.3
+ '@codemirror/lint': 6.9.6
+ '@codemirror/state': 6.6.0
+ '@codemirror/view': 6.43.0
'@lezer/common': 1.5.2
'@lezer/highlight': 1.2.3
- '@replit/codemirror-css-color-picker': 6.3.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.0)(@codemirror/view@6.43.4)
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@replit/codemirror-css-color-picker': 6.3.0(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.43.0)
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- typescript
- '@scalar/use-hooks@0.4.7(typescript@7.0.1-rc)':
+ '@scalar/use-hooks@0.4.7(typescript@6.0.3)':
dependencies:
- '@scalar/use-toasts': 0.10.2(typescript@7.0.1-rc)
+ '@scalar/use-toasts': 0.10.2(typescript@6.0.3)
'@scalar/validation': 0.6.0
- '@vueuse/core': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
- cva: 1.0.0-beta.4(typescript@7.0.1-rc)
+ '@vueuse/core': 13.9.0(vue@3.5.35(typescript@6.0.3))
+ cva: 1.0.0-beta.4(typescript@6.0.3)
tailwind-merge: 3.5.0
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- typescript
- '@scalar/use-toasts@0.10.2(typescript@7.0.1-rc)':
+ '@scalar/use-toasts@0.10.2(typescript@6.0.3)':
dependencies:
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
vue-sonner: 1.3.2
transitivePeerDependencies:
- typescript
'@scalar/validation@0.6.0': {}
- '@scalar/workspace-store@0.55.2(typescript@7.0.1-rc)':
+ '@scalar/workspace-store@0.55.3(typescript@6.0.3)':
dependencies:
'@scalar/asyncapi-upgrader': 0.1.2
'@scalar/helpers': 0.9.0
'@scalar/json-magic': 0.12.17
'@scalar/openapi-upgrader': 0.2.9
- '@scalar/schemas': 0.7.1
- '@scalar/snippetz': 0.9.20
+ '@scalar/schemas': 0.7.2
+ '@scalar/snippetz': 0.9.21
'@scalar/typebox': 0.1.3
- '@scalar/types': 0.16.1
+ '@scalar/types': 0.16.2
'@scalar/validation': 0.6.0
- js-base64: 3.8.0
+ js-base64: 3.7.8
type-fest: 5.7.0
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
yaml: 2.9.0
transitivePeerDependencies:
- typescript
@@ -20219,25 +20563,25 @@ snapshots:
'@sec-ant/readable-stream@0.4.1': {}
- '@semantic-release/changelog@6.0.3(semantic-release@25.0.5(typescript@7.0.1-rc))':
+ '@semantic-release/changelog@6.0.3(semantic-release@25.0.5(typescript@6.0.3))':
dependencies:
'@semantic-release/error': 3.0.0
aggregate-error: 3.1.0
- fs-extra: 11.3.6
+ fs-extra: 11.2.0
lodash: 4.18.1
- semantic-release: 25.0.5(typescript@7.0.1-rc)
+ semantic-release: 25.0.5(typescript@6.0.3)
- '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(typescript@7.0.1-rc))':
+ '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.5(typescript@6.0.3))':
dependencies:
- conventional-changelog-angular: 8.3.1
- conventional-changelog-writer: 8.4.0
+ conventional-changelog-angular: 8.0.0
+ conventional-changelog-writer: 8.0.0
conventional-commits-filter: 5.0.0
- conventional-commits-parser: 6.4.0
+ conventional-commits-parser: 6.0.0
debug: 4.4.3
import-from-esm: 2.0.0
- lodash-es: 4.18.1
+ lodash-es: 4.17.21
micromatch: 4.0.8
- semantic-release: 25.0.5(typescript@7.0.1-rc)
+ semantic-release: 25.0.5(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
@@ -20245,7 +20589,7 @@ snapshots:
'@semantic-release/error@4.0.0': {}
- '@semantic-release/git@10.0.1(semantic-release@25.0.5(typescript@7.0.1-rc))':
+ '@semantic-release/git@10.0.1(semantic-release@25.0.5(typescript@6.0.3))':
dependencies:
'@semantic-release/error': 3.0.0
aggregate-error: 3.1.0
@@ -20255,64 +20599,63 @@ snapshots:
lodash: 4.18.1
micromatch: 4.0.8
p-reduce: 2.1.0
- semantic-release: 25.0.5(typescript@7.0.1-rc)
+ semantic-release: 25.0.5(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
- '@semantic-release/github@12.0.8(semantic-release@25.0.5(typescript@7.0.1-rc))':
+ '@semantic-release/github@12.0.9(semantic-release@25.0.5(typescript@6.0.3))':
dependencies:
'@octokit/core': 7.0.6
'@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
- '@octokit/plugin-retry': 8.1.0(@octokit/core@7.0.6)
+ '@octokit/plugin-retry': 8.0.3(@octokit/core@7.0.6)
'@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6)
'@semantic-release/error': 4.0.0
aggregate-error: 5.0.0
debug: 4.4.3
dir-glob: 3.0.1
- http-proxy-agent: 9.1.0
- https-proxy-agent: 9.1.0
- issue-parser: 7.0.2
- lodash-es: 4.18.1
- mime: 4.1.0
+ http-proxy-agent: 9.0.0
+ https-proxy-agent: 9.0.0
+ issue-parser: 7.0.1
+ lodash-es: 4.17.21
+ mime: 4.0.4
p-filter: 4.1.0
- semantic-release: 25.0.5(typescript@7.0.1-rc)
+ semantic-release: 25.0.5(typescript@6.0.3)
tinyglobby: 0.2.17
undici: 7.28.0
url-join: 5.0.0
transitivePeerDependencies:
- - kerberos
- supports-color
- '@semantic-release/npm@13.1.5(semantic-release@25.0.5(typescript@7.0.1-rc))':
+ '@semantic-release/npm@13.1.5(semantic-release@25.0.5(typescript@6.0.3))':
dependencies:
- '@actions/core': 3.0.1
+ '@actions/core': 3.0.0
'@semantic-release/error': 4.0.0
aggregate-error: 5.0.0
env-ci: 11.2.0
- execa: 9.6.1
- fs-extra: 11.3.6
- lodash-es: 4.18.1
+ execa: 9.5.2
+ fs-extra: 11.2.0
+ lodash-es: 4.17.21
nerf-dart: 1.0.0
- normalize-url: 9.0.1
- npm: 11.18.0
+ normalize-url: 9.0.0
+ npm: 11.6.2
rc: 1.2.8
- read-pkg: 10.1.0
- registry-auth-token: 5.1.1
- semantic-release: 25.0.5(typescript@7.0.1-rc)
- semver: 7.8.5
- tempy: 3.2.0
+ read-pkg: 10.0.0
+ registry-auth-token: 5.0.2
+ semantic-release: 25.0.5(typescript@6.0.3)
+ semver: 7.7.4
+ tempy: 3.1.0
- '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(typescript@7.0.1-rc))':
+ '@semantic-release/release-notes-generator@14.1.1(semantic-release@25.0.5(typescript@6.0.3))':
dependencies:
- conventional-changelog-angular: 8.3.1
- conventional-changelog-writer: 8.4.0
+ conventional-changelog-angular: 8.0.0
+ conventional-changelog-writer: 8.0.0
conventional-commits-filter: 5.0.0
- conventional-commits-parser: 6.4.0
+ conventional-commits-parser: 6.0.0
debug: 4.4.3
import-from-esm: 2.0.0
- lodash-es: 4.18.1
+ lodash-es: 4.17.21
read-package-up: 11.0.0
- semantic-release: 25.0.5(typescript@7.0.1-rc)
+ semantic-release: 25.0.5(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
@@ -20324,26 +20667,24 @@ snapshots:
'@sideway/pinpoint@2.0.0': {}
- '@signalwire/docusaurus-plugin-llms-txt@1.2.2(@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc))':
+ '@signalwire/docusaurus-plugin-llms-txt@1.2.2(@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3))':
dependencies:
- '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
- fs-extra: 11.3.6
+ '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.7))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
+ fs-extra: 11.2.0
hast-util-select: 6.0.4
hast-util-to-html: 9.0.5
hast-util-to-string: 3.0.1
- p-map: 7.0.5
+ p-map: 7.0.3
rehype-parse: 9.0.1
rehype-remark: 10.0.1
remark-gfm: 4.0.1
remark-stringify: 11.0.0
string-width: 5.1.2
unified: 11.0.5
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
transitivePeerDependencies:
- supports-color
- '@simple-libs/stream-utils@1.2.0': {}
-
'@sinclair/typebox@0.27.10': {}
'@sindresorhus/is@4.6.0': {}
@@ -20370,63 +20711,63 @@ snapshots:
'@so-ric/colorspace@1.1.6':
dependencies:
- color: 5.0.3
+ color: 5.0.2
text-hex: 1.0.0
'@standard-schema/spec@1.1.0': {}
'@standard-schema/utils@0.3.0': {}
- '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.29.7)':
+ '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
- '@svgr/babel-preset@8.1.0(@babel/core@7.29.7)':
+ '@svgr/babel-preset@8.1.0(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.29.7
- '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.29.7)
- '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.29.0)
+ '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.29.0)
- '@svgr/core@8.1.0(typescript@7.0.1-rc)':
+ '@svgr/core@8.1.0(typescript@6.0.3)':
dependencies:
- '@babel/core': 7.29.7
- '@svgr/babel-preset': 8.1.0(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@svgr/babel-preset': 8.1.0(@babel/core@7.29.0)
camelcase: 6.3.0
- cosmiconfig: 8.3.6(typescript@7.0.1-rc)
+ cosmiconfig: 8.3.6(typescript@6.0.3)
snake-case: 3.0.4
transitivePeerDependencies:
- supports-color
@@ -20437,93 +20778,85 @@ snapshots:
'@babel/types': 7.29.7
entities: 4.5.0
- '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@7.0.1-rc))':
+ '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@6.0.3))':
dependencies:
- '@babel/core': 7.29.7
- '@svgr/babel-preset': 8.1.0(@babel/core@7.29.7)
- '@svgr/core': 8.1.0(typescript@7.0.1-rc)
+ '@babel/core': 7.29.0
+ '@svgr/babel-preset': 8.1.0(@babel/core@7.29.0)
+ '@svgr/core': 8.1.0(typescript@6.0.3)
'@svgr/hast-util-to-babel-ast': 8.0.0
svg-parser: 2.0.4
transitivePeerDependencies:
- supports-color
- '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)':
+ '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@6.0.3))(typescript@6.0.3)':
dependencies:
- '@svgr/core': 8.1.0(typescript@7.0.1-rc)
- cosmiconfig: 8.3.6(typescript@7.0.1-rc)
+ '@svgr/core': 8.1.0(typescript@6.0.3)
+ cosmiconfig: 8.3.6(typescript@6.0.3)
deepmerge: 4.3.1
svgo: 3.3.3
transitivePeerDependencies:
- typescript
- '@svgr/webpack@8.1.0(typescript@7.0.1-rc)':
+ '@svgr/webpack@8.1.0(typescript@6.0.3)':
dependencies:
- '@babel/core': 7.29.7
- '@babel/plugin-transform-react-constant-elements': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-env': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-react': 7.29.7(@babel/core@7.29.7)
- '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7)
- '@svgr/core': 8.1.0(typescript@7.0.1-rc)
- '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@7.0.1-rc))
- '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)
+ '@babel/core': 7.29.0
+ '@babel/plugin-transform-react-constant-elements': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-env': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-react': 7.29.7(@babel/core@7.29.0)
+ '@babel/preset-typescript': 7.29.7(@babel/core@7.29.0)
+ '@svgr/core': 8.1.0(typescript@6.0.3)
+ '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3))
+ '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@6.0.3))(typescript@6.0.3)
transitivePeerDependencies:
- supports-color
- typescript
- '@swc/core-darwin-arm64@1.15.43':
+ '@swc/core-darwin-arm64@1.15.3':
optional: true
- '@swc/core-darwin-x64@1.15.43':
+ '@swc/core-darwin-x64@1.15.3':
optional: true
- '@swc/core-linux-arm-gnueabihf@1.15.43':
+ '@swc/core-linux-arm-gnueabihf@1.15.3':
optional: true
- '@swc/core-linux-arm64-gnu@1.15.43':
+ '@swc/core-linux-arm64-gnu@1.15.3':
optional: true
- '@swc/core-linux-arm64-musl@1.15.43':
+ '@swc/core-linux-arm64-musl@1.15.3':
optional: true
- '@swc/core-linux-ppc64-gnu@1.15.43':
+ '@swc/core-linux-x64-gnu@1.15.3':
optional: true
- '@swc/core-linux-s390x-gnu@1.15.43':
+ '@swc/core-linux-x64-musl@1.15.3':
optional: true
- '@swc/core-linux-x64-gnu@1.15.43':
+ '@swc/core-win32-arm64-msvc@1.15.3':
optional: true
- '@swc/core-linux-x64-musl@1.15.43':
+ '@swc/core-win32-ia32-msvc@1.15.3':
optional: true
- '@swc/core-win32-arm64-msvc@1.15.43':
+ '@swc/core-win32-x64-msvc@1.15.3':
optional: true
- '@swc/core-win32-ia32-msvc@1.15.43':
- optional: true
-
- '@swc/core-win32-x64-msvc@1.15.43':
- optional: true
-
- '@swc/core@1.15.43(@swc/helpers@0.5.23)':
+ '@swc/core@1.15.3(@swc/helpers@0.5.15)':
dependencies:
'@swc/counter': 0.1.3
- '@swc/types': 0.1.27
+ '@swc/types': 0.1.25
optionalDependencies:
- '@swc/core-darwin-arm64': 1.15.43
- '@swc/core-darwin-x64': 1.15.43
- '@swc/core-linux-arm-gnueabihf': 1.15.43
- '@swc/core-linux-arm64-gnu': 1.15.43
- '@swc/core-linux-arm64-musl': 1.15.43
- '@swc/core-linux-ppc64-gnu': 1.15.43
- '@swc/core-linux-s390x-gnu': 1.15.43
- '@swc/core-linux-x64-gnu': 1.15.43
- '@swc/core-linux-x64-musl': 1.15.43
- '@swc/core-win32-arm64-msvc': 1.15.43
- '@swc/core-win32-ia32-msvc': 1.15.43
- '@swc/core-win32-x64-msvc': 1.15.43
- '@swc/helpers': 0.5.23
+ '@swc/core-darwin-arm64': 1.15.3
+ '@swc/core-darwin-x64': 1.15.3
+ '@swc/core-linux-arm-gnueabihf': 1.15.3
+ '@swc/core-linux-arm64-gnu': 1.15.3
+ '@swc/core-linux-arm64-musl': 1.15.3
+ '@swc/core-linux-x64-gnu': 1.15.3
+ '@swc/core-linux-x64-musl': 1.15.3
+ '@swc/core-win32-arm64-msvc': 1.15.3
+ '@swc/core-win32-ia32-msvc': 1.15.3
+ '@swc/core-win32-x64-msvc': 1.15.3
+ '@swc/helpers': 0.5.15
'@swc/counter@0.1.3': {}
@@ -20531,64 +20864,60 @@ snapshots:
dependencies:
tslib: 2.8.1
- '@swc/helpers@0.5.23':
- dependencies:
- tslib: 2.8.1
-
- '@swc/html-darwin-arm64@1.15.43':
+ '@swc/html-darwin-arm64@1.15.40':
optional: true
- '@swc/html-darwin-x64@1.15.43':
+ '@swc/html-darwin-x64@1.15.40':
optional: true
- '@swc/html-linux-arm-gnueabihf@1.15.43':
+ '@swc/html-linux-arm-gnueabihf@1.15.40':
optional: true
- '@swc/html-linux-arm64-gnu@1.15.43':
+ '@swc/html-linux-arm64-gnu@1.15.40':
optional: true
- '@swc/html-linux-arm64-musl@1.15.43':
+ '@swc/html-linux-arm64-musl@1.15.40':
optional: true
- '@swc/html-linux-ppc64-gnu@1.15.43':
+ '@swc/html-linux-ppc64-gnu@1.15.40':
optional: true
- '@swc/html-linux-s390x-gnu@1.15.43':
+ '@swc/html-linux-s390x-gnu@1.15.40':
optional: true
- '@swc/html-linux-x64-gnu@1.15.43':
+ '@swc/html-linux-x64-gnu@1.15.40':
optional: true
- '@swc/html-linux-x64-musl@1.15.43':
+ '@swc/html-linux-x64-musl@1.15.40':
optional: true
- '@swc/html-win32-arm64-msvc@1.15.43':
+ '@swc/html-win32-arm64-msvc@1.15.40':
optional: true
- '@swc/html-win32-ia32-msvc@1.15.43':
+ '@swc/html-win32-ia32-msvc@1.15.40':
optional: true
- '@swc/html-win32-x64-msvc@1.15.43':
+ '@swc/html-win32-x64-msvc@1.15.40':
optional: true
- '@swc/html@1.15.43':
+ '@swc/html@1.15.40':
dependencies:
'@swc/counter': 0.1.3
optionalDependencies:
- '@swc/html-darwin-arm64': 1.15.43
- '@swc/html-darwin-x64': 1.15.43
- '@swc/html-linux-arm-gnueabihf': 1.15.43
- '@swc/html-linux-arm64-gnu': 1.15.43
- '@swc/html-linux-arm64-musl': 1.15.43
- '@swc/html-linux-ppc64-gnu': 1.15.43
- '@swc/html-linux-s390x-gnu': 1.15.43
- '@swc/html-linux-x64-gnu': 1.15.43
- '@swc/html-linux-x64-musl': 1.15.43
- '@swc/html-win32-arm64-msvc': 1.15.43
- '@swc/html-win32-ia32-msvc': 1.15.43
- '@swc/html-win32-x64-msvc': 1.15.43
+ '@swc/html-darwin-arm64': 1.15.40
+ '@swc/html-darwin-x64': 1.15.40
+ '@swc/html-linux-arm-gnueabihf': 1.15.40
+ '@swc/html-linux-arm64-gnu': 1.15.40
+ '@swc/html-linux-arm64-musl': 1.15.40
+ '@swc/html-linux-ppc64-gnu': 1.15.40
+ '@swc/html-linux-s390x-gnu': 1.15.40
+ '@swc/html-linux-x64-gnu': 1.15.40
+ '@swc/html-linux-x64-musl': 1.15.40
+ '@swc/html-win32-arm64-msvc': 1.15.40
+ '@swc/html-win32-ia32-msvc': 1.15.40
+ '@swc/html-win32-x64-msvc': 1.15.40
- '@swc/types@0.1.27':
+ '@swc/types@0.1.25':
dependencies:
'@swc/counter': 0.1.3
@@ -20596,16 +20925,18 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@t3-oss/env-core@0.13.11(typescript@7.0.1-rc)(zod@4.4.3)':
+ '@t3-oss/env-core@0.13.11(arktype@2.1.20)(typescript@6.0.3)(zod@4.4.3)':
optionalDependencies:
- typescript: 7.0.1-rc
+ arktype: 2.1.20
+ typescript: 6.0.3
zod: 4.4.3
- '@t3-oss/env-nextjs@0.13.11(typescript@7.0.1-rc)(zod@4.4.3)':
+ '@t3-oss/env-nextjs@0.13.11(arktype@2.1.20)(typescript@6.0.3)(zod@4.4.3)':
dependencies:
- '@t3-oss/env-core': 0.13.11(typescript@7.0.1-rc)(zod@4.4.3)
+ '@t3-oss/env-core': 0.13.11(arktype@2.1.20)(typescript@6.0.3)(zod@4.4.3)
optionalDependencies:
- typescript: 7.0.1-rc
+ arktype: 2.1.20
+ typescript: 6.0.3
zod: 4.4.3
'@tabler/icons-react@3.44.0(react@19.2.7)':
@@ -20681,7 +21012,7 @@ snapshots:
'@alloc/quick-lru': 5.2.0
'@tailwindcss/node': 4.3.2
'@tailwindcss/oxide': 4.3.2
- postcss: 8.5.16
+ postcss: 8.5.15
tailwindcss: 4.3.2
'@tanstack/match-sorter-utils@8.19.4':
@@ -20707,10 +21038,10 @@ snapshots:
'@tanstack/react-query': 5.101.2(react@19.2.7)
react: 19.2.7
- '@tanstack/react-query-next-experimental@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)':
+ '@tanstack/react-query-next-experimental@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)':
dependencies:
'@tanstack/react-query': 5.101.2(react@19.2.7)
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react: 19.2.7
'@tanstack/react-query-persist-client@5.101.2(@tanstack/react-query@5.101.2(react@19.2.7))(react@19.2.7)':
@@ -20740,323 +21071,317 @@ snapshots:
'@tanstack/virtual-core@3.11.2': {}
- '@tanstack/virtual-core@3.17.3': {}
+ '@tanstack/virtual-core@3.17.0': {}
- '@tanstack/vue-virtual@3.13.31(vue@3.5.39(typescript@7.0.1-rc))':
+ '@tanstack/vue-virtual@3.13.28(vue@3.5.35(typescript@6.0.3))':
dependencies:
- '@tanstack/virtual-core': 3.17.3
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@tanstack/virtual-core': 3.17.0
+ vue: 3.5.35(typescript@6.0.3)
'@testcontainers/mysql@12.0.4':
dependencies:
testcontainers: 12.0.4
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
- supports-color
'@testcontainers/postgresql@12.0.4':
dependencies:
testcontainers: 12.0.4
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
- supports-color
'@testcontainers/redis@12.0.4':
dependencies:
testcontainers: 12.0.4
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
- supports-color
- '@tiptap/core@3.27.1(@tiptap/pm@3.27.1)':
+ '@tiptap/core@3.27.3(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/pm': 3.27.1
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-blockquote@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-blockquote@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-bold@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-bold@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-bubble-menu@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-bubble-menu@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
optional: true
- '@tiptap/extension-bullet-list@3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-bullet-list@3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-code-block@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-code-block@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-code@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-code@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-color@3.27.1(@tiptap/extension-text-style@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1)))':
+ '@tiptap/extension-color@3.27.3(@tiptap/extension-text-style@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3)))':
dependencies:
- '@tiptap/extension-text-style': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
+ '@tiptap/extension-text-style': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
- '@tiptap/extension-document@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-document@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-dropcursor@3.27.1(@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-dropcursor@3.27.3(@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extensions': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extensions': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-floating-menu@3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-floating-menu@3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
'@floating-ui/dom': 1.7.6
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
optional: true
- '@tiptap/extension-gapcursor@3.27.1(@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-gapcursor@3.27.3(@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extensions': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extensions': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-hard-break@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-hard-break@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-heading@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-heading@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-highlight@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-highlight@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-horizontal-rule@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-horizontal-rule@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-image@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-image@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-italic@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-italic@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-link@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-link@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
linkifyjs: 4.3.3
- '@tiptap/extension-list-item@3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-list-item@3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-list-keymap@3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-list-keymap@3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-ordered-list@3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-ordered-list@3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-paragraph@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-paragraph@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-placeholder@3.27.1(@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-placeholder@3.27.3(@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extensions': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extensions': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-strike@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-strike@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-table-cell@3.27.1(@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-table-cell@3.27.3(@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-table': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-table': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-table-header@3.27.1(@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-table-header@3.27.3(@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-table': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-table': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-table-row@3.27.1(@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-table-row@3.27.3(@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-table': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-table': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-table@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extension-table@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
- '@tiptap/extension-task-item@3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-task-item@3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-task-list@3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-task-list@3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
- '@tiptap/extension-text-align@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-text-align@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-text-style@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-text-style@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-text@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-text@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extension-underline@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))':
+ '@tiptap/extension-underline@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
- '@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)':
+ '@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
- '@tiptap/pm@3.27.1':
+ '@tiptap/pm@3.27.3':
dependencies:
prosemirror-changeset: 2.4.1
prosemirror-commands: 1.7.1
- prosemirror-dropcursor: 1.8.2
+ prosemirror-dropcursor: 1.8.3
prosemirror-gapcursor: 1.4.1
prosemirror-history: 1.5.0
prosemirror-inputrules: 1.5.1
prosemirror-keymap: 1.2.3
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-schema-list: 1.5.1
prosemirror-state: 1.4.4
prosemirror-tables: 1.8.5
prosemirror-transform: 1.12.0
- prosemirror-view: 1.41.9
+ prosemirror-view: 1.42.0
- '@tiptap/react@3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
+ '@tiptap/react@3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
'@types/react': 19.2.17
'@types/react-dom': 19.2.3(@types/react@19.2.17)
'@types/use-sync-external-store': 0.0.6
- fast-equals: 5.4.0
+ fast-equals: 5.3.3
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
use-sync-external-store: 1.6.0(react@19.2.7)
optionalDependencies:
- '@tiptap/extension-bubble-menu': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/extension-floating-menu': 3.27.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
+ '@tiptap/extension-bubble-menu': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/extension-floating-menu': 3.27.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
transitivePeerDependencies:
- '@floating-ui/dom'
- '@tiptap/starter-kit@3.27.1':
+ '@tiptap/starter-kit@3.27.3':
dependencies:
- '@tiptap/core': 3.27.1(@tiptap/pm@3.27.1)
- '@tiptap/extension-blockquote': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-bold': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-bullet-list': 3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
- '@tiptap/extension-code': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-code-block': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/extension-document': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-dropcursor': 3.27.1(@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
- '@tiptap/extension-gapcursor': 3.27.1(@tiptap/extensions@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
- '@tiptap/extension-hard-break': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-heading': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-horizontal-rule': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/extension-italic': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-link': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/extension-list': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/extension-list-item': 3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
- '@tiptap/extension-list-keymap': 3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
- '@tiptap/extension-ordered-list': 3.27.1(@tiptap/extension-list@3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1))
- '@tiptap/extension-paragraph': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-strike': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-text': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extension-underline': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))
- '@tiptap/extensions': 3.27.1(@tiptap/core@3.27.1(@tiptap/pm@3.27.1))(@tiptap/pm@3.27.1)
- '@tiptap/pm': 3.27.1
+ '@tiptap/core': 3.27.3(@tiptap/pm@3.27.3)
+ '@tiptap/extension-blockquote': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-bold': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-bullet-list': 3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
+ '@tiptap/extension-code': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-code-block': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/extension-document': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-dropcursor': 3.27.3(@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
+ '@tiptap/extension-gapcursor': 3.27.3(@tiptap/extensions@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
+ '@tiptap/extension-hard-break': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-heading': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-horizontal-rule': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/extension-italic': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-link': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/extension-list': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/extension-list-item': 3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
+ '@tiptap/extension-list-keymap': 3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
+ '@tiptap/extension-ordered-list': 3.27.3(@tiptap/extension-list@3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3))
+ '@tiptap/extension-paragraph': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-strike': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-text': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extension-underline': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))
+ '@tiptap/extensions': 3.27.3(@tiptap/core@3.27.3(@tiptap/pm@3.27.3))(@tiptap/pm@3.27.3)
+ '@tiptap/pm': 3.27.3
- '@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)':
+ '@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3)':
dependencies:
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
- typescript: 7.0.1-rc
+ '@trpc/server': 11.18.0(typescript@6.0.3)
+ typescript: 6.0.3
- '@trpc/next@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@trpc/next@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)':
dependencies:
- '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3)
+ '@trpc/server': 11.18.0(typescript@6.0.3)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- typescript: 7.0.1-rc
+ typescript: 6.0.3
optionalDependencies:
'@tanstack/react-query': 5.101.2(react@19.2.7)
- '@trpc/react-query': 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc)
+ '@trpc/react-query': 11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3)
- '@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@trpc/react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3)':
dependencies:
'@tanstack/react-query': 5.101.2(react@19.2.7)
- '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
+ '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3)
+ '@trpc/server': 11.18.0(typescript@6.0.3)
react: 19.2.7
- typescript: 7.0.1-rc
+ typescript: 6.0.3
- '@trpc/server@11.18.0(typescript@7.0.1-rc)':
+ '@trpc/server@11.18.0(typescript@6.0.3)':
dependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
- '@trpc/tanstack-react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc))(@trpc/server@11.18.0(typescript@7.0.1-rc))(react@19.2.7)(typescript@7.0.1-rc)':
+ '@trpc/tanstack-react-query@11.18.0(@tanstack/react-query@5.101.2(react@19.2.7))(@trpc/client@11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3))(@trpc/server@11.18.0(typescript@6.0.3))(react@19.2.7)(typescript@6.0.3)':
dependencies:
'@tanstack/react-query': 5.101.2(react@19.2.7)
- '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@7.0.1-rc))(typescript@7.0.1-rc)
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
+ '@trpc/client': 11.18.0(@trpc/server@11.18.0(typescript@6.0.3))(typescript@6.0.3)
+ '@trpc/server': 11.18.0(typescript@6.0.3)
react: 19.2.7
- typescript: 7.0.1-rc
+ typescript: 6.0.3
'@tsconfig/docusaurus@2.0.9': {}
- '@turbo/darwin-64@2.10.2':
+ '@turbo/darwin-64@2.10.4':
optional: true
- '@turbo/darwin-arm64@2.10.2':
+ '@turbo/darwin-arm64@2.10.4':
optional: true
- '@turbo/gen@2.10.2(@types/node@26.0.1)':
+ '@turbo/gen@2.10.4(@types/node@24.13.3)':
dependencies:
- '@inquirer/prompts': 7.10.1(@types/node@26.0.1)
+ '@inquirer/prompts': 7.10.1(@types/node@24.13.3)
esbuild: 0.28.1
transitivePeerDependencies:
- '@types/node'
- '@turbo/linux-64@2.10.2':
+ '@turbo/linux-64@2.10.4':
optional: true
- '@turbo/linux-arm64@2.10.2':
+ '@turbo/linux-arm64@2.10.4':
optional: true
- '@turbo/windows-64@2.10.2':
+ '@turbo/windows-64@2.10.4':
optional: true
- '@turbo/windows-arm64@2.10.2':
+ '@turbo/windows-arm64@2.10.4':
optional: true
'@tybys/wasm-util@0.10.3':
@@ -21066,55 +21391,54 @@ snapshots:
'@types/adm-zip@0.5.8':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@types/aws-lambda@8.10.162': {}
+ '@types/aws-lambda@8.10.146': {}
'@types/bcrypt@6.0.0':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/better-sqlite3@7.6.13':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
- '@types/body-parser@1.19.6':
+ '@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/bonjour@3.5.13':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
- '@types/chai@5.2.3':
+ '@types/chai@5.2.2':
dependencies:
'@types/deep-eql': 4.0.2
- assertion-error: 2.0.1
'@types/chroma-js@3.1.2': {}
'@types/connect-history-api-fallback@1.5.4':
dependencies:
- '@types/express-serve-static-core': 5.1.1
- '@types/node': 26.0.1
+ '@types/express-serve-static-core': 4.19.5
+ '@types/node': 24.13.2
'@types/connect@3.4.38':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/cookies@0.9.2':
dependencies:
'@types/connect': 3.4.38
- '@types/express': 5.0.6
+ '@types/express': 4.17.25
'@types/keygrip': 1.0.6
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/crypto-js@4.2.2': {}
'@types/css-modules@1.0.5': {}
- '@types/d3-array@3.2.2': {}
+ '@types/d3-array@3.2.1': {}
'@types/d3-axis@3.0.6':
dependencies:
@@ -21130,7 +21454,7 @@ snapshots:
'@types/d3-contour@3.0.6':
dependencies:
- '@types/d3-array': 3.2.2
+ '@types/d3-array': 3.2.1
'@types/geojson': 7946.0.16
'@types/d3-delaunay@6.0.4': {}
@@ -21181,7 +21505,7 @@ snapshots:
'@types/d3-selection@3.0.11': {}
- '@types/d3-shape@3.1.8':
+ '@types/d3-shape@3.1.7':
dependencies:
'@types/d3-path': 3.1.1
@@ -21208,7 +21532,7 @@ snapshots:
'@types/d3@7.4.3':
dependencies:
- '@types/d3-array': 3.2.2
+ '@types/d3-array': 3.2.1
'@types/d3-axis': 3.0.6
'@types/d3-brush': 3.0.6
'@types/d3-chord': 3.0.6
@@ -21232,14 +21556,14 @@ snapshots:
'@types/d3-scale': 4.0.9
'@types/d3-scale-chromatic': 3.1.0
'@types/d3-selection': 3.0.11
- '@types/d3-shape': 3.1.8
+ '@types/d3-shape': 3.1.7
'@types/d3-time': 3.0.4
'@types/d3-time-format': 4.0.3
'@types/d3-timer': 3.0.2
'@types/d3-transition': 3.0.9
'@types/d3-zoom': 3.0.8
- '@types/debug@4.1.13':
+ '@types/debug@4.1.12':
dependencies:
'@types/ms': 2.1.0
@@ -21247,47 +21571,34 @@ snapshots:
'@types/docker-modem@3.0.6':
dependencies:
- '@types/node': 26.0.1
- '@types/ssh2': 1.15.5
+ '@types/node': 24.13.2
+ '@types/ssh2': 1.15.1
'@types/dockerode@4.0.1':
dependencies:
'@types/docker-modem': 3.0.6
- '@types/node': 26.0.1
- '@types/ssh2': 1.15.5
+ '@types/node': 24.13.2
+ '@types/ssh2': 1.15.1
'@types/estree-jsx@1.0.5':
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
- '@types/estree@1.0.9': {}
+ '@types/estree@1.0.8': {}
- '@types/express-serve-static-core@4.19.8':
+ '@types/express-serve-static-core@4.19.5':
dependencies:
- '@types/node': 26.0.1
- '@types/qs': 6.15.1
+ '@types/node': 24.13.2
+ '@types/qs': 6.9.16
'@types/range-parser': 1.2.7
- '@types/send': 1.2.1
-
- '@types/express-serve-static-core@5.1.1':
- dependencies:
- '@types/node': 26.0.1
- '@types/qs': 6.15.1
- '@types/range-parser': 1.2.7
- '@types/send': 1.2.1
+ '@types/send': 0.17.4
'@types/express@4.17.25':
dependencies:
- '@types/body-parser': 1.19.6
- '@types/express-serve-static-core': 4.19.8
- '@types/qs': 6.15.1
- '@types/serve-static': 1.15.10
-
- '@types/express@5.0.6':
- dependencies:
- '@types/body-parser': 1.19.6
- '@types/express-serve-static-core': 5.1.1
- '@types/serve-static': 2.2.0
+ '@types/body-parser': 1.19.5
+ '@types/express-serve-static-core': 4.19.5
+ '@types/qs': 6.9.16
+ '@types/serve-static': 1.15.7
'@types/geojson@7946.0.16': {}
@@ -21305,11 +21616,11 @@ snapshots:
'@types/http-cache-semantics@4.2.0': {}
- '@types/http-errors@2.0.5': {}
+ '@types/http-errors@2.0.4': {}
'@types/http-proxy@1.17.17':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -21339,7 +21650,7 @@ snapshots:
'@types/node-fetch@2.6.13':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
form-data: 4.0.6
'@types/node-unifi@2.5.1(patch_hash=5e6ae51e2a17a7f9729bfa30b0eb3d0842a5810ac6db47603ab4a6efa1ed84c5)':
@@ -21348,7 +21659,7 @@ snapshots:
'@types/node@17.0.45': {}
- '@types/node@18.19.130':
+ '@types/node@18.19.50':
dependencies:
undici-types: 5.26.5
@@ -21356,15 +21667,15 @@ snapshots:
dependencies:
undici-types: 7.18.2
- '@types/node@26.0.1':
+ '@types/node@24.13.3':
dependencies:
- undici-types: 8.3.0
+ undici-types: 7.18.2
'@types/normalize-package-data@2.4.4': {}
'@types/pg@8.20.0':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
pg-protocol: 1.15.0
pg-types: 2.2.0
@@ -21373,7 +21684,7 @@ snapshots:
'@types/prop-types@15.7.15':
optional: true
- '@types/qs@6.15.1': {}
+ '@types/qs@6.9.16': {}
'@types/range-parser@1.2.7': {}
@@ -21417,60 +21728,53 @@ snapshots:
'@types/sax@1.2.7':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
- '@types/send@0.17.6':
+ '@types/semver@7.5.8': {}
+
+ '@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 26.0.1
-
- '@types/send@1.2.1':
- dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/serve-index@1.9.4':
dependencies:
- '@types/express': 5.0.6
+ '@types/express': 4.17.25
- '@types/serve-static@1.15.10':
+ '@types/serve-static@1.15.7':
dependencies:
- '@types/http-errors': 2.0.5
- '@types/node': 26.0.1
- '@types/send': 0.17.6
-
- '@types/serve-static@2.2.0':
- dependencies:
- '@types/http-errors': 2.0.5
- '@types/node': 26.0.1
+ '@types/http-errors': 2.0.4
+ '@types/node': 24.13.2
+ '@types/send': 0.17.4
'@types/set-cookie-parser@2.4.10':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
optional: true
'@types/sockjs@0.3.36':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
- '@types/ssh2-streams@0.1.13':
+ '@types/ssh2-streams@0.1.12':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/ssh2@0.5.52':
dependencies:
- '@types/node': 26.0.1
- '@types/ssh2-streams': 0.1.13
+ '@types/node': 24.13.2
+ '@types/ssh2-streams': 0.1.12
- '@types/ssh2@1.15.5':
+ '@types/ssh2@1.15.1':
dependencies:
- '@types/node': 18.19.130
+ '@types/node': 18.19.50
'@types/statuses@2.0.6':
optional: true
- '@types/stream-buffers@3.0.8':
+ '@types/stream-buffers@3.0.7':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/triple-beam@1.3.5': {}
@@ -21491,11 +21795,11 @@ snapshots:
'@types/ws@8.18.1':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/xml2js@0.4.14':
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
'@types/yargs-parser@21.0.3': {}
@@ -21503,73 +21807,13 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
- '@typescript/typescript-aix-ppc64@7.0.1-rc':
- optional: true
+ '@ungap/structured-clone@1.3.0': {}
- '@typescript/typescript-darwin-arm64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-darwin-x64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-freebsd-arm64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-freebsd-x64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-arm64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-arm@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-loong64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-mips64el@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-ppc64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-riscv64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-s390x@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-linux-x64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-netbsd-arm64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-netbsd-x64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-openbsd-arm64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-openbsd-x64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-sunos-x64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-win32-arm64@7.0.1-rc':
- optional: true
-
- '@typescript/typescript-win32-x64@7.0.1-rc':
- optional: true
-
- '@ungap/structured-clone@1.3.2': {}
-
- '@unhead/vue@2.1.15(vue@3.5.39(typescript@7.0.1-rc))':
+ '@unhead/vue@2.1.15(vue@3.5.35(typescript@6.0.3))':
dependencies:
hookable: 6.1.1
unhead: 2.1.15
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
'@upsetjs/venn.js@2.0.0':
optionalDependencies:
@@ -21589,6 +21833,11 @@ snapshots:
mux.js: 7.1.0
video.js: 8.23.9
+ '@videojs/vhs-utils@4.1.1':
+ dependencies:
+ '@babel/runtime': 7.29.7
+ global: 4.4.0
+
'@videojs/vhs-utils@4.1.2':
dependencies:
'@babel/runtime': 7.29.7
@@ -21600,10 +21849,10 @@ snapshots:
global: 4.4.0
is-function: 1.0.2
- '@vitejs/plugin-react@6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))':
+ '@vitejs/plugin-react@6.0.3(babel-plugin-react-compiler@1.0.0)(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
+ vite: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
optionalDependencies:
babel-plugin-react-compiler: 1.0.0
@@ -21611,43 +21860,43 @@ snapshots:
dependencies:
'@bcoe/v8-coverage': 1.0.2
'@vitest/utils': 4.1.9
- ast-v8-to-istanbul: 1.0.4
+ ast-v8-to-istanbul: 1.0.0
istanbul-lib-coverage: 3.2.2
istanbul-lib-report: 3.0.1
istanbul-reports: 3.2.0
- magicast: 0.5.3
- obug: 2.1.3
- std-env: 4.1.0
+ magicast: 0.5.2
+ obug: 2.1.1
+ std-env: 4.0.0
tinyrainbow: 3.1.0
- vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@26.0.1)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@vitest/expect@4.1.9':
dependencies:
'@standard-schema/spec': 1.1.0
- '@types/chai': 5.2.3
+ '@types/chai': 5.2.2
'@vitest/spy': 4.1.9
'@vitest/utils': 4.1.9
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@24.13.2)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.9
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.14.6(@types/node@24.13.2)(typescript@7.0.1-rc)
- vite: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
- optional: true
+ msw: 2.14.6(@types/node@24.13.3)(typescript@6.0.3)
+ vite: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
- '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.9(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.9
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc)
- vite: 8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
+ msw: 2.14.6(@types/node@24.13.3)(typescript@6.0.3)
+ vite: 8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
+ optional: true
'@vitest/pretty-format@4.1.9':
dependencies:
@@ -21670,13 +21919,13 @@ snapshots:
'@vitest/ui@4.1.9(vitest@4.1.9)':
dependencies:
'@vitest/utils': 4.1.9
- fflate: 0.8.3
+ fflate: 0.8.2
flatted: 3.4.2
pathe: 2.0.3
sirv: 3.0.2
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@26.0.1)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@vitest/utils@4.1.9':
dependencies:
@@ -21684,84 +21933,83 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
- '@vue/compiler-core@3.5.39':
+ '@vue/compiler-core@3.5.35':
dependencies:
'@babel/parser': 7.29.7
- '@vue/shared': 3.5.39
+ '@vue/shared': 3.5.35
entities: 7.0.1
estree-walker: 2.0.2
source-map-js: 1.2.1
- '@vue/compiler-dom@3.5.39':
+ '@vue/compiler-dom@3.5.35':
dependencies:
- '@vue/compiler-core': 3.5.39
- '@vue/shared': 3.5.39
+ '@vue/compiler-core': 3.5.35
+ '@vue/shared': 3.5.35
- '@vue/compiler-sfc@3.5.39':
+ '@vue/compiler-sfc@3.5.35':
dependencies:
'@babel/parser': 7.29.7
- '@vue/compiler-core': 3.5.39
- '@vue/compiler-dom': 3.5.39
- '@vue/compiler-ssr': 3.5.39
- '@vue/shared': 3.5.39
+ '@vue/compiler-core': 3.5.35
+ '@vue/compiler-dom': 3.5.35
+ '@vue/compiler-ssr': 3.5.35
+ '@vue/shared': 3.5.35
estree-walker: 2.0.2
magic-string: 0.30.21
postcss: 8.5.16
source-map-js: 1.2.1
- '@vue/compiler-ssr@3.5.39':
+ '@vue/compiler-ssr@3.5.35':
dependencies:
- '@vue/compiler-dom': 3.5.39
- '@vue/shared': 3.5.39
+ '@vue/compiler-dom': 3.5.35
+ '@vue/shared': 3.5.35
- '@vue/reactivity@3.5.39':
+ '@vue/reactivity@3.5.35':
dependencies:
- '@vue/shared': 3.5.39
+ '@vue/shared': 3.5.35
- '@vue/runtime-core@3.5.39':
+ '@vue/runtime-core@3.5.35':
dependencies:
- '@vue/reactivity': 3.5.39
- '@vue/shared': 3.5.39
+ '@vue/reactivity': 3.5.35
+ '@vue/shared': 3.5.35
- '@vue/runtime-dom@3.5.39':
+ '@vue/runtime-dom@3.5.35':
dependencies:
- '@vue/reactivity': 3.5.39
- '@vue/runtime-core': 3.5.39
- '@vue/shared': 3.5.39
+ '@vue/reactivity': 3.5.35
+ '@vue/runtime-core': 3.5.35
+ '@vue/shared': 3.5.35
csstype: 3.2.3
- '@vue/server-renderer@3.5.39(vue@3.5.39(typescript@7.0.1-rc))':
+ '@vue/server-renderer@3.5.35(vue@3.5.35(typescript@6.0.3))':
dependencies:
- '@vue/compiler-ssr': 3.5.39
- '@vue/shared': 3.5.39
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@vue/compiler-ssr': 3.5.35
+ '@vue/shared': 3.5.35
+ vue: 3.5.35(typescript@6.0.3)
- '@vue/shared@3.5.39': {}
+ '@vue/shared@3.5.35': {}
- '@vueuse/core@10.11.1(vue@3.5.39(typescript@7.0.1-rc))':
+ '@vueuse/core@10.11.1(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.11.1
- '@vueuse/shared': 10.11.1(vue@3.5.39(typescript@7.0.1-rc))
- vue-demi: 0.14.10(vue@3.5.39(typescript@7.0.1-rc))
+ '@vueuse/shared': 10.11.1(vue@3.5.35(typescript@6.0.3))
+ vue-demi: 0.14.10(vue@3.5.35(typescript@6.0.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/core@13.9.0(vue@3.5.39(typescript@7.0.1-rc))':
+ '@vueuse/core@13.9.0(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@types/web-bluetooth': 0.0.21
'@vueuse/metadata': 13.9.0
- '@vueuse/shared': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@vueuse/shared': 13.9.0(vue@3.5.35(typescript@6.0.3))
+ vue: 3.5.35(typescript@6.0.3)
- '@vueuse/integrations@13.9.0(axios@1.18.1)(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.39(typescript@7.0.1-rc))':
+ '@vueuse/integrations@13.9.0(focus-trap@7.8.0)(fuse.js@7.4.2)(nprogress@0.2.0)(vue@3.5.35(typescript@6.0.3))':
dependencies:
- '@vueuse/core': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
- '@vueuse/shared': 13.9.0(vue@3.5.39(typescript@7.0.1-rc))
- vue: 3.5.39(typescript@7.0.1-rc)
+ '@vueuse/core': 13.9.0(vue@3.5.35(typescript@6.0.3))
+ '@vueuse/shared': 13.9.0(vue@3.5.35(typescript@6.0.3))
+ vue: 3.5.35(typescript@6.0.3)
optionalDependencies:
- axios: 1.18.1
focus-trap: 7.8.0
fuse.js: 7.4.2
nprogress: 0.2.0
@@ -21770,16 +22018,16 @@ snapshots:
'@vueuse/metadata@13.9.0': {}
- '@vueuse/shared@10.11.1(vue@3.5.39(typescript@7.0.1-rc))':
+ '@vueuse/shared@10.11.1(vue@3.5.35(typescript@6.0.3))':
dependencies:
- vue-demi: 0.14.10(vue@3.5.39(typescript@7.0.1-rc))
+ vue-demi: 0.14.10(vue@3.5.35(typescript@6.0.3))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/shared@13.9.0(vue@3.5.39(typescript@7.0.1-rc))':
+ '@vueuse/shared@13.9.0(vue@3.5.35(typescript@6.0.3))':
dependencies:
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
'@webassemblyjs/ast@1.14.1':
dependencies:
@@ -21857,7 +22105,7 @@ snapshots:
'@webassemblyjs/ast': 1.14.1
'@xtuc/long': 4.2.2
- '@xmldom/xmldom@0.8.13': {}
+ '@xmldom/xmldom@0.8.10': {}
'@xterm/addon-canvas@0.7.0(@xterm/xterm@6.0.0)':
dependencies:
@@ -21887,19 +22135,19 @@ snapshots:
mime-types: 3.0.2
negotiator: 1.0.0
- acorn-import-phases@1.0.4(acorn@8.17.0):
+ acorn-import-phases@1.0.4(acorn@8.16.0):
dependencies:
- acorn: 8.17.0
+ acorn: 8.16.0
- acorn-jsx@5.3.2(acorn@8.17.0):
+ acorn-jsx@5.3.2(acorn@8.16.0):
dependencies:
- acorn: 8.17.0
+ acorn: 8.16.0
acorn-walk@8.3.5:
dependencies:
- acorn: 8.17.0
+ acorn: 8.16.0
- acorn@8.17.0: {}
+ acorn@8.16.0: {}
address@1.2.2: {}
@@ -21908,17 +22156,11 @@ snapshots:
aes-decrypter@4.0.2:
dependencies:
'@babel/runtime': 7.29.7
- '@videojs/vhs-utils': 4.1.2
+ '@videojs/vhs-utils': 4.1.1
global: 4.4.0
pkcs7: 1.0.4
- agent-base@6.0.2:
- dependencies:
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- agent-base@7.1.4: {}
+ agent-base@7.1.3: {}
agent-base@9.0.0: {}
@@ -21929,7 +22171,7 @@ snapshots:
aggregate-error@5.0.0:
dependencies:
- clean-stack: 5.3.0
+ clean-stack: 5.2.0
indent-string: 5.0.0
ai@6.0.33(zod@4.4.3):
@@ -21940,21 +22182,21 @@ snapshots:
'@opentelemetry/api': 1.9.0
zod: 4.4.3
- ajv-formats@2.1.1(ajv@8.20.0):
+ ajv-formats@2.1.1(ajv@8.18.0):
optionalDependencies:
- ajv: 8.20.0
+ ajv: 8.18.0
- ajv-formats@3.0.1(ajv@8.20.0):
+ ajv-formats@3.0.1(ajv@8.18.0):
optionalDependencies:
- ajv: 8.20.0
+ ajv: 8.18.0
ajv-keywords@3.5.2(ajv@6.15.0):
dependencies:
ajv: 6.15.0
- ajv-keywords@5.1.0(ajv@8.20.0):
+ ajv-keywords@5.1.0(ajv@8.18.0):
dependencies:
- ajv: 8.20.0
+ ajv: 8.18.0
fast-deep-equal: 3.1.3
ajv@6.15.0:
@@ -21964,40 +22206,40 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
- ajv@8.20.0:
+ ajv@8.18.0:
dependencies:
fast-deep-equal: 3.1.3
- fast-uri: 3.1.3
+ fast-uri: 3.1.0
json-schema-traverse: 1.0.0
require-from-string: 2.0.2
- algoliasearch-helper@3.29.1(algoliasearch@5.55.1):
+ algoliasearch-helper@3.29.1(algoliasearch@5.53.0):
dependencies:
'@algolia/events': 4.0.1
- algoliasearch: 5.55.1
+ algoliasearch: 5.53.0
- algoliasearch@5.55.1:
+ algoliasearch@5.53.0:
dependencies:
- '@algolia/abtesting': 1.21.1
- '@algolia/client-abtesting': 5.55.1
- '@algolia/client-analytics': 5.55.1
- '@algolia/client-common': 5.55.1
- '@algolia/client-insights': 5.55.1
- '@algolia/client-personalization': 5.55.1
- '@algolia/client-query-suggestions': 5.55.1
- '@algolia/client-search': 5.55.1
- '@algolia/ingestion': 1.55.1
- '@algolia/monitoring': 1.55.1
- '@algolia/recommend': 5.55.1
- '@algolia/requester-browser-xhr': 5.55.1
- '@algolia/requester-fetch': 5.55.1
- '@algolia/requester-node-http': 5.55.1
+ '@algolia/abtesting': 1.19.0
+ '@algolia/client-abtesting': 5.53.0
+ '@algolia/client-analytics': 5.53.0
+ '@algolia/client-common': 5.53.0
+ '@algolia/client-insights': 5.53.0
+ '@algolia/client-personalization': 5.53.0
+ '@algolia/client-query-suggestions': 5.53.0
+ '@algolia/client-search': 5.53.0
+ '@algolia/ingestion': 1.53.0
+ '@algolia/monitoring': 1.53.0
+ '@algolia/recommend': 5.53.0
+ '@algolia/requester-browser-xhr': 5.53.0
+ '@algolia/requester-fetch': 5.53.0
+ '@algolia/requester-node-http': 5.53.0
ansi-align@3.0.1:
dependencies:
string-width: 4.2.3
- ansi-escapes@7.3.0:
+ ansi-escapes@7.0.0:
dependencies:
environment: 1.1.0
@@ -22024,7 +22266,7 @@ snapshots:
anymatch@3.1.3:
dependencies:
normalize-path: 3.0.0
- picomatch: 2.3.2
+ picomatch: 2.3.1
anynum@1.0.1: {}
@@ -22036,21 +22278,17 @@ snapshots:
lazystream: 1.0.1
lodash: 4.18.1
normalize-path: 3.0.0
- readable-stream: 4.7.0
+ readable-stream: 4.5.2
archiver@7.0.1:
dependencies:
archiver-utils: 5.0.2
async: 3.2.6
buffer-crc32: 1.0.0
- readable-stream: 4.7.0
+ readable-stream: 4.5.2
readdir-glob: 1.1.3
- tar-stream: 3.2.0
+ tar-stream: 3.1.7
zip-stream: 6.0.1
- transitivePeerDependencies:
- - bare-abort-controller
- - bare-buffer
- - react-native-b4a
arg@5.0.2: {}
@@ -22066,6 +22304,12 @@ snapshots:
dependencies:
tslib: 2.8.1
+ arktype@2.1.20:
+ dependencies:
+ '@ark/schema': 0.46.0
+ '@ark/util': 0.46.0
+ optional: true
+
array-flatten@1.1.1: {}
array-ify@1.0.0: {}
@@ -22082,9 +22326,7 @@ snapshots:
pvutils: 1.1.5
tslib: 2.8.1
- assertion-error@2.0.1: {}
-
- ast-v8-to-istanbul@1.0.4:
+ ast-v8-to-istanbul@1.0.0:
dependencies:
'@jridgewell/trace-mapping': 0.3.31
estree-walker: 3.0.3
@@ -22102,10 +22344,10 @@ snapshots:
attr-accept@2.2.5: {}
- autoprefixer@10.5.2(postcss@8.5.16):
+ autoprefixer@10.5.0(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
- caniuse-lite: 1.0.30001800
+ browserslist: 4.28.2
+ caniuse-lite: 1.0.30001793
fraction.js: 5.3.4
picocolors: 1.1.1
postcss: 8.5.16
@@ -22118,15 +22360,13 @@ snapshots:
aws-ssl-profiles@1.1.2: {}
- axios@1.18.1:
+ axios@1.15.0:
dependencies:
follow-redirects: 1.16.0
form-data: 4.0.6
- https-proxy-agent: 5.0.1
proxy-from-env: 2.1.0
transitivePeerDependencies:
- debug
- - supports-color
axios@1.9.0:
dependencies:
@@ -22136,48 +22376,48 @@ snapshots:
transitivePeerDependencies:
- debug
- b4a@1.8.1: {}
+ b4a@1.6.6: {}
- babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
find-cache-dir: 4.0.0
schema-utils: 4.3.3
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
babel-plugin-dynamic-import-node@2.3.3:
dependencies:
object.assign: 4.1.7
- babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7):
+ babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0):
dependencies:
'@babel/compat-data': 7.29.7
- '@babel/core': 7.29.7
- '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7):
+ babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0)
core-js-compat: 3.49.0
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7):
+ babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0)
core-js-compat: 3.49.0
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7):
+ babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.29.7
- '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)
+ '@babel/core': 7.29.0
+ '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
@@ -22189,44 +22429,38 @@ snapshots:
balanced-match@1.0.2: {}
- balanced-match@4.0.4: {}
-
- bare-events@2.9.1: {}
-
- bare-fs@4.7.2:
+ balanced-match@4.0.2:
dependencies:
- bare-events: 2.9.1
- bare-path: 3.0.1
- bare-stream: 2.13.3(bare-events@2.9.1)
- bare-url: 2.4.5
- fast-fifo: 1.3.2
- transitivePeerDependencies:
- - bare-abort-controller
- - react-native-b4a
+ jackspeak: 4.2.3
- bare-os@3.9.3: {}
+ bare-events@2.5.4:
+ optional: true
- bare-path@3.0.1:
+ bare-fs@4.1.2:
dependencies:
- bare-os: 3.9.3
+ bare-events: 2.5.4
+ bare-path: 3.0.0
+ bare-stream: 2.6.5(bare-events@2.5.4)
+ optional: true
- bare-stream@2.13.3(bare-events@2.9.1):
+ bare-os@3.6.1:
+ optional: true
+
+ bare-path@3.0.0:
dependencies:
- b4a: 1.8.1
- streamx: 2.28.0
- teex: 1.0.1
+ bare-os: 3.6.1
+ optional: true
+
+ bare-stream@2.6.5(bare-events@2.5.4):
+ dependencies:
+ streamx: 2.22.0
optionalDependencies:
- bare-events: 2.9.1
- transitivePeerDependencies:
- - react-native-b4a
-
- bare-url@2.4.5:
- dependencies:
- bare-path: 3.0.1
+ bare-events: 2.5.4
+ optional: true
base64-js@1.5.1: {}
- baseline-browser-mapping@2.10.40: {}
+ baseline-browser-mapping@2.10.31: {}
batch@0.6.1: {}
@@ -22238,96 +22472,60 @@ snapshots:
bcrypt@6.0.0:
dependencies:
- node-addon-api: 8.9.0
+ node-addon-api: 8.3.1
node-gyp-build: 4.8.4
before-after-hook@4.0.0: {}
- better-auth@1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.2))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc)):
+ better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3)):
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/drizzle-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))
- '@better-auth/kysely-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(kysely@0.29.2)
- '@better-auth/memory-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)
- '@better-auth/mongo-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)
- '@better-auth/prisma-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)
- '@better-auth/telemetry': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
+ '@better-auth/core': 1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
+ '@better-auth/drizzle-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))
+ '@better-auth/kysely-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(kysely@0.29.2)
+ '@better-auth/memory-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)
+ '@better-auth/mongo-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)
+ '@better-auth/prisma-adapter': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)
+ '@better-auth/telemetry': 1.6.15(@better-auth/core@1.6.15(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.1)(@better-fetch/fetch@1.1.21)
+ '@better-auth/utils': 0.4.1
+ '@better-fetch/fetch': 1.1.21
'@noble/ciphers': 2.2.0
- '@noble/hashes': 2.2.0
- better-call: 1.3.7(zod@4.4.3)
+ '@noble/hashes': 2.0.1
+ better-call: 1.3.5(zod@4.4.3)
defu: 6.1.7
jose: 6.2.3
kysely: 0.29.2
- nanostores: 1.4.0
+ nanostores: 1.3.0
zod: 4.4.3
optionalDependencies:
better-sqlite3: 12.11.1
drizzle-kit: 0.31.10
- drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1)
- mysql2: 3.22.5(@types/node@24.13.2)
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1)
+ mysql2: 3.22.5(@types/node@24.13.3)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
pg: 8.22.0
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@24.13.2)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
- vue: 3.5.39(typescript@7.0.1-rc)
+ vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@opentelemetry/api'
- better-auth@1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@26.0.1))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc)):
+ better-call@1.3.5(zod@4.4.3):
dependencies:
- '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0)
- '@better-auth/drizzle-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))
- '@better-auth/kysely-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(kysely@0.29.2)
- '@better-auth/memory-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)
- '@better-auth/mongo-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)
- '@better-auth/prisma-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)
- '@better-auth/telemetry': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.0)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.4.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
- '@noble/ciphers': 2.2.0
- '@noble/hashes': 2.2.0
- better-call: 1.3.7(zod@4.4.3)
- defu: 6.1.7
- jose: 6.2.3
- kysely: 0.29.2
- nanostores: 1.4.0
- zod: 4.4.3
- optionalDependencies:
- better-sqlite3: 12.11.1
- drizzle-kit: 0.31.10
- drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1)
- mysql2: 3.22.5(@types/node@26.0.1)
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
- pg: 8.22.0
- react: 19.2.7
- react-dom: 19.2.7(react@19.2.7)
- vitest: 4.1.9(@opentelemetry/api@1.9.0)(@types/node@26.0.1)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
- vue: 3.5.39(typescript@7.0.1-rc)
- transitivePeerDependencies:
- - '@cloudflare/workers-types'
- - '@opentelemetry/api'
-
- better-call@1.3.7(zod@4.4.3):
- dependencies:
- '@better-auth/utils': 0.4.2
- '@better-fetch/fetch': 1.3.1
+ '@better-auth/utils': 0.4.1
+ '@better-fetch/fetch': 1.1.21
rou3: 0.7.12
- set-cookie-parser: 3.1.1
+ set-cookie-parser: 3.1.0
optionalDependencies:
zod: 4.4.3
better-sqlite3@12.11.1:
dependencies:
bindings: 1.5.0
- prebuild-install: 7.1.3
+ prebuild-install: 7.1.2
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
bidi-js@1.0.3:
dependencies:
@@ -22359,28 +22557,28 @@ snapshots:
http-errors: 2.0.1
iconv-lite: 0.4.24
on-finished: 2.4.1
- qs: 6.15.3
+ qs: 6.15.2
raw-body: 2.5.3
type-is: 1.6.18
unpipe: 1.0.0
transitivePeerDependencies:
- supports-color
- body-parser@2.3.0:
+ body-parser@2.2.2:
dependencies:
bytes: 3.1.2
- content-type: 2.0.0
+ content-type: 1.0.5
debug: 4.4.3
http-errors: 2.0.1
iconv-lite: 0.7.2
on-finished: 2.4.1
- qs: 6.15.3
+ qs: 6.15.2
raw-body: 3.0.2
type-is: 2.1.0
transitivePeerDependencies:
- supports-color
- bonjour-service@1.4.2:
+ bonjour-service@1.4.0:
dependencies:
fast-deep-equal: 3.1.3
multicast-dns: 7.2.5
@@ -22415,21 +22613,25 @@ snapshots:
dependencies:
balanced-match: 1.0.2
+ brace-expansion@5.0.6:
+ dependencies:
+ balanced-match: 4.0.2
+
brace-expansion@5.0.7:
dependencies:
- balanced-match: 4.0.4
+ balanced-match: 4.0.2
braces@3.0.3:
dependencies:
fill-range: 7.1.1
- browserslist@4.28.4:
+ browserslist@4.28.2:
dependencies:
- baseline-browser-mapping: 2.10.40
- caniuse-lite: 1.0.30001800
- electron-to-chromium: 1.5.382
- node-releases: 2.0.50
- update-browserslist-db: 1.2.3(browserslist@4.28.4)
+ baseline-browser-mapping: 2.10.31
+ caniuse-lite: 1.0.30001793
+ electron-to-chromium: 1.5.361
+ node-releases: 2.0.46
+ update-browserslist-db: 1.2.3(browserslist@4.28.2)
buffer-crc32@1.0.0: {}
@@ -22445,7 +22647,7 @@ snapshots:
base64-js: 1.5.1
ieee754: 1.2.1
- buildcheck@0.0.7:
+ buildcheck@0.0.6:
optional: true
bundle-name@4.1.0:
@@ -22477,7 +22679,7 @@ snapshots:
es-errors: 1.3.0
function-bind: 1.1.2
- call-bind@1.0.9:
+ call-bind@1.0.8:
dependencies:
call-bind-apply-helpers: 1.0.2
es-define-property: 1.0.1
@@ -22504,12 +22706,12 @@ snapshots:
caniuse-api@3.0.0:
dependencies:
- browserslist: 4.28.4
- caniuse-lite: 1.0.30001800
+ browserslist: 4.28.2
+ caniuse-lite: 1.0.30001793
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
- caniuse-lite@1.0.30001800: {}
+ caniuse-lite@1.0.30001793: {}
ccount@2.0.1: {}
@@ -22538,7 +22740,7 @@ snapshots:
character-reference-invalid@2.0.1: {}
- chardet@2.2.0: {}
+ chardet@2.1.1: {}
cheerio-select@2.1.0:
dependencies:
@@ -22570,7 +22772,7 @@ snapshots:
parse5: 7.3.0
parse5-htmlparser2-tree-adapter: 7.1.0
parse5-parser-stream: 7.1.2
- undici: 7.28.0
+ undici: 7.25.0
whatwg-mimetype: 4.0.0
chokidar@3.6.0:
@@ -22607,7 +22809,7 @@ snapshots:
clean-stack@2.2.0: {}
- clean-stack@5.3.0:
+ clean-stack@5.2.0:
dependencies:
escape-string-regexp: 5.0.0
@@ -22620,7 +22822,7 @@ snapshots:
mz: 2.7.0
parse5: 5.1.1
parse5-htmlparser2-tree-adapter: 6.0.1
- yargs: 16.2.2
+ yargs: 16.2.0
cli-table3@0.6.5:
dependencies:
@@ -22647,7 +22849,7 @@ snapshots:
cliui@9.0.1:
dependencies:
string-width: 7.2.0
- strip-ansi: 7.2.0
+ strip-ansi: 7.1.2
wrap-ansi: 9.0.2
clone-deep@4.0.1:
@@ -22666,7 +22868,7 @@ snapshots:
dependencies:
'@hapi/bourne': 3.0.0
inflation: 2.1.0
- qs: 6.15.3
+ qs: 6.15.2
raw-body: 2.5.3
type-is: 1.6.18
@@ -22680,24 +22882,24 @@ snapshots:
dependencies:
color-name: 1.1.4
- color-convert@3.1.3:
+ color-convert@3.1.2:
dependencies:
- color-name: 2.1.0
+ color-name: 2.0.2
color-name@1.1.3: {}
color-name@1.1.4: {}
- color-name@2.1.0: {}
+ color-name@2.0.2: {}
- color-string@2.1.4:
+ color-string@2.1.2:
dependencies:
- color-name: 2.1.0
+ color-name: 2.0.2
- color@5.0.3:
+ color@5.0.2:
dependencies:
- color-convert: 3.1.3
- color-string: 2.1.4
+ color-convert: 3.1.2
+ color-string: 2.1.2
colord@2.9.3: {}
@@ -22736,7 +22938,7 @@ snapshots:
crc32-stream: 6.0.0
is-stream: 2.0.1
normalize-path: 3.0.0
- readable-stream: 4.7.0
+ readable-stream: 4.5.2
compressible@2.0.18:
dependencies:
@@ -22792,7 +22994,7 @@ snapshots:
content-type@2.0.0: {}
- conventional-changelog-angular@8.3.1:
+ conventional-changelog-angular@8.0.0:
dependencies:
compare-func: 2.0.0
@@ -22800,19 +23002,18 @@ snapshots:
dependencies:
'@conventional-changelog/template': 1.2.0
- conventional-changelog-writer@8.4.0:
+ conventional-changelog-writer@8.0.0:
dependencies:
- '@simple-libs/stream-utils': 1.2.0
+ '@types/semver': 7.5.8
conventional-commits-filter: 5.0.0
- handlebars: 4.7.9
+ handlebars: 4.7.8
meow: 13.2.0
- semver: 7.8.5
+ semver: 7.7.4
conventional-commits-filter@5.0.0: {}
- conventional-commits-parser@6.4.0:
+ conventional-commits-parser@6.0.0:
dependencies:
- '@simple-libs/stream-utils': 1.2.0
meow: 13.2.0
convert-hrtime@5.0.0: {}
@@ -22821,7 +23022,7 @@ snapshots:
cookie-es@1.2.3: {}
- cookie-es@3.1.1: {}
+ cookie-es@3.0.1: {}
cookie-signature@1.0.7: {}
@@ -22831,7 +23032,7 @@ snapshots:
cookie@1.1.1: {}
- cookie@2.0.0: {}
+ cookie@2.0.1: {}
cookies@0.9.1:
dependencies:
@@ -22844,7 +23045,7 @@ snapshots:
copy-text-to-clipboard@3.2.2: {}
- copy-webpack-plugin@11.0.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ copy-webpack-plugin@11.0.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
fast-glob: 3.3.3
glob-parent: 6.0.2
@@ -22852,11 +23053,11 @@ snapshots:
normalize-path: 3.0.0
schema-utils: 4.3.3
serialize-javascript: 6.0.2
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
core-js-compat@3.49.0:
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
core-js@3.49.0: {}
@@ -22875,28 +23076,28 @@ snapshots:
dependencies:
layout-base: 2.0.1
- cosmiconfig@8.3.6(typescript@7.0.1-rc):
+ cosmiconfig@8.3.6(typescript@6.0.3):
dependencies:
- import-fresh: 3.3.1
- js-yaml: 4.3.0
+ import-fresh: 3.3.0
+ js-yaml: 4.1.1
parse-json: 5.2.0
path-type: 4.0.0
optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
- cosmiconfig@9.0.2(typescript@7.0.1-rc):
+ cosmiconfig@9.0.0(typescript@6.0.3):
dependencies:
env-paths: 2.2.1
- import-fresh: 3.3.1
- js-yaml: 4.3.0
+ import-fresh: 3.3.0
+ js-yaml: 4.1.1
parse-json: 5.2.0
optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
cpu-features@0.0.10:
dependencies:
- buildcheck: 0.0.7
- nan: 2.28.0
+ buildcheck: 0.0.6
+ nan: 2.20.0
optional: true
crc-32@1.2.2: {}
@@ -22904,9 +23105,9 @@ snapshots:
crc32-stream@6.0.0:
dependencies:
crc-32: 1.2.2
- readable-stream: 4.7.0
+ readable-stream: 4.5.2
- crelt@1.0.7: {}
+ crelt@1.0.6: {}
croner@10.0.1: {}
@@ -22934,7 +23135,7 @@ snapshots:
css-blank-pseudo@7.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
css-declaration-sorter@7.4.0(postcss@8.5.16):
dependencies:
@@ -22942,12 +23143,12 @@ snapshots:
css-has-pseudo@7.0.3(postcss@8.5.16):
dependencies:
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.4)
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-value-parser: 4.2.0
- css-loader@6.11.0(@rspack/core@1.7.12(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ css-loader@6.11.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
icss-utils: 5.1.0(postcss@8.5.16)
postcss: 8.5.16
@@ -22956,12 +23157,12 @@ snapshots:
postcss-modules-scope: 3.2.1(postcss@8.5.16)
postcss-modules-values: 4.0.0(postcss@8.5.16)
postcss-value-parser: 4.2.0
- semver: 7.8.5
+ semver: 7.7.4
optionalDependencies:
- '@rspack/core': 1.7.12(@swc/helpers@0.5.23)
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ '@rspack/core': 1.7.11(@swc/helpers@0.5.15)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
- css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.28.0)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
cssnano: 6.1.2(postcss@8.5.16)
@@ -22969,10 +23170,10 @@ snapshots:
postcss: 8.5.16
schema-utils: 4.3.3
serialize-javascript: 6.0.2
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
optionalDependencies:
clean-css: 5.3.3
- esbuild: 0.28.1
+ esbuild: 0.28.0
css-prefers-color-scheme@10.0.0(postcss@8.5.16):
dependencies:
@@ -23019,8 +23220,8 @@ snapshots:
cssnano-preset-advanced@6.1.2(postcss@8.5.16):
dependencies:
- autoprefixer: 10.5.2(postcss@8.5.16)
- browserslist: 4.28.4
+ autoprefixer: 10.5.0(postcss@8.5.16)
+ browserslist: 4.28.2
cssnano-preset-default: 6.1.2(postcss@8.5.16)
postcss: 8.5.16
postcss-discard-unused: 6.0.5(postcss@8.5.16)
@@ -23030,7 +23231,7 @@ snapshots:
cssnano-preset-default@6.1.2(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
css-declaration-sorter: 7.4.0(postcss@8.5.16)
cssnano-utils: 4.0.2(postcss@8.5.16)
postcss: 8.5.16
@@ -23078,11 +23279,11 @@ snapshots:
csstype@3.2.3: {}
- cva@1.0.0-beta.4(typescript@7.0.1-rc):
+ cva@1.0.0-beta.4(typescript@6.0.3):
dependencies:
clsx: 2.1.1
optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0):
dependencies:
@@ -23155,7 +23356,7 @@ snapshots:
d3-format@1.4.5: {}
- d3-format@3.1.2: {}
+ d3-format@3.1.0: {}
d3-geo@3.1.1:
dependencies:
@@ -23190,7 +23391,7 @@ snapshots:
d3-scale@4.0.2:
dependencies:
d3-array: 3.2.4
- d3-format: 3.1.2
+ d3-format: 3.1.0
d3-interpolate: 3.0.1
d3-time: 3.1.0
d3-time-format: 4.1.0
@@ -23207,7 +23408,7 @@ snapshots:
d3-time-format@3.0.0:
dependencies:
- d3-time: 2.1.1
+ d3-time: 1.1.0
d3-time-format@4.1.0:
dependencies:
@@ -23215,10 +23416,6 @@ snapshots:
d3-time@1.1.0: {}
- d3-time@2.1.1:
- dependencies:
- d3-array: 2.12.1
-
d3-time@3.1.0:
dependencies:
d3-array: 3.2.4
@@ -23257,7 +23454,7 @@ snapshots:
d3-ease: 3.0.1
d3-fetch: 3.0.1
d3-force: 3.0.0
- d3-format: 3.1.2
+ d3-format: 3.1.0
d3-geo: 3.1.1
d3-hierarchy: 3.1.2
d3-interpolate: 3.0.1
@@ -23278,12 +23475,12 @@ snapshots:
dagre-d3-es@7.0.14:
dependencies:
d3: 7.9.0
- lodash-es: 4.18.1
+ lodash-es: 4.17.21
- data-urls@7.0.0(@noble/hashes@2.2.0):
+ data-urls@7.0.0(@noble/hashes@2.0.1):
dependencies:
whatwg-mimetype: 5.0.0
- whatwg-url: 16.0.1(@noble/hashes@2.2.0)
+ whatwg-url: 16.0.1(@noble/hashes@2.0.1)
transitivePeerDependencies:
- '@noble/hashes'
@@ -23303,7 +23500,7 @@ snapshots:
decimal.js@10.6.0: {}
- decode-named-character-reference@1.3.0:
+ decode-named-character-reference@1.1.0:
dependencies:
character-entities: 2.0.2
@@ -23365,6 +23562,8 @@ snapshots:
destroy@1.2.0: {}
+ detect-libc@1.0.3: {}
+
detect-libc@2.1.2: {}
detect-node-es@1.1.0: {}
@@ -23390,7 +23589,7 @@ snapshots:
dns-caching@0.2.9:
dependencies:
- lru-cache: 11.5.1
+ lru-cache: 11.3.5
dns-packet@5.6.1:
dependencies:
@@ -23405,24 +23604,35 @@ snapshots:
debug: 4.4.3
readable-stream: 3.6.2
split-ca: 1.0.1
- ssh2: 1.17.0
+ ssh2: 1.16.0
+ transitivePeerDependencies:
+ - supports-color
+
+ dockerode@5.0.0:
+ dependencies:
+ '@balena/dockerignore': 1.0.2
+ '@grpc/grpc-js': 1.12.5
+ '@grpc/proto-loader': 0.7.13
+ docker-modem: 5.0.7
+ protobufjs: 7.4.0
+ tar-fs: 2.1.4
transitivePeerDependencies:
- supports-color
dockerode@5.0.1:
dependencies:
'@balena/dockerignore': 1.0.2
- '@grpc/grpc-js': 1.14.4
- '@grpc/proto-loader': 0.7.15
+ '@grpc/grpc-js': 1.12.5
+ '@grpc/proto-loader': 0.7.13
docker-modem: 5.0.7
- protobufjs: 7.6.4
- tar-fs: 2.1.5
+ protobufjs: 7.4.0
+ tar-fs: 2.1.4
transitivePeerDependencies:
- supports-color
- docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)):
+ docusaurus-plugin-image-zoom@3.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)):
dependencies:
- '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.23)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.12(@swc/helpers@0.5.23))(@swc/core@1.15.43(@swc/helpers@0.5.23))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@7.0.1-rc)
+ '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@swc/helpers@0.5.15)(esbuild@0.28.1)(postcss@8.5.16))(@rspack/core@1.7.11(@swc/helpers@0.5.15))(@swc/core@1.15.3(@swc/helpers@0.5.15))(@types/react@19.2.17)(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(typescript@6.0.3)
medium-zoom: 1.1.0
validate-peer-dependencies: 2.2.0
@@ -23508,35 +23718,37 @@ snapshots:
'@drizzle-team/brocli': 0.10.2
'@esbuild-kit/esm-loader': 2.6.5
esbuild: 0.25.12
- tsx: 4.22.4
+ tsx: 4.21.0
- drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1):
+ drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1):
optionalDependencies:
'@libsql/client-wasm': 0.14.0
'@opentelemetry/api': 1.9.0
'@types/better-sqlite3': 7.6.13
'@types/pg': 8.20.0
better-sqlite3: 12.11.1
+ gel: 2.0.0
kysely: 0.29.2
mysql2: 3.22.5(@types/node@24.13.2)
pg: 8.22.0
sql.js: 1.14.1
- drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1):
+ drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1):
optionalDependencies:
'@libsql/client-wasm': 0.14.0
'@opentelemetry/api': 1.9.0
'@types/better-sqlite3': 7.6.13
'@types/pg': 8.20.0
better-sqlite3: 12.11.1
+ gel: 2.0.0
kysely: 0.29.2
- mysql2: 3.22.5(@types/node@26.0.1)
+ mysql2: 3.22.5(@types/node@24.13.3)
pg: 8.22.0
sql.js: 1.14.1
- drizzle-zod@0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3):
+ drizzle-zod@0.8.3(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))(zod@4.4.3):
dependencies:
- drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1)
+ drizzle-orm: 0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1)
zod: 4.4.3
dunder-proto@1.0.1:
@@ -23555,7 +23767,7 @@ snapshots:
ee-first@1.1.1: {}
- electron-to-chromium@1.5.382: {}
+ electron-to-chromium@1.5.361: {}
emoji-regex@10.6.0: {}
@@ -23578,7 +23790,7 @@ snapshots:
iconv-lite: 0.6.3
whatwg-encoding: 3.1.1
- end-of-stream@1.4.5:
+ end-of-stream@1.4.4:
dependencies:
once: 1.4.0
@@ -23587,7 +23799,7 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.3.3
- enhanced-resolve@5.24.1:
+ enhanced-resolve@5.22.0:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.3
@@ -23609,11 +23821,14 @@ snapshots:
env-paths@2.2.1: {}
+ env-paths@3.0.0:
+ optional: true
+
environment@1.1.0: {}
error-causes@3.0.2: {}
- error-ex@1.3.4:
+ error-ex@1.3.2:
dependencies:
is-arrayish: 0.2.1
@@ -23621,9 +23836,9 @@ snapshots:
es-errors@1.3.0: {}
- es-module-lexer@2.2.0: {}
+ es-module-lexer@2.1.0: {}
- es-object-atoms@1.1.2:
+ es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
@@ -23634,7 +23849,7 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.4
- es-toolkit@1.49.0: {}
+ es-toolkit@1.46.1: {}
esast-util-from-estree@2.0.0:
dependencies:
@@ -23646,9 +23861,9 @@ snapshots:
esast-util-from-js@2.0.1:
dependencies:
'@types/estree-jsx': 1.0.5
- acorn: 8.17.0
+ acorn: 8.16.0
esast-util-from-estree: 2.0.0
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
esbuild@0.25.12:
optionalDependencies:
@@ -23679,6 +23894,64 @@ snapshots:
'@esbuild/win32-ia32': 0.25.12
'@esbuild/win32-x64': 0.25.12
+ esbuild@0.27.7:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.7
+ '@esbuild/android-arm': 0.27.7
+ '@esbuild/android-arm64': 0.27.7
+ '@esbuild/android-x64': 0.27.7
+ '@esbuild/darwin-arm64': 0.27.7
+ '@esbuild/darwin-x64': 0.27.7
+ '@esbuild/freebsd-arm64': 0.27.7
+ '@esbuild/freebsd-x64': 0.27.7
+ '@esbuild/linux-arm': 0.27.7
+ '@esbuild/linux-arm64': 0.27.7
+ '@esbuild/linux-ia32': 0.27.7
+ '@esbuild/linux-loong64': 0.27.7
+ '@esbuild/linux-mips64el': 0.27.7
+ '@esbuild/linux-ppc64': 0.27.7
+ '@esbuild/linux-riscv64': 0.27.7
+ '@esbuild/linux-s390x': 0.27.7
+ '@esbuild/linux-x64': 0.27.7
+ '@esbuild/netbsd-arm64': 0.27.7
+ '@esbuild/netbsd-x64': 0.27.7
+ '@esbuild/openbsd-arm64': 0.27.7
+ '@esbuild/openbsd-x64': 0.27.7
+ '@esbuild/openharmony-arm64': 0.27.7
+ '@esbuild/sunos-x64': 0.27.7
+ '@esbuild/win32-arm64': 0.27.7
+ '@esbuild/win32-ia32': 0.27.7
+ '@esbuild/win32-x64': 0.27.7
+
+ esbuild@0.28.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.28.0
+ '@esbuild/android-arm': 0.28.0
+ '@esbuild/android-arm64': 0.28.0
+ '@esbuild/android-x64': 0.28.0
+ '@esbuild/darwin-arm64': 0.28.0
+ '@esbuild/darwin-x64': 0.28.0
+ '@esbuild/freebsd-arm64': 0.28.0
+ '@esbuild/freebsd-x64': 0.28.0
+ '@esbuild/linux-arm': 0.28.0
+ '@esbuild/linux-arm64': 0.28.0
+ '@esbuild/linux-ia32': 0.28.0
+ '@esbuild/linux-loong64': 0.28.0
+ '@esbuild/linux-mips64el': 0.28.0
+ '@esbuild/linux-ppc64': 0.28.0
+ '@esbuild/linux-riscv64': 0.28.0
+ '@esbuild/linux-s390x': 0.28.0
+ '@esbuild/linux-x64': 0.28.0
+ '@esbuild/netbsd-arm64': 0.28.0
+ '@esbuild/netbsd-x64': 0.28.0
+ '@esbuild/openbsd-arm64': 0.28.0
+ '@esbuild/openbsd-x64': 0.28.0
+ '@esbuild/openharmony-arm64': 0.28.0
+ '@esbuild/sunos-x64': 0.28.0
+ '@esbuild/win32-arm64': 0.28.0
+ '@esbuild/win32-ia32': 0.28.0
+ '@esbuild/win32-x64': 0.28.0
+
esbuild@0.28.1:
optionalDependencies:
'@esbuild/aix-ppc64': 0.28.1
@@ -23737,7 +24010,7 @@ snapshots:
estree-util-attach-comments@3.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
estree-util-build-jsx@3.0.1:
dependencies:
@@ -23750,7 +24023,7 @@ snapshots:
estree-util-scope@1.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
devlop: 1.1.0
estree-util-to-js@2.0.0:
@@ -23761,7 +24034,7 @@ snapshots:
estree-util-value-to-estree@3.5.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
estree-util-visit@2.0.0:
dependencies:
@@ -23772,7 +24045,7 @@ snapshots:
estree-walker@3.0.3:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
esutils@2.0.3: {}
@@ -23782,7 +24055,7 @@ snapshots:
eval@0.1.8:
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
require-like: 0.1.2
event-target-shim@5.0.1: {}
@@ -23795,12 +24068,6 @@ snapshots:
eventemitter3@5.0.4: {}
- events-universal@1.0.1:
- dependencies:
- bare-events: 2.9.1
- transitivePeerDependencies:
- - bare-abort-controller
-
events@3.3.0: {}
eventsource-parser@3.1.0: {}
@@ -23833,24 +24100,24 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
- execa@9.6.1:
+ execa@9.5.2:
dependencies:
'@sindresorhus/merge-streams': 4.0.0
cross-spawn: 7.0.6
figures: 6.1.0
get-stream: 9.0.1
- human-signals: 8.0.1
+ human-signals: 8.0.0
is-plain-obj: 4.1.0
is-stream: 4.0.1
npm-run-path: 6.0.0
pretty-ms: 9.3.0
signal-exit: 4.1.0
strip-final-newline: 4.0.0
- yoctocolors: 2.1.2
+ yoctocolors: 2.1.1
expand-template@2.0.3: {}
- expect-type@1.4.0: {}
+ expect-type@1.3.0: {}
express-rate-limit@8.5.2(express@5.2.1):
dependencies:
@@ -23880,7 +24147,7 @@ snapshots:
parseurl: 1.3.3
path-to-regexp: 0.1.13
proxy-addr: 2.0.7
- qs: 6.15.3
+ qs: 6.15.2
range-parser: 1.2.1
safe-buffer: 5.2.1
send: 0.19.2
@@ -23896,7 +24163,7 @@ snapshots:
express@5.2.1:
dependencies:
accepts: 2.0.0
- body-parser: 2.3.0
+ body-parser: 2.2.2
content-disposition: 1.1.0
content-type: 1.0.5
cookie: 0.7.2
@@ -23915,8 +24182,8 @@ snapshots:
once: 1.4.0
parseurl: 1.3.3
proxy-addr: 2.0.7
- qs: 6.15.3
- range-parser: 1.3.0
+ qs: 6.15.2
+ range-parser: 1.2.1
router: 2.2.0
send: 1.2.1
serve-static: 2.2.1
@@ -23932,13 +24199,15 @@ snapshots:
extend@3.0.2: {}
+ fast-content-type-parse@3.0.0: {}
+
fast-decode-uri-component@1.0.1: {}
fast-deep-equal@3.1.3: {}
fast-diff@1.3.0: {}
- fast-equals@5.4.0: {}
+ fast-equals@5.3.3: {}
fast-fifo@1.3.2: {}
@@ -23952,12 +24221,12 @@ snapshots:
fast-json-stable-stringify@2.1.0: {}
- fast-json-stringify@6.4.0:
+ fast-json-stringify@6.3.0:
dependencies:
'@fastify/merge-json-schemas': 0.2.1
- ajv: 8.20.0
- ajv-formats: 3.0.1(ajv@8.20.0)
- fast-uri: 3.1.3
+ ajv: 8.18.0
+ ajv-formats: 3.0.1(ajv@8.18.0)
+ fast-uri: 3.1.0
json-schema-ref-resolver: 3.0.0
rfdc: 1.4.1
@@ -23973,7 +24242,7 @@ snapshots:
fast-string-truncated-width: 3.0.3
optional: true
- fast-uri@3.1.3: {}
+ fast-uri@3.1.0: {}
fast-wrap-ansi@0.2.2:
dependencies:
@@ -23982,7 +24251,15 @@ snapshots:
fast-xml-builder@1.2.0:
dependencies:
- path-expression-matcher: 1.6.1
+ path-expression-matcher: 1.5.0
+ xml-naming: 0.1.0
+
+ fast-xml-parser@5.8.0:
+ dependencies:
+ '@nodable/entities': 2.1.0
+ fast-xml-builder: 1.2.0
+ path-expression-matcher: 1.5.0
+ strnum: 2.3.0
xml-naming: 0.1.0
fast-xml-parser@5.9.3:
@@ -23990,7 +24267,7 @@ snapshots:
'@nodable/entities': 2.2.0
fast-xml-builder: 1.2.0
is-unsafe: 1.0.1
- path-expression-matcher: 1.6.1
+ path-expression-matcher: 1.5.0
strnum: 2.4.1
xml-naming: 0.1.0
@@ -24002,15 +24279,15 @@ snapshots:
'@fastify/proxy-addr': 5.1.0
abstract-logging: 2.0.1
avvio: 9.2.0
- fast-json-stringify: 6.4.0
+ fast-json-stringify: 6.3.0
find-my-way: 9.6.0
light-my-request: 6.6.0
pino: 10.3.1
process-warning: 5.0.0
rfdc: 1.4.1
secure-json-parse: 4.1.0
- semver: 7.8.5
- toad-cache: 3.7.1
+ semver: 7.7.4
+ toad-cache: 3.7.0
fastq@1.20.1:
dependencies:
@@ -24036,7 +24313,7 @@ snapshots:
fflate@0.4.8: {}
- fflate@0.8.3: {}
+ fflate@0.8.2: {}
figures@2.0.0:
dependencies:
@@ -24046,11 +24323,11 @@ snapshots:
dependencies:
is-unicode-supported: 2.1.0
- file-loader@6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
file-selector@2.1.2:
dependencies:
@@ -24094,7 +24371,7 @@ snapshots:
dependencies:
fast-deep-equal: 3.1.3
fast-querystring: 1.1.2
- safe-regex2: 5.1.1
+ safe-regex2: 5.0.0
find-up-simple@1.0.1: {}
@@ -24110,7 +24387,7 @@ snapshots:
find-versions@6.0.0:
dependencies:
semver-regex: 4.0.5
- super-regex: 1.1.0
+ super-regex: 1.0.0
flag-icons@7.5.0: {}
@@ -24122,7 +24399,7 @@ snapshots:
focus-trap@7.8.0:
dependencies:
- tabbable: 6.5.0
+ tabbable: 6.4.0
follow-redirects@1.16.0: {}
@@ -24153,10 +24430,10 @@ snapshots:
fs-constants@1.0.0: {}
- fs-extra@11.3.6:
+ fs-extra@11.2.0:
dependencies:
graceful-fs: 4.2.11
- jsonfile: 6.2.1
+ jsonfile: 6.1.0
universalify: 2.0.1
fsevents@2.3.2:
@@ -24171,6 +24448,18 @@ snapshots:
fuse.js@7.4.2: {}
+ gel@2.0.0:
+ dependencies:
+ '@petamoriken/float16': 3.9.3
+ debug: 4.4.3
+ env-paths: 3.0.0
+ semver: 7.7.4
+ shell-quote: 1.8.4
+ which: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
gemoji@6.1.0: {}
generate-function@2.3.1:
@@ -24183,14 +24472,14 @@ snapshots:
get-caller-file@2.0.5: {}
- get-east-asian-width@1.6.0: {}
+ get-east-asian-width@1.4.0: {}
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
es-define-property: 1.0.1
es-errors: 1.3.0
- es-object-atoms: 1.1.2
+ es-object-atoms: 1.1.1
function-bind: 1.1.2
get-proto: 1.0.1
gopd: 1.2.0
@@ -24209,7 +24498,7 @@ snapshots:
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
- es-object-atoms: 1.1.2
+ es-object-atoms: 1.1.1
get-stream@6.0.1: {}
@@ -24220,7 +24509,7 @@ snapshots:
'@sec-ant/readable-stream': 0.4.1
is-stream: 4.0.1
- get-tsconfig@4.14.0:
+ get-tsconfig@4.13.6:
dependencies:
resolve-pkg-maps: 1.0.0
@@ -24249,6 +24538,8 @@ snapshots:
dependencies:
tslib: 2.8.1
+ glob-to-regexp@0.4.1: {}
+
glob@10.5.0:
dependencies:
foreground-child: 3.3.1
@@ -24270,7 +24561,7 @@ snapshots:
global@4.4.0:
dependencies:
- min-document: 2.19.2
+ min-document: 2.19.0
process: 0.11.10
globby@11.1.0:
@@ -24312,12 +24603,12 @@ snapshots:
graceful-fs@4.2.11: {}
- graphql@16.14.2:
+ graphql@16.14.0:
optional: true
gray-matter@4.0.3:
dependencies:
- js-yaml: 3.15.0
+ js-yaml: 3.14.2
kind-of: 6.0.3
section-matter: 1.0.0
strip-bom-string: 1.0.0
@@ -24344,7 +24635,7 @@ snapshots:
handle-thing@2.0.1: {}
- handlebars@4.7.9:
+ handlebars@4.7.8:
dependencies:
minimist: 1.2.8
neo-async: 2.6.2
@@ -24386,7 +24677,7 @@ snapshots:
hast-util-phrasing: 3.0.1
hast-util-whitespace: 3.0.0
html-whitespace-sensitive-tag-names: 3.0.1
- unist-util-visit-parents: 6.0.2
+ unist-util-visit-parents: 6.0.1
hast-util-from-html@2.0.3:
dependencies:
@@ -24395,7 +24686,7 @@ snapshots:
hast-util-from-parse5: 8.0.3
parse5: 7.3.0
vfile: 6.0.3
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
hast-util-from-parse5@8.0.3:
dependencies:
@@ -24403,7 +24694,7 @@ snapshots:
'@types/unist': 3.0.3
devlop: 1.1.0
hastscript: 9.0.1
- property-information: 7.2.0
+ property-information: 7.0.0
vfile: 6.0.3
vfile-location: 5.0.3
web-namespaces: 2.0.1
@@ -24426,7 +24717,7 @@ snapshots:
hast-util-embedded: 3.0.0
hast-util-is-element: 3.0.0
hast-util-whitespace: 3.0.0
- unist-util-is: 6.0.1
+ unist-util-is: 6.0.0
hast-util-parse-selector@4.0.0:
dependencies:
@@ -24444,11 +24735,11 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
'@types/unist': 3.0.3
- '@ungap/structured-clone': 1.3.2
+ '@ungap/structured-clone': 1.3.0
hast-util-from-parse5: 8.0.3
hast-util-to-parse5: 8.0.1
html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.1
+ mdast-util-to-hast: 13.2.0
parse5: 7.3.0
unist-util-position: 5.0.0
unist-util-visit: 5.1.0
@@ -24459,7 +24750,7 @@ snapshots:
hast-util-sanitize@5.0.2:
dependencies:
'@types/hast': 3.0.4
- '@ungap/structured-clone': 1.3.2
+ '@ungap/structured-clone': 1.3.0
unist-util-position: 5.0.0
hast-util-select@6.0.4:
@@ -24475,14 +24766,14 @@ snapshots:
hast-util-to-string: 3.0.1
hast-util-whitespace: 3.0.0
nth-check: 2.1.1
- property-information: 7.2.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
unist-util-visit: 5.1.0
zwitch: 2.0.4
hast-util-to-estree@3.1.3:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
@@ -24493,9 +24784,9 @@ snapshots:
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.2.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
- style-to-js: 1.1.21
+ style-to-js: 1.1.16
unist-util-position: 5.0.0
zwitch: 2.0.4
transitivePeerDependencies:
@@ -24509,15 +24800,15 @@ snapshots:
comma-separated-tokens: 2.0.3
hast-util-whitespace: 3.0.0
html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.1
- property-information: 7.2.0
+ mdast-util-to-hast: 13.2.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
stringify-entities: 4.0.4
zwitch: 2.0.4
hast-util-to-jsx-runtime@2.3.6:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/hast': 3.0.4
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
@@ -24527,11 +24818,11 @@ snapshots:
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.2.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
- style-to-js: 1.1.21
+ style-to-js: 1.1.16
unist-util-position: 5.0.0
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
transitivePeerDependencies:
- supports-color
@@ -24539,13 +24830,13 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.3.2
+ '@ungap/structured-clone': 1.3.0
hast-util-phrasing: 3.0.1
hast-util-to-html: 9.0.5
hast-util-to-text: 4.0.2
hast-util-whitespace: 3.0.0
mdast-util-phrasing: 4.1.0
- mdast-util-to-hast: 13.2.1
+ mdast-util-to-hast: 13.2.0
mdast-util-to-string: 4.0.0
rehype-minify-whitespace: 6.0.2
trim-trailing-lines: 2.1.0
@@ -24557,7 +24848,7 @@ snapshots:
'@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
devlop: 1.1.0
- property-information: 7.2.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
web-namespaces: 2.0.1
zwitch: 2.0.4
@@ -24582,7 +24873,7 @@ snapshots:
'@types/hast': 3.0.4
comma-separated-tokens: 2.0.3
hast-util-parse-selector: 4.0.0
- property-information: 7.2.0
+ property-information: 7.0.0
space-separated-tokens: 2.0.2
he@1.2.0: {}
@@ -24590,7 +24881,7 @@ snapshots:
headers-polyfill@5.0.1:
dependencies:
'@types/set-cookie-parser': 2.4.10
- set-cookie-parser: 3.1.1
+ set-cookie-parser: 3.1.0
optional: true
highlight.js@10.7.3: {}
@@ -24610,7 +24901,7 @@ snapshots:
dependencies:
react-is: 19.2.7
- hono@4.12.27: {}
+ hono@4.12.24: {}
hook-std@4.0.0: {}
@@ -24620,9 +24911,9 @@ snapshots:
dependencies:
lru-cache: 10.4.3
- hosted-git-info@9.0.3:
+ hosted-git-info@9.0.2:
dependencies:
- lru-cache: 11.5.1
+ lru-cache: 11.3.5
hpack.js@2.1.6:
dependencies:
@@ -24633,9 +24924,9 @@ snapshots:
hpagent@1.2.0: {}
- html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0):
+ html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1):
dependencies:
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
+ '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
transitivePeerDependencies:
- '@noble/hashes'
@@ -24651,7 +24942,7 @@ snapshots:
he: 1.2.0
param-case: 3.0.4
relateurl: 0.2.7
- terser: 5.48.0
+ terser: 5.46.1
html-minifier-terser@7.2.0:
dependencies:
@@ -24661,7 +24952,7 @@ snapshots:
entities: 4.5.0
param-case: 3.0.4
relateurl: 0.2.7
- terser: 5.48.0
+ terser: 5.46.1
html-tags@3.3.1: {}
@@ -24669,7 +24960,7 @@ snapshots:
html-void-elements@3.0.0: {}
- html-webpack-plugin@5.6.7(@rspack/core@1.7.12(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ html-webpack-plugin@5.6.7(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
'@types/html-minifier-terser': 6.1.0
html-minifier-terser: 6.1.0
@@ -24677,8 +24968,8 @@ snapshots:
pretty-error: 4.0.0
tapable: 2.3.3
optionalDependencies:
- '@rspack/core': 1.7.12(@swc/helpers@0.5.23)
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ '@rspack/core': 1.7.11(@swc/helpers@0.5.15)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
html-whitespace-sensitive-tag-names@3.0.1: {}
@@ -24707,7 +24998,7 @@ snapshots:
http-cookie-agent@6.0.8(tough-cookie@5.1.2)(undici@7.28.0):
dependencies:
- agent-base: 7.1.4
+ agent-base: 7.1.3
tough-cookie: 5.1.2
optionalDependencies:
undici: 7.28.0
@@ -24732,16 +25023,14 @@ snapshots:
http-parser-js@0.5.10: {}
- http-proxy-agent@9.1.0:
+ http-proxy-agent@9.0.0:
dependencies:
agent-base: 9.0.0
debug: 4.4.3
- proxy-agent-negotiate: 1.1.0
transitivePeerDependencies:
- - kerberos
- supports-color
- http-proxy-middleware@2.0.10(@types/express@4.17.25):
+ http-proxy-middleware@2.0.9(@types/express@4.17.25):
dependencies:
'@types/http-proxy': 1.17.17
http-proxy: 1.18.1
@@ -24766,27 +25055,18 @@ snapshots:
quick-lru: 5.1.1
resolve-alpn: 1.2.1
- https-proxy-agent@5.0.1:
- dependencies:
- agent-base: 6.0.2
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- https-proxy-agent@9.1.0:
+ https-proxy-agent@9.0.0:
dependencies:
agent-base: 9.0.0
debug: 4.4.3
- proxy-agent-negotiate: 1.1.0
transitivePeerDependencies:
- - kerberos
- supports-color
human-signals@2.1.0: {}
human-signals@5.0.0: {}
- human-signals@8.0.1: {}
+ human-signals@8.0.0: {}
hyperdyperid@1.2.0: {}
@@ -24810,7 +25090,7 @@ snapshots:
icu-minify@4.13.1:
dependencies:
- '@formatjs/icu-messageformat-parser': 3.5.12
+ '@formatjs/icu-messageformat-parser': 3.5.0
identifier-regex@1.0.1:
dependencies:
@@ -24824,11 +25104,13 @@ snapshots:
immediate@3.0.6: {}
+ immer@11.1.4: {}
+
immer@11.1.9: {}
- immutable@5.1.9: {}
+ immutable@5.1.5: {}
- import-fresh@3.3.1:
+ import-fresh@3.3.0:
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
@@ -24862,16 +25144,18 @@ snapshots:
ini@2.0.0: {}
- inline-style-parser@0.2.7: {}
+ inline-style-parser@0.2.4: {}
internmap@1.0.1: {}
internmap@2.0.3: {}
- intl-messageformat@11.2.9:
+ intl-messageformat@11.1.1:
dependencies:
- '@formatjs/fast-memoize': 3.1.6
- '@formatjs/icu-messageformat-parser': 3.5.12
+ '@formatjs/ecma402-abstract': 3.1.0
+ '@formatjs/fast-memoize': 3.1.0
+ '@formatjs/icu-messageformat-parser': 3.5.0
+ tslib: 2.8.1
invariant@2.2.4:
dependencies:
@@ -24891,9 +25175,14 @@ snapshots:
ip-address@10.2.0: {}
+ ip-address@9.0.5:
+ dependencies:
+ jsbn: 1.1.0
+ sprintf-js: 1.1.3
+
ipaddr.js@1.9.1: {}
- ipaddr.js@2.4.0: {}
+ ipaddr.js@2.3.0: {}
iron-webcrypto@1.2.1: {}
@@ -24945,7 +25234,7 @@ snapshots:
is-identifier@1.0.1:
dependencies:
identifier-regex: 1.0.1
- super-regex: 1.1.0
+ super-regex: 1.0.0
is-inside-container@1.0.0:
dependencies:
@@ -25021,12 +25310,15 @@ snapshots:
isexe@2.0.0: {}
+ isexe@3.1.5:
+ optional: true
+
isobject@3.0.1: {}
- isomorphic-dompurify@3.18.0(@noble/hashes@2.2.0):
+ isomorphic-dompurify@3.18.0(@noble/hashes@2.0.1):
dependencies:
dompurify: 3.4.11
- jsdom: 29.1.1(@noble/hashes@2.2.0)
+ jsdom: 29.1.1(@noble/hashes@2.0.1)
transitivePeerDependencies:
- '@noble/hashes'
- canvas
@@ -25035,7 +25327,7 @@ snapshots:
dependencies:
ws: 8.21.0
- issue-parser@7.0.2:
+ issue-parser@7.0.1:
dependencies:
lodash.capitalize: 4.2.1
lodash.escaperegexp: 4.1.2
@@ -25062,26 +25354,30 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
+ jackspeak@4.2.3:
+ dependencies:
+ '@isaacs/cliui': 9.0.0
+
java-properties@1.0.2: {}
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
- picomatch: 2.3.2
+ picomatch: 2.3.1
jest-worker@27.5.1:
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@29.7.0:
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.2
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -25090,7 +25386,7 @@ snapshots:
jiti@2.7.0: {}
- joi@17.13.4:
+ joi@17.13.3:
dependencies:
'@hapi/hoek': 9.3.0
'@hapi/topo': 5.1.0
@@ -25100,41 +25396,43 @@ snapshots:
jose@6.2.3: {}
- jotai@2.20.1(@babel/core@7.29.7)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7):
+ jotai@2.20.1(@babel/core@7.29.0)(@babel/template@7.29.7)(@types/react@19.2.17)(react@19.2.7):
optionalDependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
'@babel/template': 7.29.7
'@types/react': 19.2.17
react: 19.2.7
- js-base64@3.8.0: {}
+ js-base64@3.7.8: {}
js-tokens@10.0.0: {}
js-tokens@4.0.0: {}
- js-yaml@3.15.0:
+ js-yaml@3.14.2:
dependencies:
argparse: 1.0.10
esprima: 4.0.1
- js-yaml@4.3.0:
+ js-yaml@4.1.1:
dependencies:
argparse: 2.0.1
- jsdom@29.1.1(@noble/hashes@2.2.0):
+ jsbn@1.1.0: {}
+
+ jsdom@29.1.1(@noble/hashes@2.0.1):
dependencies:
'@asamuzakjp/css-color': 5.1.11
'@asamuzakjp/dom-selector': 7.1.1
'@bramus/specificity': 2.4.2
- '@csstools/css-syntax-patches-for-csstree': 1.1.6(css-tree@3.2.1)
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
+ '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1)
+ '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
css-tree: 3.2.1
- data-urls: 7.0.0(@noble/hashes@2.2.0)
+ data-urls: 7.0.0(@noble/hashes@2.0.1)
decimal.js: 10.6.0
- html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0)
+ html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1)
is-potential-custom-element-name: 1.0.1
- lru-cache: 11.5.1
+ lru-cache: 11.3.5
parse5: 8.0.1
saxes: 6.0.0
symbol-tree: 3.2.4
@@ -25143,13 +25441,15 @@ snapshots:
w3c-xmlserializer: 5.0.0
webidl-conversions: 8.0.1
whatwg-mimetype: 5.0.0
- whatwg-url: 16.0.1(@noble/hashes@2.2.0)
+ whatwg-url: 16.0.1(@noble/hashes@2.0.1)
xml-name-validator: 5.0.0
transitivePeerDependencies:
- '@noble/hashes'
jsep@1.4.0: {}
+ jsesc@3.0.2: {}
+
jsesc@3.1.0: {}
json-buffer@3.0.1: {}
@@ -25170,13 +25470,11 @@ snapshots:
json-schema@0.4.0: {}
- json-with-bigint@3.5.8: {}
-
json5@2.2.3: {}
jsonc-parser@3.3.1: {}
- jsonfile@6.2.1:
+ jsonfile@6.1.0:
dependencies:
universalify: 2.0.1
optionalDependencies:
@@ -25230,7 +25528,7 @@ snapshots:
launch-editor@2.14.1:
dependencies:
picocolors: 1.1.1
- shell-quote: 1.9.0
+ shell-quote: 1.8.4
layout-base@1.0.2: {}
@@ -25337,7 +25635,7 @@ snapshots:
dependencies:
p-locate: 6.0.0
- lodash-es@4.18.1: {}
+ lodash-es@4.17.21: {}
lodash.camelcase@4.3.0: {}
@@ -25394,7 +25692,7 @@ snapshots:
lru-cache@10.4.3: {}
- lru-cache@11.5.1: {}
+ lru-cache@11.3.5: {}
lru-cache@5.1.1:
dependencies:
@@ -25409,28 +25707,22 @@ snapshots:
m3u8-parser@7.2.0:
dependencies:
'@babel/runtime': 7.29.7
- '@videojs/vhs-utils': 4.1.2
+ '@videojs/vhs-utils': 4.1.1
global: 4.4.0
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- magicast@0.5.3:
+ magicast@0.5.2:
dependencies:
'@babel/parser': 7.29.7
'@babel/types': 7.29.7
source-map-js: 1.2.1
- make-asynchronous@1.1.0:
- dependencies:
- p-event: 6.0.1
- type-fest: 4.41.0
- web-worker: 1.5.0
-
make-dir@4.0.0:
dependencies:
- semver: 7.8.5
+ semver: 7.7.4
mantine-datatable@9.3.1(@mantine/core@9.4.1(@mantine/hooks@9.4.1(react@19.2.7))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@mantine/hooks@9.4.1(react@19.2.7))(clsx@2.1.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
@@ -25460,40 +25752,40 @@ snapshots:
markdown-table@3.0.4: {}
- marked-terminal@7.3.0(marked@15.0.12):
+ marked-terminal@7.3.0(marked@15.0.11):
dependencies:
- ansi-escapes: 7.3.0
+ ansi-escapes: 7.0.0
ansi-regex: 6.2.2
chalk: 5.6.2
cli-highlight: 2.1.11
cli-table3: 0.6.5
- marked: 15.0.12
+ marked: 15.0.11
node-emoji: 2.2.0
- supports-hyperlinks: 3.2.0
+ supports-hyperlinks: 3.1.0
- marked@15.0.12: {}
+ marked@15.0.11: {}
marked@16.4.2: {}
math-intrinsics@1.1.0: {}
- mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)):
+ mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)):
dependencies:
'@modelcontextprotocol/sdk': 1.26.0(zod@4.4.3)
chalk: 5.6.2
commander: 11.1.0
redis: 4.7.1
optionalDependencies:
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
- mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)):
+ mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)):
dependencies:
'@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3)
chalk: 5.6.2
commander: 11.1.0
redis: 4.7.1
optionalDependencies:
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
mdast-util-directive@3.1.0:
dependencies:
@@ -25501,11 +25793,11 @@ snapshots:
'@types/unist': 3.0.3
ccount: 2.0.1
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
parse-entities: 4.0.2
stringify-entities: 4.0.4
- unist-util-visit-parents: 6.0.2
+ unist-util-visit-parents: 6.0.1
transitivePeerDependencies:
- supports-color
@@ -25519,14 +25811,14 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
escape-string-regexp: 5.0.0
- unist-util-is: 6.0.1
- unist-util-visit-parents: 6.0.2
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
- mdast-util-from-markdown@2.0.3:
+ mdast-util-from-markdown@2.0.2:
dependencies:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
- decode-named-character-reference: 1.3.0
+ decode-named-character-reference: 1.1.0
devlop: 1.1.0
mdast-util-to-string: 4.0.0
micromark: 4.0.2
@@ -25544,7 +25836,7 @@ snapshots:
'@types/mdast': 4.0.4
devlop: 1.1.0
escape-string-regexp: 5.0.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
micromark-extension-frontmatter: 2.0.0
transitivePeerDependencies:
@@ -25562,7 +25854,7 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
micromark-util-normalize-identifier: 2.0.1
transitivePeerDependencies:
@@ -25571,7 +25863,7 @@ snapshots:
mdast-util-gfm-strikethrough@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
@@ -25581,7 +25873,7 @@ snapshots:
'@types/mdast': 4.0.4
devlop: 1.1.0
markdown-table: 3.0.4
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
@@ -25590,14 +25882,14 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
mdast-util-gfm@3.1.0:
dependencies:
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-gfm-autolink-literal: 2.0.1
mdast-util-gfm-footnote: 2.1.0
mdast-util-gfm-strikethrough: 2.0.0
@@ -25613,7 +25905,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
@@ -25626,18 +25918,18 @@ snapshots:
'@types/unist': 3.0.3
ccount: 2.0.1
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
parse-entities: 4.0.2
stringify-entities: 4.0.4
unist-util-stringify-position: 4.0.0
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
transitivePeerDependencies:
- supports-color
mdast-util-mdx@3.0.0:
dependencies:
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
@@ -25651,7 +25943,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
@@ -25659,13 +25951,13 @@ snapshots:
mdast-util-phrasing@4.1.0:
dependencies:
'@types/mdast': 4.0.4
- unist-util-is: 6.0.1
+ unist-util-is: 6.0.0
- mdast-util-to-hast@13.2.1:
+ mdast-util-to-hast@13.2.0:
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.3.2
+ '@ungap/structured-clone': 1.3.0
devlop: 1.1.0
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
@@ -25701,16 +25993,16 @@ snapshots:
medium-zoom@1.1.0: {}
- memfs@4.57.8(tslib@2.8.1):
+ memfs@4.57.6(tslib@2.8.1):
dependencies:
- '@jsonjoy.com/fs-core': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-fsa': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-to-fsa': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-print': 4.57.8(tslib@2.8.1)
- '@jsonjoy.com/fs-snapshot': 4.57.8(tslib@2.8.1)
+ '@jsonjoy.com/fs-core': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-fsa': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-builtins': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-to-fsa': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-node-utils': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-print': 4.57.6(tslib@2.8.1)
+ '@jsonjoy.com/fs-snapshot': 4.57.6(tslib@2.8.1)
'@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1)
'@jsonjoy.com/util': 1.9.0(tslib@2.8.1)
glob-to-regex.js: 1.2.0(tslib@2.8.1)
@@ -25728,11 +26020,11 @@ snapshots:
merge2@1.4.1: {}
- mermaid@11.16.0:
+ mermaid@11.15.0:
dependencies:
'@braintree/sanitize-url': 7.1.2
'@iconify/utils': 3.1.3
- '@mermaid-js/parser': 1.2.0
+ '@mermaid-js/parser': 1.1.1
'@types/d3': 7.4.3
'@upsetjs/venn.js': 2.0.0
cytoscape: 3.34.0
@@ -25743,14 +26035,14 @@ snapshots:
dagre-d3-es: 7.0.14
dayjs: 1.11.21
dompurify: 3.4.11
- es-toolkit: 1.49.0
+ es-toolkit: 1.46.1
katex: 0.16.47
khroma: 2.1.0
marked: 16.4.2
roughjs: 4.6.6
stylis: 4.4.0
- ts-dedent: 2.3.0
- uuid: 14.0.1
+ ts-dedent: 2.2.0
+ uuid: 14.0.0
methods@1.1.2: {}
@@ -25758,7 +26050,7 @@ snapshots:
micromark-core-commonmark@2.0.3:
dependencies:
- decode-named-character-reference: 1.3.0
+ decode-named-character-reference: 1.1.0
devlop: 1.1.0
micromark-factory-destination: 2.0.1
micromark-factory-label: 2.0.1
@@ -25852,7 +26144,7 @@ snapshots:
micromark-extension-mdx-expression@3.0.1:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-factory-mdx-expression: 2.0.3
micromark-factory-space: 2.0.1
@@ -25863,7 +26155,7 @@ snapshots:
micromark-extension-mdx-jsx@3.0.2:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
micromark-factory-mdx-expression: 2.0.3
@@ -25872,7 +26164,7 @@ snapshots:
micromark-util-events-to-acorn: 2.0.3
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
micromark-extension-mdx-md@2.0.0:
dependencies:
@@ -25880,7 +26172,7 @@ snapshots:
micromark-extension-mdxjs-esm@3.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-util-character: 2.1.1
@@ -25888,12 +26180,12 @@ snapshots:
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
unist-util-position-from-estree: 2.0.0
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
micromark-extension-mdxjs@3.0.0:
dependencies:
- acorn: 8.17.0
- acorn-jsx: 5.3.2(acorn@8.17.0)
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
micromark-extension-mdx-expression: 3.0.1
micromark-extension-mdx-jsx: 3.0.2
micromark-extension-mdx-md: 2.0.0
@@ -25916,7 +26208,7 @@ snapshots:
micromark-factory-mdx-expression@2.0.3:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
devlop: 1.1.0
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -25924,7 +26216,7 @@ snapshots:
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
unist-util-position-from-estree: 2.0.0
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
micromark-factory-space@1.1.0:
dependencies:
@@ -25981,7 +26273,7 @@ snapshots:
micromark-util-decode-string@2.0.1:
dependencies:
- decode-named-character-reference: 1.3.0
+ decode-named-character-reference: 1.1.0
micromark-util-character: 2.1.1
micromark-util-decode-numeric-character-reference: 2.0.2
micromark-util-symbol: 2.0.1
@@ -25990,13 +26282,13 @@ snapshots:
micromark-util-events-to-acorn@2.0.3:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/unist': 3.0.3
devlop: 1.1.0
estree-util-visit: 2.0.0
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
micromark-util-html-tag-name@2.0.1: {}
@@ -26031,9 +26323,9 @@ snapshots:
micromark@4.0.2:
dependencies:
- '@types/debug': 4.1.13
+ '@types/debug': 4.1.12
debug: 4.4.3
- decode-named-character-reference: 1.3.0
+ decode-named-character-reference: 1.1.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
@@ -26054,7 +26346,7 @@ snapshots:
micromatch@4.0.8:
dependencies:
braces: 3.0.3
- picomatch: 2.3.2
+ picomatch: 2.3.1
mime-db@1.33.0: {}
@@ -26076,7 +26368,7 @@ snapshots:
mime@1.6.0: {}
- mime@4.1.0: {}
+ mime@4.0.4: {}
mimic-fn@2.1.0: {}
@@ -26086,21 +26378,21 @@ snapshots:
mimic-response@4.0.0: {}
- min-document@2.19.2:
+ min-document@2.19.0:
dependencies:
dom-walk: 0.1.2
- mini-css-extract-plugin@2.10.2(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ mini-css-extract-plugin@2.10.2(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
schema-utils: 4.3.3
tapable: 2.3.3
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
minimalistic-assert@1.0.1: {}
minimatch@10.2.5:
dependencies:
- brace-expansion: 5.0.7
+ brace-expansion: 5.0.6
minimatch@3.1.5:
dependencies:
@@ -26116,46 +26408,6 @@ snapshots:
minimist@1.2.8: {}
- minimizer-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(@swc/html@1.15.43)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- jest-worker: 27.5.1
- schema-utils: 4.3.3
- terser: 5.48.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
- optionalDependencies:
- '@swc/core': 1.15.43(@swc/helpers@0.5.23)
- '@swc/html': 1.15.43
- esbuild: 0.28.1
- lightningcss: 1.32.0
- postcss: 8.5.16
-
- minimizer-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- jest-worker: 27.5.1
- schema-utils: 4.3.3
- terser: 5.48.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
- optionalDependencies:
- '@swc/core': 1.15.43(@swc/helpers@0.5.23)
- clean-css: 5.3.3
- cssnano: 6.1.2(postcss@8.5.16)
- esbuild: 0.28.1
- html-minifier-terser: 7.2.0
- postcss: 8.5.16
-
- minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(postcss@8.5.16)(webpack@5.108.3(esbuild@0.28.1)(postcss@8.5.16)):
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- jest-worker: 27.5.1
- schema-utils: 4.3.3
- terser: 5.48.0
- webpack: 5.108.3(esbuild@0.28.1)(postcss@8.5.16)
- optionalDependencies:
- esbuild: 0.28.1
- postcss: 8.5.16
-
minipass@7.1.3: {}
mkdirp-classic@0.5.3: {}
@@ -26166,23 +26418,23 @@ snapshots:
dependencies:
'@babel/runtime': 7.29.7
'@videojs/vhs-utils': 4.1.2
- '@xmldom/xmldom': 0.8.13
+ '@xmldom/xmldom': 0.8.10
global: 4.4.0
- mrmime@2.0.1: {}
+ mrmime@2.0.0: {}
ms@2.0.0: {}
ms@2.1.3: {}
- msw@2.14.6(@types/node@24.13.2)(typescript@7.0.1-rc):
+ msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3):
dependencies:
- '@inquirer/confirm': 6.1.1(@types/node@24.13.2)
+ '@inquirer/confirm': 6.0.13(@types/node@24.13.3)
'@mswjs/interceptors': 0.41.9
'@open-draft/deferred-promise': 3.0.0
'@types/statuses': 2.0.6
cookie: 1.1.1
- graphql: 16.14.2
+ graphql: 16.14.0
headers-polyfill: 5.0.1
is-node-process: 1.2.0
outvariant: 1.4.3
@@ -26194,35 +26446,9 @@ snapshots:
tough-cookie: 6.0.1
type-fest: 5.7.0
until-async: 3.0.2
- yargs: 17.7.3
+ yargs: 17.7.2
optionalDependencies:
- typescript: 7.0.1-rc
- transitivePeerDependencies:
- - '@types/node'
- optional: true
-
- msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc):
- dependencies:
- '@inquirer/confirm': 6.1.1(@types/node@26.0.1)
- '@mswjs/interceptors': 0.41.9
- '@open-draft/deferred-promise': 3.0.0
- '@types/statuses': 2.0.6
- cookie: 1.1.1
- graphql: 16.14.2
- headers-polyfill: 5.0.1
- is-node-process: 1.2.0
- outvariant: 1.4.3
- path-to-regexp: 6.3.0
- picocolors: 1.1.1
- rettime: 0.11.11
- statuses: 2.0.2
- strict-event-emitter: 0.5.1
- tough-cookie: 6.0.1
- type-fest: 5.7.0
- until-async: 3.0.2
- yargs: 17.7.3
- optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
transitivePeerDependencies:
- '@types/node'
optional: true
@@ -26253,11 +26479,10 @@ snapshots:
lru.min: 1.1.4
named-placeholders: 1.1.6
sql-escaper: 1.3.3
- optional: true
- mysql2@3.22.5(@types/node@26.0.1):
+ mysql2@3.22.5(@types/node@24.13.3):
dependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
aws-ssl-profiles: 1.1.2
denque: 2.1.0
generate-function: 2.3.1
@@ -26266,6 +26491,7 @@ snapshots:
lru.min: 1.1.4
named-placeholders: 1.1.6
sql-escaper: 1.3.3
+ optional: true
mz@2.7.0:
dependencies:
@@ -26277,16 +26503,16 @@ snapshots:
dependencies:
lru.min: 1.1.4
- nan@2.28.0:
+ nan@2.20.0:
optional: true
- nanoid@3.3.15: {}
+ nanoid@3.3.12: {}
nanoid@5.1.16: {}
- nanostores@1.4.0: {}
+ nanostores@1.3.0: {}
- napi-build-utils@2.0.0: {}
+ napi-build-utils@1.0.2: {}
negotiator@0.6.3: {}
@@ -26300,50 +26526,50 @@ snapshots:
neverpanic@0.0.8: {}
- next-auth@5.0.0-beta.31(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7):
+ next-auth@5.0.0-beta.31(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7):
dependencies:
'@auth/core': 0.41.2
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
react: 19.2.7
next-intl-swc-plugin-extractor@4.13.1: {}
- next-intl@4.13.1(@swc/helpers@0.5.23)(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)(typescript@7.0.1-rc):
+ next-intl@4.13.1(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(react@19.2.7)(typescript@6.0.3):
dependencies:
- '@formatjs/intl-localematcher': 0.8.10
- '@parcel/watcher': 2.5.6
- '@swc/core': 1.15.43(@swc/helpers@0.5.23)
+ '@formatjs/intl-localematcher': 0.8.1
+ '@parcel/watcher': 2.4.1
+ '@swc/core': 1.15.3(@swc/helpers@0.5.15)
icu-minify: 4.13.1
negotiator: 1.0.0
- next: 16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
+ next: 16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)
next-intl-swc-plugin-extractor: 4.13.1
po-parser: 2.1.1
react: 19.2.7
use-intl: 4.13.1(react@19.2.7)
optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
transitivePeerDependencies:
- '@swc/helpers'
- next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0):
+ next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0):
dependencies:
- '@next/env': 16.2.9
+ '@next/env': 16.2.10
'@swc/helpers': 0.5.15
- baseline-browser-mapping: 2.10.40
- caniuse-lite: 1.0.30001800
+ baseline-browser-mapping: 2.10.31
+ caniuse-lite: 1.0.30001793
postcss: 8.4.31
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.7)
+ styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.7)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.2.9
- '@next/swc-darwin-x64': 16.2.9
- '@next/swc-linux-arm64-gnu': 16.2.9
- '@next/swc-linux-arm64-musl': 16.2.9
- '@next/swc-linux-x64-gnu': 16.2.9
- '@next/swc-linux-x64-musl': 16.2.9
- '@next/swc-win32-arm64-msvc': 16.2.9
- '@next/swc-win32-x64-msvc': 16.2.9
+ '@next/swc-darwin-arm64': 16.2.10
+ '@next/swc-darwin-x64': 16.2.10
+ '@next/swc-linux-arm64-gnu': 16.2.10
+ '@next/swc-linux-arm64-musl': 16.2.10
+ '@next/swc-linux-x64-gnu': 16.2.10
+ '@next/swc-linux-x64-musl': 16.2.10
+ '@next/swc-win32-arm64-msvc': 16.2.10
+ '@next/swc-win32-x64-msvc': 16.2.10
'@opentelemetry/api': 1.9.0
'@playwright/test': 1.61.1
babel-plugin-react-compiler: 1.0.0
@@ -26358,13 +26584,13 @@ snapshots:
lower-case: 2.0.2
tslib: 2.8.1
- node-abi@3.93.0:
+ node-abi@3.67.0:
dependencies:
- semver: 7.8.5
+ semver: 7.7.4
node-addon-api@7.1.1: {}
- node-addon-api@8.9.0: {}
+ node-addon-api@8.3.1: {}
node-emoji@2.2.0:
dependencies:
@@ -26381,32 +26607,32 @@ snapshots:
node-gyp-build@4.8.4: {}
- node-loader@2.1.0(webpack@5.108.3(esbuild@0.28.1)(postcss@8.5.16)):
+ node-loader@2.1.0(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
loader-utils: 2.0.4
- webpack: 5.108.3(esbuild@0.28.1)(postcss@8.5.16)
+ webpack: 5.107.1(esbuild@0.28.1)(postcss@8.5.16)
node-mock-http@1.0.4: {}
- node-releases@2.0.50: {}
+ node-releases@2.0.46: {}
normalize-package-data@6.0.2:
dependencies:
hosted-git-info: 7.0.2
- semver: 7.8.5
+ semver: 7.7.4
validate-npm-package-license: 3.0.4
normalize-package-data@8.0.0:
dependencies:
- hosted-git-info: 9.0.3
- semver: 7.8.5
+ hosted-git-info: 9.0.2
+ semver: 7.7.4
validate-npm-package-license: 3.0.4
normalize-path@3.0.0: {}
normalize-url@8.1.1: {}
- normalize-url@9.0.1: {}
+ normalize-url@9.0.0: {}
npm-run-path@4.0.1:
dependencies:
@@ -26421,7 +26647,7 @@ snapshots:
path-key: 4.0.0
unicorn-magic: 0.3.0
- npm@11.18.0: {}
+ npm@11.6.2: {}
nprogress@0.2.0: {}
@@ -26429,13 +26655,13 @@ snapshots:
dependencies:
boolbase: 1.0.0
- null-loader@4.0.1(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ null-loader@4.0.1(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
- oauth4webapi@3.8.6: {}
+ oauth4webapi@3.3.0: {}
object-assign@4.1.1: {}
@@ -26445,16 +26671,16 @@ snapshots:
object.assign@4.1.7:
dependencies:
- call-bind: 1.0.9
+ call-bind: 1.0.8
call-bound: 1.0.4
define-properties: 1.2.1
- es-object-atoms: 1.1.2
+ es-object-atoms: 1.1.1
has-symbols: 1.1.0
object-keys: 1.1.1
obuf@1.1.2: {}
- obug@2.1.3: {}
+ obug@2.1.1: {}
octokit@5.0.5:
dependencies:
@@ -26464,11 +26690,11 @@ snapshots:
'@octokit/plugin-paginate-graphql': 6.0.0(@octokit/core@7.0.6)
'@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6)
'@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.6)
- '@octokit/plugin-retry': 8.1.0(@octokit/core@7.0.6)
+ '@octokit/plugin-retry': 8.0.3(@octokit/core@7.0.6)
'@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6)
- '@octokit/request-error': 7.1.0
+ '@octokit/request-error': 7.0.2
'@octokit/types': 16.0.0
- '@octokit/webhooks': 14.2.0
+ '@octokit/webhooks': 14.0.0
ofetch@1.5.1:
dependencies:
@@ -26519,39 +26745,39 @@ snapshots:
opener@1.5.2: {}
- openid-client@6.8.4:
+ openid-client@6.3.3:
dependencies:
jose: 6.2.3
- oauth4webapi: 3.8.6
+ oauth4webapi: 3.3.0
orderedmap@2.1.1: {}
outvariant@1.4.3:
optional: true
- oxfmt@0.57.0:
+ oxfmt@0.58.0:
dependencies:
tinypool: 2.1.0
optionalDependencies:
- '@oxfmt/binding-android-arm-eabi': 0.57.0
- '@oxfmt/binding-android-arm64': 0.57.0
- '@oxfmt/binding-darwin-arm64': 0.57.0
- '@oxfmt/binding-darwin-x64': 0.57.0
- '@oxfmt/binding-freebsd-x64': 0.57.0
- '@oxfmt/binding-linux-arm-gnueabihf': 0.57.0
- '@oxfmt/binding-linux-arm-musleabihf': 0.57.0
- '@oxfmt/binding-linux-arm64-gnu': 0.57.0
- '@oxfmt/binding-linux-arm64-musl': 0.57.0
- '@oxfmt/binding-linux-ppc64-gnu': 0.57.0
- '@oxfmt/binding-linux-riscv64-gnu': 0.57.0
- '@oxfmt/binding-linux-riscv64-musl': 0.57.0
- '@oxfmt/binding-linux-s390x-gnu': 0.57.0
- '@oxfmt/binding-linux-x64-gnu': 0.57.0
- '@oxfmt/binding-linux-x64-musl': 0.57.0
- '@oxfmt/binding-openharmony-arm64': 0.57.0
- '@oxfmt/binding-win32-arm64-msvc': 0.57.0
- '@oxfmt/binding-win32-ia32-msvc': 0.57.0
- '@oxfmt/binding-win32-x64-msvc': 0.57.0
+ '@oxfmt/binding-android-arm-eabi': 0.58.0
+ '@oxfmt/binding-android-arm64': 0.58.0
+ '@oxfmt/binding-darwin-arm64': 0.58.0
+ '@oxfmt/binding-darwin-x64': 0.58.0
+ '@oxfmt/binding-freebsd-x64': 0.58.0
+ '@oxfmt/binding-linux-arm-gnueabihf': 0.58.0
+ '@oxfmt/binding-linux-arm-musleabihf': 0.58.0
+ '@oxfmt/binding-linux-arm64-gnu': 0.58.0
+ '@oxfmt/binding-linux-arm64-musl': 0.58.0
+ '@oxfmt/binding-linux-ppc64-gnu': 0.58.0
+ '@oxfmt/binding-linux-riscv64-gnu': 0.58.0
+ '@oxfmt/binding-linux-riscv64-musl': 0.58.0
+ '@oxfmt/binding-linux-s390x-gnu': 0.58.0
+ '@oxfmt/binding-linux-x64-gnu': 0.58.0
+ '@oxfmt/binding-linux-x64-musl': 0.58.0
+ '@oxfmt/binding-openharmony-arm64': 0.58.0
+ '@oxfmt/binding-win32-arm64-msvc': 0.58.0
+ '@oxfmt/binding-win32-ia32-msvc': 0.58.0
+ '@oxfmt/binding-win32-x64-msvc': 0.58.0
oxlint@1.72.0:
optionalDependencies:
@@ -26579,13 +26805,9 @@ snapshots:
p-each-series@3.0.0: {}
- p-event@6.0.1:
- dependencies:
- p-timeout: 6.1.4
-
p-filter@4.1.0:
dependencies:
- p-map: 7.0.5
+ p-map: 7.0.3
p-finally@1.0.0: {}
@@ -26609,7 +26831,7 @@ snapshots:
dependencies:
aggregate-error: 3.1.0
- p-map@7.0.5: {}
+ p-map@7.0.3: {}
p-queue@6.6.2:
dependencies:
@@ -26630,8 +26852,6 @@ snapshots:
dependencies:
p-finally: 1.0.0
- p-timeout@6.1.4: {}
-
p-try@1.0.0: {}
package-json-from-dist@1.0.1: {}
@@ -26639,9 +26859,9 @@ snapshots:
package-json@8.1.1:
dependencies:
got: 12.6.1
- registry-auth-token: 5.1.1
+ registry-auth-token: 5.0.2
registry-url: 6.0.1
- semver: 7.8.5
+ semver: 7.7.4
package-manager-detector@1.6.0: {}
@@ -26663,20 +26883,20 @@ snapshots:
'@types/unist': 2.0.11
character-entities-legacy: 3.0.0
character-reference-invalid: 2.0.1
- decode-named-character-reference: 1.3.0
+ decode-named-character-reference: 1.1.0
is-alphanumerical: 2.0.1
is-decimal: 2.0.1
is-hexadecimal: 2.0.1
parse-json@4.0.0:
dependencies:
- error-ex: 1.3.4
+ error-ex: 1.3.2
json-parse-better-errors: 1.0.2
parse-json@5.2.0:
dependencies:
'@babel/code-frame': 7.29.7
- error-ex: 1.3.4
+ error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -26728,7 +26948,7 @@ snapshots:
path-exists@5.0.0: {}
- path-expression-matcher@1.6.1: {}
+ path-expression-matcher@1.5.0: {}
path-is-inside@1.0.2: {}
@@ -26751,7 +26971,7 @@ snapshots:
path-scurry@2.0.2:
dependencies:
- lru-cache: 11.5.1
+ lru-cache: 11.3.5
minipass: 7.1.3
path-to-regexp@0.1.13: {}
@@ -26788,7 +27008,7 @@ snapshots:
dependencies:
pg-int8: 1.0.1
postgres-array: 2.0.0
- postgres-bytea: 1.0.1
+ postgres-bytea: 1.0.0
postgres-date: 1.0.7
postgres-interval: 1.2.0
@@ -26808,7 +27028,7 @@ snapshots:
picocolors@1.1.1: {}
- picomatch@2.3.2: {}
+ picomatch@2.3.1: {}
picomatch@4.0.4: {}
@@ -26832,7 +27052,7 @@ snapshots:
real-require: 0.2.0
safe-stable-stringify: 2.5.0
sonic-boom: 4.2.1
- thread-stream: 4.2.0
+ thread-stream: 4.0.0
pkce-challenge@5.0.1: {}
@@ -26880,12 +27100,12 @@ snapshots:
postcss-attribute-case-insensitive@7.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-calc@9.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 6.1.4
+ postcss-selector-parser: 6.1.2
postcss-value-parser: 4.2.0
postcss-clamp@4.1.0(postcss@8.5.16):
@@ -26916,7 +27136,7 @@ snapshots:
postcss-colormin@6.1.0(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
caniuse-api: 3.0.0
colord: 2.9.3
postcss: 8.5.16
@@ -26924,7 +27144,7 @@ snapshots:
postcss-convert-values@6.1.0(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
postcss: 8.5.16
postcss-value-parser: 4.2.0
@@ -26951,12 +27171,12 @@ snapshots:
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-dir-pseudo-class@9.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-discard-comments@6.0.2(postcss@8.5.16):
dependencies:
@@ -26977,7 +27197,7 @@ snapshots:
postcss-discard-unused@6.0.5(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 6.1.4
+ postcss-selector-parser: 6.1.2
postcss-double-position-gradients@6.0.4(postcss@8.5.16):
dependencies:
@@ -26989,12 +27209,12 @@ snapshots:
postcss-focus-visible@10.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-focus-within@9.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-font-variant@5.0.0(postcss@8.5.16):
dependencies:
@@ -27010,7 +27230,7 @@ snapshots:
postcss: 8.5.16
postcss-value-parser: 4.2.0
- postcss-js@4.1.0(postcss@8.5.16):
+ postcss-js@4.0.1(postcss@8.5.16):
dependencies:
camelcase-css: 2.0.1
postcss: 8.5.16
@@ -27024,13 +27244,13 @@ snapshots:
'@csstools/utilities': 2.0.0(postcss@8.5.16)
postcss: 8.5.16
- postcss-loader@7.3.4(postcss@8.5.16)(typescript@7.0.1-rc)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ postcss-loader@7.3.4(postcss@8.5.16)(typescript@6.0.3)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
- cosmiconfig: 8.3.6(typescript@7.0.1-rc)
+ cosmiconfig: 8.3.6(typescript@6.0.3)
jiti: 1.21.7
postcss: 8.5.16
- semver: 7.8.5
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ semver: 7.7.4
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- typescript
@@ -27053,11 +27273,11 @@ snapshots:
postcss-merge-rules@6.1.1(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
caniuse-api: 3.0.0
cssnano-utils: 4.0.2(postcss@8.5.16)
postcss: 8.5.16
- postcss-selector-parser: 6.1.4
+ postcss-selector-parser: 6.1.2
postcss-minify-font-values@6.1.0(postcss@8.5.16):
dependencies:
@@ -27073,7 +27293,7 @@ snapshots:
postcss-minify-params@6.1.0(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
cssnano-utils: 4.0.2(postcss@8.5.16)
postcss: 8.5.16
postcss-value-parser: 4.2.0
@@ -27081,14 +27301,14 @@ snapshots:
postcss-minify-selectors@6.0.4(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 6.1.4
+ postcss-selector-parser: 6.1.2
- postcss-mixins@12.1.2(postcss@8.5.16):
+ postcss-mixins@12.0.0(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-js: 4.1.0(postcss@8.5.16)
+ postcss-js: 4.0.1(postcss@8.5.16)
postcss-simple-vars: 7.0.1(postcss@8.5.16)
- sugarss: 5.0.1(postcss@8.5.16)
+ sugarss: 5.0.0(postcss@8.5.16)
tinyglobby: 0.2.17
postcss-modules-extract-imports@3.1.0(postcss@8.5.16):
@@ -27099,13 +27319,13 @@ snapshots:
dependencies:
icss-utils: 5.1.0(postcss@8.5.16)
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-value-parser: 4.2.0
postcss-modules-scope@3.2.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-modules-values@4.0.0(postcss@8.5.16):
dependencies:
@@ -27115,14 +27335,14 @@ snapshots:
postcss-nested@7.0.2(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-nesting@13.0.2(postcss@8.5.16):
dependencies:
- '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.4)
- '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.4)
+ '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.0)
+ '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0)
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-normalize-charset@6.0.2(postcss@8.5.16):
dependencies:
@@ -27155,7 +27375,7 @@ snapshots:
postcss-normalize-unicode@6.1.0(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
postcss: 8.5.16
postcss-value-parser: 4.2.0
@@ -27235,8 +27455,8 @@ snapshots:
'@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.16)
'@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.16)
'@csstools/postcss-unset-value': 4.0.0(postcss@8.5.16)
- autoprefixer: 10.5.2(postcss@8.5.16)
- browserslist: 4.28.4
+ autoprefixer: 10.5.0(postcss@8.5.16)
+ browserslist: 4.28.2
css-blank-pseudo: 7.0.1(postcss@8.5.16)
css-has-pseudo: 7.0.3(postcss@8.5.16)
css-prefers-color-scheme: 10.0.0(postcss@8.5.16)
@@ -27271,13 +27491,13 @@ snapshots:
postcss-preset-mantine@1.18.0(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-mixins: 12.1.2(postcss@8.5.16)
+ postcss-mixins: 12.0.0(postcss@8.5.16)
postcss-nested: 7.0.2(postcss@8.5.16)
postcss-pseudo-class-any-link@10.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
postcss-reduce-idents@6.0.3(postcss@8.5.16):
dependencies:
@@ -27286,7 +27506,7 @@ snapshots:
postcss-reduce-initial@6.1.0(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
caniuse-api: 3.0.0
postcss: 8.5.16
@@ -27302,14 +27522,14 @@ snapshots:
postcss-selector-not@8.0.1(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 7.1.4
+ postcss-selector-parser: 7.1.0
- postcss-selector-parser@6.1.4:
+ postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-selector-parser@7.1.4:
+ postcss-selector-parser@7.1.0:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
@@ -27332,7 +27552,7 @@ snapshots:
postcss-unique-selectors@6.0.4(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- postcss-selector-parser: 6.1.4
+ postcss-selector-parser: 6.1.2
postcss-value-parser@4.2.0: {}
@@ -27342,19 +27562,25 @@ snapshots:
postcss@8.4.31:
dependencies:
- nanoid: 3.3.15
+ nanoid: 3.3.12
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ postcss@8.5.15:
+ dependencies:
+ nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
postcss@8.5.16:
dependencies:
- nanoid: 3.3.15
+ nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
postgres-array@2.0.0: {}
- postgres-bytea@1.0.1: {}
+ postgres-bytea@1.0.0: {}
postgres-date@1.0.7: {}
@@ -27364,16 +27590,18 @@ snapshots:
posthog-docusaurus@2.0.5: {}
- posthog-js@1.396.5:
+ posthog-js@1.399.0(preact-render-to-string@6.5.11):
dependencies:
- '@posthog/core': 1.39.6
- '@posthog/types': 1.392.0
+ '@posthog/core': 1.40.0
+ '@posthog/types': 1.393.0
core-js: 3.49.0
dompurify: 3.4.11
fflate: 0.4.8
- preact: 10.29.3
+ preact: 10.29.7(preact-render-to-string@6.5.11)
query-selector-shadow-dom: 1.0.1
web-vitals: 5.3.0
+ transitivePeerDependencies:
+ - preact-render-to-string
posthog-node@5.39.4(rxjs@7.8.2):
dependencies:
@@ -27385,28 +27613,33 @@ snapshots:
dependencies:
preact: 10.24.3
+ preact-render-to-string@6.5.11(preact@10.29.7):
+ dependencies:
+ preact: 10.29.7(preact-render-to-string@6.5.11)
+ optional: true
+
preact@10.24.3: {}
- preact@10.29.3: {}
+ preact@10.29.7(preact-render-to-string@6.5.11):
+ optionalDependencies:
+ preact-render-to-string: 6.5.11(preact@10.29.7)
- prebuild-install@7.1.3:
+ prebuild-install@7.1.2:
dependencies:
detect-libc: 2.1.2
expand-template: 2.0.3
github-from-package: 0.0.0
minimist: 1.2.8
mkdirp-classic: 0.5.3
- napi-build-utils: 2.0.0
- node-abi: 3.93.0
- pump: 3.0.4
+ napi-build-utils: 1.0.2
+ node-abi: 3.67.0
+ pump: 3.0.2
rc: 1.2.8
simple-get: 4.0.1
tar-fs: 3.1.3
tunnel-agent: 0.6.0
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
pretty-error@4.0.0:
dependencies:
@@ -27459,7 +27692,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- property-information@7.2.0: {}
+ property-information@7.0.0: {}
prosemirror-changeset@2.4.1:
dependencies:
@@ -27467,28 +27700,28 @@ snapshots:
prosemirror-commands@1.7.1:
dependencies:
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-state: 1.4.4
prosemirror-transform: 1.12.0
- prosemirror-dropcursor@1.8.2:
+ prosemirror-dropcursor@1.8.3:
dependencies:
prosemirror-state: 1.4.4
prosemirror-transform: 1.12.0
- prosemirror-view: 1.41.9
+ prosemirror-view: 1.42.0
prosemirror-gapcursor@1.4.1:
dependencies:
prosemirror-keymap: 1.2.3
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-state: 1.4.4
- prosemirror-view: 1.41.9
+ prosemirror-view: 1.42.0
prosemirror-history@1.5.0:
dependencies:
prosemirror-state: 1.4.4
prosemirror-transform: 1.12.0
- prosemirror-view: 1.41.9
+ prosemirror-view: 1.42.0
rope-sequence: 1.3.4
prosemirror-inputrules@1.5.1:
@@ -27501,54 +27734,55 @@ snapshots:
prosemirror-state: 1.4.4
w3c-keyname: 2.2.8
- prosemirror-model@1.25.9:
+ prosemirror-model@1.25.10:
dependencies:
orderedmap: 2.1.1
prosemirror-schema-list@1.5.1:
dependencies:
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-state: 1.4.4
prosemirror-transform: 1.12.0
prosemirror-state@1.4.4:
dependencies:
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-transform: 1.12.0
- prosemirror-view: 1.41.9
+ prosemirror-view: 1.42.0
prosemirror-tables@1.8.5:
dependencies:
prosemirror-keymap: 1.2.3
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-state: 1.4.4
prosemirror-transform: 1.12.0
- prosemirror-view: 1.41.9
+ prosemirror-view: 1.42.0
prosemirror-transform@1.12.0:
dependencies:
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
- prosemirror-view@1.41.9:
+ prosemirror-view@1.42.0:
dependencies:
- prosemirror-model: 1.25.9
+ prosemirror-model: 1.25.10
prosemirror-state: 1.4.4
prosemirror-transform: 1.12.0
proto-list@1.2.4: {}
- protobufjs@7.6.4:
+ protobufjs@7.4.0:
dependencies:
'@protobufjs/aspromise': 1.1.2
'@protobufjs/base64': 1.1.2
- '@protobufjs/codegen': 2.0.5
- '@protobufjs/eventemitter': 1.1.1
- '@protobufjs/fetch': 1.1.1
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
'@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
- '@protobufjs/utf8': 1.1.1
- '@types/node': 26.0.1
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 24.13.2
long: 5.3.2
proxmox-api@1.1.1:
@@ -27560,15 +27794,13 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
- proxy-agent-negotiate@1.1.0: {}
-
proxy-from-env@1.1.0: {}
proxy-from-env@2.1.0: {}
- pump@3.0.4:
+ pump@3.0.2:
dependencies:
- end-of-stream: 1.4.5
+ end-of-stream: 1.4.4
once: 1.4.0
punycode@2.3.1: {}
@@ -27583,10 +27815,9 @@ snapshots:
pvutils@1.1.5: {}
- qs@6.15.3:
+ qs@6.15.2:
dependencies:
- es-define-property: 1.0.1
- side-channel: 1.1.1
+ side-channel: 1.1.0
query-selector-shadow-dom@1.0.1: {}
@@ -27605,24 +27836,24 @@ snapshots:
quill@2.0.3:
dependencies:
eventemitter3: 5.0.4
- lodash-es: 4.18.1
+ lodash-es: 4.17.21
parchment: 3.0.0
quill-delta: 5.1.0
- radix-vue@1.9.17(vue@3.5.39(typescript@7.0.1-rc)):
+ radix-vue@1.9.17(vue@3.5.35(typescript@6.0.3)):
dependencies:
'@floating-ui/dom': 1.7.6
- '@floating-ui/vue': 1.1.11(vue@3.5.39(typescript@7.0.1-rc))
+ '@floating-ui/vue': 1.1.11(vue@3.5.35(typescript@6.0.3))
'@internationalized/date': 3.12.2
'@internationalized/number': 3.6.7
- '@tanstack/vue-virtual': 3.13.31(vue@3.5.39(typescript@7.0.1-rc))
- '@vueuse/core': 10.11.1(vue@3.5.39(typescript@7.0.1-rc))
- '@vueuse/shared': 10.11.1(vue@3.5.39(typescript@7.0.1-rc))
+ '@tanstack/vue-virtual': 3.13.28(vue@3.5.35(typescript@6.0.3))
+ '@vueuse/core': 10.11.1(vue@3.5.35(typescript@6.0.3))
+ '@vueuse/shared': 10.11.1(vue@3.5.35(typescript@6.0.3))
aria-hidden: 1.2.6
defu: 6.1.7
fast-deep-equal: 3.1.3
nanoid: 5.1.16
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -27638,8 +27869,6 @@ snapshots:
range-parser@1.2.1: {}
- range-parser@1.3.0: {}
-
raw-body@2.5.3:
dependencies:
bytes: 3.1.2
@@ -27687,19 +27916,19 @@ snapshots:
react-jsx-parser@2.4.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
- acorn: 8.17.0
- acorn-jsx: 5.3.2(acorn@8.17.0)
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
optionalDependencies:
'@types/react': 18.3.31
'@types/react-dom': 18.3.7(@types/react@18.3.31)
- react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@19.2.7))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
'@babel/runtime': 7.29.7
react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.7)'
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
react-markdown@10.1.0(@types/react@19.2.17)(react@19.2.7):
dependencies:
@@ -27709,7 +27938,7 @@ snapshots:
devlop: 1.1.0
hast-util-to-jsx-runtime: 2.3.6
html-url-attributes: 3.0.1
- mdast-util-to-hast: 13.2.1
+ mdast-util-to-hast: 13.2.0
react: 19.2.7
remark-parse: 11.0.0
remark-rehype: 11.1.2
@@ -27726,13 +27955,13 @@ snapshots:
react-quill-new@3.8.3(quill-delta@5.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
- lodash-es: 4.18.1
+ lodash-es: 4.17.21
quill: 2.0.3
quill-delta: 5.1.0
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
- react-redux@9.3.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1):
+ react-redux@9.2.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1):
dependencies:
'@types/use-sync-external-store': 0.0.6
react: 19.2.7
@@ -27828,16 +28057,16 @@ snapshots:
read-package-up@12.0.0:
dependencies:
find-up-simple: 1.0.1
- read-pkg: 10.1.0
- type-fest: 5.7.0
+ read-pkg: 10.0.0
+ type-fest: 5.6.0
- read-pkg@10.1.0:
+ read-pkg@10.0.0:
dependencies:
'@types/normalize-package-data': 2.4.4
normalize-package-data: 8.0.0
parse-json: 8.3.0
- type-fest: 5.7.0
- unicorn-magic: 0.4.0
+ type-fest: 5.6.0
+ unicorn-magic: 0.3.0
read-pkg@9.0.1:
dependencies:
@@ -27863,7 +28092,7 @@ snapshots:
string_decoder: 1.3.0
util-deprecate: 1.0.2
- readable-stream@4.7.0:
+ readable-stream@4.5.2:
dependencies:
abort-controller: 3.0.0
buffer: 6.0.3
@@ -27877,26 +28106,24 @@ snapshots:
readdirp@3.6.0:
dependencies:
- picomatch: 2.3.2
+ picomatch: 2.3.1
readdirp@5.0.0: {}
real-require@0.2.0: {}
- real-require@1.0.0: {}
-
recharts@3.9.1(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react-is@19.2.7)(react@19.2.7)(redux@5.0.1):
dependencies:
- '@reduxjs/toolkit': 2.12.0(react-redux@9.3.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1))(react@19.2.7)
+ '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1))(react@19.2.7)
clsx: 2.1.1
decimal.js-light: 2.5.1
- es-toolkit: 1.49.0
+ es-toolkit: 1.46.1
eventemitter3: 5.0.4
immer: 11.1.9
react: 19.2.7
react-dom: 19.2.7(react@19.2.7)
react-is: 19.2.7
- react-redux: 9.3.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1)
+ react-redux: 9.2.0(@types/react@19.2.17)(react@19.2.7)(redux@5.0.1)
reselect: 5.2.0
tiny-invariant: 1.3.3
use-sync-external-store: 1.6.0(react@19.2.7)
@@ -27907,14 +28134,14 @@ snapshots:
recma-build-jsx@1.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
estree-util-build-jsx: 3.0.1
vfile: 6.0.3
- recma-jsx@1.0.1(acorn@8.17.0):
+ recma-jsx@1.0.1(acorn@8.16.0):
dependencies:
- acorn: 8.17.0
- acorn-jsx: 5.3.2(acorn@8.17.0)
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
estree-util-to-js: 2.0.0
recma-parse: 1.0.0
recma-stringify: 1.0.0
@@ -27922,14 +28149,14 @@ snapshots:
recma-parse@1.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
esast-util-from-js: 2.0.1
unified: 11.0.5
vfile: 6.0.3
recma-stringify@1.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
estree-util-to-js: 2.0.0
unified: 11.0.5
vfile: 6.0.3
@@ -27968,13 +28195,13 @@ snapshots:
regenerate: 1.4.2
regenerate-unicode-properties: 10.2.2
regjsgen: 0.8.0
- regjsparser: 0.13.2
+ regjsparser: 0.13.1
unicode-match-property-ecmascript: 2.0.0
unicode-match-property-value-ecmascript: 2.2.1
- registry-auth-token@5.1.1:
+ registry-auth-token@5.0.2:
dependencies:
- '@pnpm/npm-conf': 3.0.3
+ '@pnpm/npm-conf': 2.3.1
registry-url@6.0.1:
dependencies:
@@ -27982,14 +28209,14 @@ snapshots:
regjsgen@0.8.0: {}
- regjsparser@0.13.2:
+ regjsparser@0.13.1:
dependencies:
jsesc: 3.1.0
rehype-external-links@3.0.0:
dependencies:
'@types/hast': 3.0.4
- '@ungap/structured-clone': 1.3.2
+ '@ungap/structured-clone': 1.3.0
hast-util-is-element: 3.0.0
is-absolute-url: 4.0.1
space-separated-tokens: 2.0.2
@@ -28019,7 +28246,7 @@ snapshots:
rehype-recma@1.0.0:
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/hast': 3.0.4
hast-util-to-estree: 3.1.3
transitivePeerDependencies:
@@ -28093,7 +28320,7 @@ snapshots:
remark-parse@11.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.3
+ mdast-util-from-markdown: 2.0.2
micromark-util-types: 2.0.2
unified: 11.0.5
transitivePeerDependencies:
@@ -28103,7 +28330,7 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- mdast-util-to-hast: 13.2.1
+ mdast-util-to-hast: 13.2.0
unified: 11.0.5
vfile: 6.0.3
@@ -28133,6 +28360,8 @@ snapshots:
requires-port@1.0.0: {}
+ reselect@5.1.1: {}
+
reselect@5.2.0: {}
reserved-identifiers@1.2.0: {}
@@ -28244,7 +28473,7 @@ snapshots:
safe-buffer@5.2.1: {}
- safe-regex2@5.1.1:
+ safe-regex2@5.0.0:
dependencies:
ret: 0.5.0
@@ -28255,10 +28484,10 @@ snapshots:
sass@1.101.0:
dependencies:
chokidar: 5.0.0
- immutable: 5.1.9
+ immutable: 5.1.5
source-map-js: 1.2.1
optionalDependencies:
- '@parcel/watcher': 2.5.6
+ '@parcel/watcher': 2.4.1
sax@1.6.0: {}
@@ -28279,9 +28508,9 @@ snapshots:
schema-utils@4.3.3:
dependencies:
'@types/json-schema': 7.0.15
- ajv: 8.20.0
- ajv-formats: 2.1.1(ajv@8.20.0)
- ajv-keywords: 5.1.0(ajv@8.20.0)
+ ajv: 8.18.0
+ ajv-formats: 2.1.1(ajv@8.18.0)
+ ajv-keywords: 5.1.0(ajv@8.18.0)
search-insights@2.17.3: {}
@@ -28299,44 +28528,43 @@ snapshots:
'@peculiar/x509': 1.14.3
pkijs: 3.4.0
- semantic-release@25.0.5(typescript@7.0.1-rc):
+ semantic-release@25.0.5(typescript@6.0.3):
dependencies:
- '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(typescript@7.0.1-rc))
+ '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.5(typescript@6.0.3))
'@semantic-release/error': 4.0.0
- '@semantic-release/github': 12.0.8(semantic-release@25.0.5(typescript@7.0.1-rc))
- '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(typescript@7.0.1-rc))
- '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(typescript@7.0.1-rc))
+ '@semantic-release/github': 12.0.9(semantic-release@25.0.5(typescript@6.0.3))
+ '@semantic-release/npm': 13.1.5(semantic-release@25.0.5(typescript@6.0.3))
+ '@semantic-release/release-notes-generator': 14.1.1(semantic-release@25.0.5(typescript@6.0.3))
aggregate-error: 5.0.0
- cosmiconfig: 9.0.2(typescript@7.0.1-rc)
+ cosmiconfig: 9.0.0(typescript@6.0.3)
debug: 4.4.3
env-ci: 11.2.0
- execa: 9.6.1
+ execa: 9.5.2
figures: 6.1.0
find-versions: 6.0.0
get-stream: 6.0.1
git-log-parser: 1.2.1
hook-std: 4.0.0
- hosted-git-info: 9.0.3
+ hosted-git-info: 9.0.2
import-from-esm: 2.0.0
- lodash-es: 4.18.1
- marked: 15.0.12
- marked-terminal: 7.3.0(marked@15.0.12)
+ lodash-es: 4.17.21
+ marked: 15.0.11
+ marked-terminal: 7.3.0(marked@15.0.11)
micromatch: 4.0.8
p-each-series: 3.0.0
p-reduce: 3.0.0
read-package-up: 12.0.0
resolve-from: 5.0.0
- semver: 7.8.5
+ semver: 7.7.4
signale: 1.4.0
yargs: 18.0.0
transitivePeerDependencies:
- - kerberos
- supports-color
- typescript
semver-diff@4.0.0:
dependencies:
- semver: 7.8.5
+ semver: 7.7.4
semver-parser@4.2.1: {}
@@ -28344,7 +28572,7 @@ snapshots:
semver@6.3.1: {}
- semver@7.8.5: {}
+ semver@7.7.4: {}
send@0.19.2:
dependencies:
@@ -28375,7 +28603,7 @@ snapshots:
mime-types: 3.0.2
ms: 2.1.3
on-finished: 2.4.1
- range-parser: 1.3.0
+ range-parser: 1.2.1
statuses: 2.0.2
transitivePeerDependencies:
- supports-color
@@ -28428,8 +28656,6 @@ snapshots:
set-cookie-parser@3.1.0: {}
- set-cookie-parser@3.1.1: {}
-
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
@@ -28451,9 +28677,9 @@ snapshots:
sharp@0.34.5:
dependencies:
- '@img/colour': 1.1.0
+ '@img/colour': 1.0.0
detect-libc: 2.1.2
- semver: 7.8.5
+ semver: 7.7.4
optionalDependencies:
'@img/sharp-darwin-arm64': 0.34.5
'@img/sharp-darwin-x64': 0.34.5
@@ -28489,9 +28715,7 @@ snapshots:
shell-quote@1.8.4: {}
- shell-quote@1.9.0: {}
-
- side-channel-list@1.0.1:
+ side-channel-list@1.0.0:
dependencies:
es-errors: 1.3.0
object-inspect: 1.13.4
@@ -28511,11 +28735,11 @@ snapshots:
object-inspect: 1.13.4
side-channel-map: 1.0.1
- side-channel@1.1.1:
+ side-channel@1.1.0:
dependencies:
es-errors: 1.3.0
object-inspect: 1.13.4
- side-channel-list: 1.0.1
+ side-channel-list: 1.0.0
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
@@ -28541,14 +28765,14 @@ snapshots:
sirv@2.0.4:
dependencies:
- '@polka/url': 1.0.0-next.29
- mrmime: 2.0.1
+ '@polka/url': 1.0.0-next.25
+ mrmime: 2.0.0
totalist: 3.0.1
sirv@3.0.2:
dependencies:
- '@polka/url': 1.0.0-next.29
- mrmime: 2.0.1
+ '@polka/url': 1.0.0-next.25
+ mrmime: 2.0.0
totalist: 3.0.1
sisteransi@1.0.5: {}
@@ -28583,15 +28807,15 @@ snapshots:
socks-proxy-agent@8.0.5:
dependencies:
- agent-base: 7.1.4
+ agent-base: 7.1.3
debug: 4.4.3
- socks: 2.8.9
+ socks: 2.8.3
transitivePeerDependencies:
- supports-color
- socks@2.8.9:
+ socks@2.8.3:
dependencies:
- ip-address: 10.2.0
+ ip-address: 9.0.5
smart-buffer: 4.2.0
sonic-boom@4.2.1:
@@ -28618,16 +28842,16 @@ snapshots:
spdx-correct@3.2.0:
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.23
+ spdx-license-ids: 3.0.20
spdx-exceptions@2.5.0: {}
spdx-expression-parse@3.0.1:
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.23
+ spdx-license-ids: 3.0.20
- spdx-license-ids@3.0.23: {}
+ spdx-license-ids@3.0.20: {}
spdy-transport@3.0.0:
dependencies:
@@ -28660,6 +28884,8 @@ snapshots:
sprintf-js@1.0.3: {}
+ sprintf-js@1.1.3: {}
+
sql-escaper@1.3.3: {}
sql.js@1.14.1: {}
@@ -28669,15 +28895,15 @@ snapshots:
ssh-remote-port-forward@1.0.4:
dependencies:
'@types/ssh2': 0.5.52
- ssh2: 1.17.0
+ ssh2: 1.16.0
- ssh2@1.17.0:
+ ssh2@1.16.0:
dependencies:
asn1: 0.2.6
bcrypt-pbkdf: 1.0.2
optionalDependencies:
cpu-features: 0.0.10
- nan: 2.28.0
+ nan: 2.20.0
stack-trace@0.0.10: {}
@@ -28691,7 +28917,7 @@ snapshots:
std-env@3.10.0: {}
- std-env@4.1.0: {}
+ std-env@4.0.0: {}
stream-buffers@3.0.3: {}
@@ -28700,14 +28926,12 @@ snapshots:
duplexer2: 0.1.4
readable-stream: 2.3.8
- streamx@2.28.0:
+ streamx@2.22.0:
dependencies:
- events-universal: 1.0.1
fast-fifo: 1.3.2
- text-decoder: 1.2.7
- transitivePeerDependencies:
- - bare-abort-controller
- - react-native-b4a
+ text-decoder: 1.2.0
+ optionalDependencies:
+ bare-events: 2.5.4
strict-event-emitter-types@2.0.0: {}
@@ -28728,13 +28952,13 @@ snapshots:
dependencies:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
- strip-ansi: 7.2.0
+ strip-ansi: 7.1.2
string-width@7.2.0:
dependencies:
emoji-regex: 10.6.0
- get-east-asian-width: 1.6.0
- strip-ansi: 7.2.0
+ get-east-asian-width: 1.4.0
+ strip-ansi: 7.1.2
string_decoder@1.1.1:
dependencies:
@@ -28766,7 +28990,7 @@ snapshots:
dependencies:
ansi-regex: 5.0.1
- strip-ansi@7.2.0:
+ strip-ansi@7.1.2:
dependencies:
ansi-regex: 6.2.2
@@ -28784,43 +29008,44 @@ snapshots:
strip-json-comments@3.1.1: {}
+ strnum@2.3.0: {}
+
strnum@2.4.1:
dependencies:
anynum: 1.0.1
style-mod@4.1.3: {}
- style-to-js@1.1.21:
+ style-to-js@1.1.16:
dependencies:
- style-to-object: 1.0.14
+ style-to-object: 1.0.8
- style-to-object@1.0.14:
+ style-to-object@1.0.8:
dependencies:
- inline-style-parser: 0.2.7
+ inline-style-parser: 0.2.4
- styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.2.7):
+ styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.7):
dependencies:
client-only: 0.0.1
react: 19.2.7
optionalDependencies:
- '@babel/core': 7.29.7
+ '@babel/core': 7.29.0
stylehacks@6.1.1(postcss@8.5.16):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
postcss: 8.5.16
- postcss-selector-parser: 6.1.4
+ postcss-selector-parser: 6.1.2
stylis@4.4.0: {}
- sugarss@5.0.1(postcss@8.5.16):
+ sugarss@5.0.0(postcss@8.5.16):
dependencies:
postcss: 8.5.16
- super-regex@1.1.0:
+ super-regex@1.0.0:
dependencies:
function-timeout: 1.0.2
- make-asynchronous: 1.1.0
time-span: 5.1.0
superjson@2.2.6:
@@ -28841,7 +29066,7 @@ snapshots:
dependencies:
has-flag: 4.0.0
- supports-hyperlinks@3.2.0:
+ supports-hyperlinks@3.1.0:
dependencies:
has-flag: 4.0.0
supports-color: 7.2.0
@@ -28865,21 +29090,21 @@ snapshots:
deep-rename-keys: 0.2.1
xml-reader: 2.4.3
- swc-loader@0.2.7(@swc/core@1.15.43(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ swc-loader@0.2.7(@swc/core@1.15.3(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
- '@swc/core': 1.15.43(@swc/helpers@0.5.23)
+ '@swc/core': 1.15.3(@swc/helpers@0.5.15)
'@swc/counter': 0.1.3
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
- swiper@14.0.1: {}
+ swiper@14.0.2: {}
- swrv@1.2.0(vue@3.5.39(typescript@7.0.1-rc)):
+ swrv@1.2.0(vue@3.5.35(typescript@6.0.3)):
dependencies:
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
symbol-tree@3.2.4: {}
- tabbable@6.5.0: {}
+ tabbable@6.4.0: {}
tagged-tag@1.0.0: {}
@@ -28891,79 +29116,115 @@ snapshots:
tapable@2.3.3: {}
- tar-fs@2.1.5:
+ tar-fs@2.1.4:
dependencies:
chownr: 1.1.4
mkdirp-classic: 0.5.3
- pump: 3.0.4
+ pump: 3.0.2
tar-stream: 2.2.0
+ tar-fs@3.1.2:
+ dependencies:
+ pump: 3.0.2
+ tar-stream: 3.1.7
+ optionalDependencies:
+ bare-fs: 4.1.2
+ bare-path: 3.0.0
+ transitivePeerDependencies:
+ - bare-buffer
+
tar-fs@3.1.3:
dependencies:
- pump: 3.0.4
- tar-stream: 3.2.0
+ pump: 3.0.2
+ tar-stream: 3.1.7
optionalDependencies:
- bare-fs: 4.7.2
- bare-path: 3.0.1
+ bare-fs: 4.1.2
+ bare-path: 3.0.0
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
- end-of-stream: 1.4.5
+ end-of-stream: 1.4.4
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
- tar-stream@3.2.0:
+ tar-stream@3.1.7:
dependencies:
- b4a: 1.8.1
- bare-fs: 4.7.2
+ b4a: 1.6.6
fast-fifo: 1.3.2
- streamx: 2.28.0
- transitivePeerDependencies:
- - bare-abort-controller
- - bare-buffer
- - react-native-b4a
-
- teex@1.0.1:
- dependencies:
- streamx: 2.28.0
- transitivePeerDependencies:
- - bare-abort-controller
- - react-native-b4a
+ streamx: 2.22.0
temp-dir@3.0.0: {}
- tempy@3.2.0:
+ tempy@3.1.0:
dependencies:
is-stream: 3.0.0
temp-dir: 3.0.0
type-fest: 2.19.0
unique-string: 3.0.0
- terser-webpack-plugin@5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ terser-webpack-plugin@5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
- terser: 5.48.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ terser: 5.46.1
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
optionalDependencies:
- '@swc/core': 1.15.43(@swc/helpers@0.5.23)
+ '@swc/core': 1.15.3(@swc/helpers@0.5.15)
+ '@swc/html': 1.15.40
+ esbuild: 0.28.1
+ lightningcss: 1.32.0
+ postcss: 8.5.16
+
+ terser-webpack-plugin@5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.0)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ jest-worker: 27.5.1
+ schema-utils: 4.3.3
+ terser: 5.46.1
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ optionalDependencies:
+ '@swc/core': 1.15.3(@swc/helpers@0.5.15)
+ clean-css: 5.3.3
+ cssnano: 6.1.2(postcss@8.5.16)
+ esbuild: 0.28.0
+ html-minifier-terser: 7.2.0
+ postcss: 8.5.16
+
+ terser-webpack-plugin@5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ jest-worker: 27.5.1
+ schema-utils: 4.3.3
+ terser: 5.46.1
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ optionalDependencies:
+ '@swc/core': 1.15.3(@swc/helpers@0.5.15)
clean-css: 5.3.3
cssnano: 6.1.2(postcss@8.5.16)
esbuild: 0.28.1
html-minifier-terser: 7.2.0
postcss: 8.5.16
- terser@5.48.0:
+ terser-webpack-plugin@5.6.0(esbuild@0.28.1)(postcss@8.5.16)(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16)):
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.31
+ jest-worker: 27.5.1
+ schema-utils: 4.3.3
+ terser: 5.46.1
+ webpack: 5.107.1(esbuild@0.28.1)(postcss@8.5.16)
+ optionalDependencies:
+ esbuild: 0.28.1
+ postcss: 8.5.16
+
+ terser@5.46.1:
dependencies:
'@jridgewell/source-map': 0.3.11
- acorn: 8.17.0
+ acorn: 8.16.0
commander: 2.20.3
source-map-support: 0.5.21
@@ -28976,25 +29237,21 @@ snapshots:
byline: 5.0.0
debug: 4.4.3
docker-compose: 1.4.2
- dockerode: 5.0.1
+ dockerode: 5.0.0
get-port: 5.1.1
proper-lockfile: 4.1.2
properties-reader: 3.0.1
ssh-remote-port-forward: 1.0.4
- tar-fs: 3.1.3
+ tar-fs: 3.1.2
tmp: 0.2.7
undici: 8.6.0
transitivePeerDependencies:
- - bare-abort-controller
- bare-buffer
- - react-native-b4a
- supports-color
- text-decoder@1.2.7:
+ text-decoder@1.2.0:
dependencies:
- b4a: 1.8.1
- transitivePeerDependencies:
- - react-native-b4a
+ b4a: 1.6.6
text-hex@1.0.0: {}
@@ -29010,9 +29267,9 @@ snapshots:
dependencies:
tslib: 2.8.1
- thread-stream@4.2.0:
+ thread-stream@4.0.0:
dependencies:
- real-require: 1.0.0
+ real-require: 0.2.0
through2@2.0.5:
dependencies:
@@ -29033,7 +29290,7 @@ snapshots:
tinybench@2.9.0: {}
- tinyexec@1.2.4: {}
+ tinyexec@1.0.2: {}
tinyglobby@0.2.17:
dependencies:
@@ -29046,17 +29303,17 @@ snapshots:
tinyrainbow@3.1.0: {}
- tldts-core@6.1.86: {}
+ tldts-core@6.1.69: {}
- tldts-core@7.4.5: {}
+ tldts-core@7.0.12: {}
- tldts@6.1.86:
+ tldts@6.1.69:
dependencies:
- tldts-core: 6.1.86
+ tldts-core: 6.1.69
- tldts@7.4.5:
+ tldts@7.0.12:
dependencies:
- tldts-core: 7.4.5
+ tldts-core: 7.0.12
tmp@0.2.7: {}
@@ -29064,7 +29321,7 @@ snapshots:
dependencies:
is-number: 7.0.0
- toad-cache@3.7.1: {}
+ toad-cache@3.7.0: {}
toidentifier@1.0.1: {}
@@ -29072,11 +29329,11 @@ snapshots:
tough-cookie@5.1.2:
dependencies:
- tldts: 6.1.86
+ tldts: 6.1.69
tough-cookie@6.0.1:
dependencies:
- tldts: 7.4.5
+ tldts: 7.0.12
tr46@0.0.3: {}
@@ -29100,36 +29357,36 @@ snapshots:
trough@2.2.0: {}
- trpc-to-mcp@1.3.2(@trpc/server@11.18.0(typescript@7.0.1-rc))(better-auth@1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.2))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3):
+ trpc-to-mcp@1.3.2(@trpc/server@11.18.0(typescript@6.0.3))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3):
dependencies:
'@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3)
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
- better-auth: 1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.2))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.2))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc))
- mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.9(@babel/core@7.29.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))
+ '@trpc/server': 11.18.0(typescript@6.0.3)
+ better-auth: 1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3))
+ mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(next@16.2.10(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))
zod: 4.4.3
transitivePeerDependencies:
- '@cfworker/json-schema'
- supports-color
- trpc-to-mcp@1.3.2(@trpc/server@11.18.0(typescript@7.0.1-rc))(better-auth@1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@26.0.1))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3):
+ trpc-to-mcp@1.3.2(@trpc/server@11.18.0(typescript@6.0.3))(better-auth@1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3)))(mcp-handler@1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0)))(zod@4.4.3):
dependencies:
'@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3)
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
- better-auth: 1.6.23(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(kysely@0.29.2)(mysql2@3.22.5(@types/node@26.0.1))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@26.0.1))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.39(typescript@7.0.1-rc))
- mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.9(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))
+ '@trpc/server': 11.18.0(typescript@6.0.3)
+ better-auth: 1.6.15(@opentelemetry/api@1.9.0)(better-sqlite3@12.11.1)(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@libsql/client-wasm@0.14.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.20.0)(better-sqlite3@12.11.1)(gel@2.0.0)(kysely@0.29.2)(mysql2@3.22.5(@types/node@24.13.3))(pg@8.22.0)(sql.js@1.14.1))(mysql2@3.22.5(@types/node@24.13.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))(pg@8.22.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(vitest@4.1.9)(vue@3.5.35(typescript@6.0.3))
+ mcp-handler: 1.1.0(@modelcontextprotocol/sdk@1.26.0(zod@4.4.3))(next@16.2.10(@opentelemetry/api@1.9.0)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.101.0))
zod: 4.4.3
transitivePeerDependencies:
- '@cfworker/json-schema'
- supports-color
- trpc-to-openapi@3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(typescript@7.0.1-rc))(zod-openapi@5.4.6(zod@4.4.3))(zod@4.4.3):
+ trpc-to-openapi@3.3.0(patch_hash=2ca3c16af0fcca0c736697ad4fe553a14f794524fa9ce0d5c3e8ee4aea76090c)(@trpc/server@11.18.0(typescript@6.0.3))(zod-openapi@5.3.0(zod@4.4.3))(zod@4.4.3):
dependencies:
- '@trpc/server': 11.18.0(typescript@7.0.1-rc)
+ '@trpc/server': 11.18.0(typescript@6.0.3)
co-body: 6.2.0
h3: 1.15.11
openapi3-ts: 4.4.0
zod: 4.4.3
- zod-openapi: 5.4.6(zod@4.4.3)
+ zod-openapi: 5.3.0(zod@4.4.3)
optionalDependencies:
'@rollup/rollup-linux-x64-gnu': 4.6.1
@@ -29139,11 +29396,11 @@ snapshots:
string-byte-length: 3.0.1
string-byte-slice: 3.0.1
- ts-dedent@2.3.0: {}
+ ts-dedent@2.2.0: {}
- tsconfck@3.1.6(typescript@7.0.1-rc):
+ tsconfck@3.1.3(typescript@6.0.3):
optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
tsdav@2.3.0:
dependencies:
@@ -29161,13 +29418,14 @@ snapshots:
tsx@4.20.4:
dependencies:
esbuild: 0.25.12
- get-tsconfig: 4.14.0
+ get-tsconfig: 4.13.6
optionalDependencies:
fsevents: 2.3.3
- tsx@4.22.4:
+ tsx@4.21.0:
dependencies:
- esbuild: 0.28.1
+ esbuild: 0.27.7
+ get-tsconfig: 4.13.6
optionalDependencies:
fsevents: 2.3.3
@@ -29181,14 +29439,14 @@ snapshots:
tunnel@0.0.6: {}
- turbo@2.10.2:
+ turbo@2.10.4:
optionalDependencies:
- '@turbo/darwin-64': 2.10.2
- '@turbo/darwin-arm64': 2.10.2
- '@turbo/linux-64': 2.10.2
- '@turbo/linux-arm64': 2.10.2
- '@turbo/windows-64': 2.10.2
- '@turbo/windows-arm64': 2.10.2
+ '@turbo/darwin-64': 2.10.4
+ '@turbo/darwin-arm64': 2.10.4
+ '@turbo/linux-64': 2.10.4
+ '@turbo/linux-arm64': 2.10.4
+ '@turbo/windows-64': 2.10.4
+ '@turbo/windows-arm64': 2.10.4
tweetnacl@0.14.5: {}
@@ -29198,6 +29456,10 @@ snapshots:
type-fest@4.41.0: {}
+ type-fest@5.6.0:
+ dependencies:
+ tagged-tag: 1.0.0
+
type-fest@5.7.0:
dependencies:
tagged-tag: 1.0.0
@@ -29217,28 +29479,7 @@ snapshots:
dependencies:
is-typedarray: 1.0.0
- typescript@7.0.1-rc:
- optionalDependencies:
- '@typescript/typescript-aix-ppc64': 7.0.1-rc
- '@typescript/typescript-darwin-arm64': 7.0.1-rc
- '@typescript/typescript-darwin-x64': 7.0.1-rc
- '@typescript/typescript-freebsd-arm64': 7.0.1-rc
- '@typescript/typescript-freebsd-x64': 7.0.1-rc
- '@typescript/typescript-linux-arm': 7.0.1-rc
- '@typescript/typescript-linux-arm64': 7.0.1-rc
- '@typescript/typescript-linux-loong64': 7.0.1-rc
- '@typescript/typescript-linux-mips64el': 7.0.1-rc
- '@typescript/typescript-linux-ppc64': 7.0.1-rc
- '@typescript/typescript-linux-riscv64': 7.0.1-rc
- '@typescript/typescript-linux-s390x': 7.0.1-rc
- '@typescript/typescript-linux-x64': 7.0.1-rc
- '@typescript/typescript-netbsd-arm64': 7.0.1-rc
- '@typescript/typescript-netbsd-x64': 7.0.1-rc
- '@typescript/typescript-openbsd-arm64': 7.0.1-rc
- '@typescript/typescript-openbsd-x64': 7.0.1-rc
- '@typescript/typescript-sunos-x64': 7.0.1-rc
- '@typescript/typescript-win32-arm64': 7.0.1-rc
- '@typescript/typescript-win32-x64': 7.0.1-rc
+ typescript@6.0.3: {}
ufo@1.6.4: {}
@@ -29253,9 +29494,9 @@ snapshots:
undici-types@7.18.2: {}
- undici-types@8.3.0: {}
+ undici@6.23.0: {}
- undici@6.27.0: {}
+ undici@7.25.0: {}
undici@7.28.0: {}
@@ -29282,8 +29523,6 @@ snapshots:
unicorn-magic@0.3.0: {}
- unicorn-magic@0.4.0: {}
-
unified@11.0.5:
dependencies:
'@types/unist': 3.0.3
@@ -29301,11 +29540,11 @@ snapshots:
unist-util-find-after@5.0.0:
dependencies:
'@types/unist': 3.0.3
- unist-util-is: 6.0.1
+ unist-util-is: 6.0.0
unist-util-is@4.1.0: {}
- unist-util-is@6.0.1:
+ unist-util-is@6.0.0:
dependencies:
'@types/unist': 3.0.3
@@ -29326,10 +29565,10 @@ snapshots:
'@types/unist': 2.0.11
unist-util-is: 4.1.0
- unist-util-visit-parents@6.0.2:
+ unist-util-visit-parents@6.0.1:
dependencies:
'@types/unist': 3.0.3
- unist-util-is: 6.0.1
+ unist-util-is: 6.0.0
unist-util-visit@2.0.3:
dependencies:
@@ -29337,15 +29576,21 @@ snapshots:
unist-util-is: 4.1.0
unist-util-visit-parents: 3.1.1
+ unist-util-visit@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
unist-util-visit@5.1.0:
dependencies:
'@types/unist': 3.0.3
- unist-util-is: 6.0.1
- unist-util-visit-parents: 6.0.2
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
- universal-github-app-jwt@2.2.2: {}
+ universal-github-app-jwt@2.2.0: {}
- universal-user-agent@7.0.3: {}
+ universal-user-agent@7.0.2: {}
universalify@2.0.1: {}
@@ -29354,9 +29599,9 @@ snapshots:
until-async@3.0.2:
optional: true
- update-browserslist-db@1.2.3(browserslist@4.28.4):
+ update-browserslist-db@1.2.3(browserslist@4.28.2):
dependencies:
- browserslist: 4.28.4
+ browserslist: 4.28.2
escalade: 3.2.0
picocolors: 1.1.1
@@ -29373,7 +29618,7 @@ snapshots:
is-yarn-global: 0.4.1
latest-version: 7.0.0
pupa: 3.3.0
- semver: 7.8.5
+ semver: 7.7.4
semver-diff: 4.0.0
xdg-basedir: 5.1.0
@@ -29383,14 +29628,14 @@ snapshots:
url-join@5.0.0: {}
- url-loader@4.1.1(file-loader@6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ url-loader@4.1.1(file-loader@6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
loader-utils: 2.0.4
mime-types: 2.1.35
schema-utils: 3.3.0
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
optionalDependencies:
- file-loader: 6.2.0(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ file-loader: 6.2.0(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
use-callback-ref@1.3.3(@types/react@19.2.17)(react@19.2.7):
dependencies:
@@ -29411,10 +29656,10 @@ snapshots:
use-intl@4.13.1(react@19.2.7):
dependencies:
- '@formatjs/fast-memoize': 3.1.6
+ '@formatjs/fast-memoize': 3.1.0
'@schummar/icu-type-parser': 1.21.5
icu-minify: 4.13.1
- intl-messageformat: 11.2.9
+ intl-messageformat: 11.1.1
react: 19.2.7
use-sidecar@1.1.3(@types/react@19.2.17)(react@19.2.7):
@@ -29437,7 +29682,7 @@ snapshots:
utils-merge@1.0.1: {}
- uuid@14.0.1: {}
+ uuid@14.0.0: {}
uuid@8.3.2: {}
@@ -29449,7 +29694,7 @@ snapshots:
validate-peer-dependencies@2.2.0:
dependencies:
resolve-package-path: 4.0.3
- semver: 7.8.5
+ semver: 7.7.4
value-equal@1.0.1: {}
@@ -29460,7 +29705,7 @@ snapshots:
'@types/unist': 3.0.3
vfile: 6.0.3
- vfile-message@4.0.3:
+ vfile-message@4.0.2:
dependencies:
'@types/unist': 3.0.3
unist-util-stringify-position: 4.0.0
@@ -29468,15 +29713,15 @@ snapshots:
vfile@6.0.3:
dependencies:
'@types/unist': 3.0.3
- vfile-message: 4.0.3
+ vfile-message: 4.0.2
victory-vendor@37.3.6:
dependencies:
- '@types/d3-array': 3.2.2
+ '@types/d3-array': 3.2.1
'@types/d3-ease': 3.0.2
'@types/d3-interpolate': 3.0.4
'@types/d3-scale': 4.0.9
- '@types/d3-shape': 3.1.8
+ '@types/d3-shape': 3.1.7
'@types/d3-time': 3.0.4
'@types/d3-timer': 3.0.2
d3-array: 3.2.4
@@ -29513,17 +29758,17 @@ snapshots:
dependencies:
global: 4.4.0
- vite-tsconfig-paths@6.1.1(typescript@7.0.1-rc)(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)):
+ vite-tsconfig-paths@6.1.1(typescript@6.0.3)(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
- tsconfck: 3.1.6(typescript@7.0.1-rc)
- vite: 8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
+ tsconfck: 3.1.3(typescript@6.0.3)
+ vite: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0):
+ vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
@@ -29536,13 +29781,12 @@ snapshots:
fsevents: 2.3.3
jiti: 2.7.0
sass: 1.101.0
- sugarss: 5.0.1(postcss@8.5.16)
- terser: 5.48.0
- tsx: 4.22.4
+ sugarss: 5.0.0(postcss@8.5.16)
+ terser: 5.46.1
+ tsx: 4.21.0
yaml: 2.9.0
- optional: true
- vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0):
+ vite@8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
@@ -29550,96 +29794,97 @@ snapshots:
rolldown: 1.1.4
tinyglobby: 0.2.17
optionalDependencies:
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
esbuild: 0.28.1
fsevents: 2.3.3
jiti: 2.7.0
sass: 1.101.0
- sugarss: 5.0.1(postcss@8.5.16)
- terser: 5.48.0
- tsx: 4.22.4
+ sugarss: 5.0.0(postcss@8.5.16)
+ terser: 5.46.1
+ tsx: 4.21.0
yaml: 2.9.0
+ optional: true
- vitest@4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@24.13.2)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)):
+ vitest@4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.2)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.9
- '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@24.13.2)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.9
'@vitest/runner': 4.1.9
'@vitest/snapshot': 4.1.9
'@vitest/spy': 4.1.9
'@vitest/utils': 4.1.9
- es-module-lexer: 2.2.0
- expect-type: 1.4.0
+ es-module-lexer: 2.1.0
+ expect-type: 1.3.0
magic-string: 0.30.21
- obug: 2.1.3
+ obug: 2.1.1
pathe: 2.0.3
picomatch: 4.0.4
- std-env: 4.1.0
+ std-env: 4.0.0
tinybench: 2.9.0
- tinyexec: 1.2.4
+ tinyexec: 1.0.2
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
+ vite: 8.1.3(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
'@types/node': 24.13.2
'@vitest/coverage-v8': 4.1.9(vitest@4.1.9)
'@vitest/ui': 4.1.9(vitest@4.1.9)
- jsdom: 29.1.1(@noble/hashes@2.2.0)
+ jsdom: 29.1.1(@noble/hashes@2.0.1)
transitivePeerDependencies:
- msw
- optional: true
- vitest@4.1.9(@opentelemetry/api@1.9.0)(@types/node@26.0.1)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.2.0))(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)):
+ vitest@4.1.9(@opentelemetry/api@1.9.0)(@types/node@24.13.3)(@vitest/coverage-v8@4.1.9)(@vitest/ui@4.1.9)(jsdom@29.1.1(@noble/hashes@2.0.1))(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
'@vitest/expect': 4.1.9
- '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@26.0.1)(typescript@7.0.1-rc))(vite@8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.9(msw@2.14.6(@types/node@24.13.3)(typescript@6.0.3))(vite@8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.9
'@vitest/runner': 4.1.9
'@vitest/snapshot': 4.1.9
'@vitest/spy': 4.1.9
'@vitest/utils': 4.1.9
- es-module-lexer: 2.2.0
- expect-type: 1.4.0
+ es-module-lexer: 2.1.0
+ expect-type: 1.3.0
magic-string: 0.30.21
- obug: 2.1.3
+ obug: 2.1.1
pathe: 2.0.3
picomatch: 4.0.4
- std-env: 4.1.0
+ std-env: 4.0.0
tinybench: 2.9.0
- tinyexec: 1.2.4
+ tinyexec: 1.0.2
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 8.1.3(@types/node@26.0.1)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.1(postcss@8.5.16))(terser@5.48.0)(tsx@4.22.4)(yaml@2.9.0)
+ vite: 8.1.3(@types/node@24.13.3)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.101.0)(sugarss@5.0.0(postcss@8.5.16))(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@types/node': 26.0.1
+ '@types/node': 24.13.3
'@vitest/coverage-v8': 4.1.9(vitest@4.1.9)
'@vitest/ui': 4.1.9(vitest@4.1.9)
- jsdom: 29.1.1(@noble/hashes@2.2.0)
+ jsdom: 29.1.1(@noble/hashes@2.0.1)
transitivePeerDependencies:
- msw
+ optional: true
- vue-component-type-helpers@3.3.6: {}
+ vue-component-type-helpers@3.3.4: {}
- vue-demi@0.14.10(vue@3.5.39(typescript@7.0.1-rc)):
+ vue-demi@0.14.10(vue@3.5.35(typescript@6.0.3)):
dependencies:
- vue: 3.5.39(typescript@7.0.1-rc)
+ vue: 3.5.35(typescript@6.0.3)
vue-sonner@1.3.2: {}
- vue@3.5.39(typescript@7.0.1-rc):
+ vue@3.5.35(typescript@6.0.3):
dependencies:
- '@vue/compiler-dom': 3.5.39
- '@vue/compiler-sfc': 3.5.39
- '@vue/runtime-dom': 3.5.39
- '@vue/server-renderer': 3.5.39(vue@3.5.39(typescript@7.0.1-rc))
- '@vue/shared': 3.5.39
+ '@vue/compiler-dom': 3.5.35
+ '@vue/compiler-sfc': 3.5.35
+ '@vue/runtime-dom': 3.5.35
+ '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@6.0.3))
+ '@vue/shared': 3.5.35
optionalDependencies:
- typescript: 7.0.1-rc
+ typescript: 6.0.3
w3c-keyname@2.2.8: {}
@@ -29647,8 +29892,9 @@ snapshots:
dependencies:
xml-name-validator: 5.0.0
- watchpack@2.5.2:
+ watchpack@2.5.1:
dependencies:
+ glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
wbuf@1.7.3:
@@ -29659,8 +29905,6 @@ snapshots:
web-vitals@5.3.0: {}
- web-worker@1.5.0: {}
-
webidl-conversions@3.0.1: {}
webidl-conversions@8.0.1: {}
@@ -29668,7 +29912,7 @@ snapshots:
webpack-bundle-analyzer@4.10.2:
dependencies:
'@discoveryjs/json-ext': 0.5.7
- acorn: 8.17.0
+ acorn: 8.16.0
acorn-walk: 8.3.5
commander: 7.2.0
debounce: 1.2.1
@@ -29683,39 +29927,39 @@ snapshots:
- bufferutil
- utf-8-validate
- webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
colorette: 2.0.20
- memfs: 4.57.8(tslib@2.8.1)
+ memfs: 4.57.6(tslib@2.8.1)
mime-types: 3.0.2
on-finished: 2.4.1
- range-parser: 1.3.0
+ range-parser: 1.2.1
schema-utils: 4.3.3
optionalDependencies:
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- tslib
- webpack-dev-server@5.2.5(tslib@2.8.1)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ webpack-dev-server@5.2.4(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
'@types/bonjour': 3.5.13
'@types/connect-history-api-fallback': 1.5.4
'@types/express': 4.17.25
- '@types/express-serve-static-core': 4.19.8
+ '@types/express-serve-static-core': 4.19.5
'@types/serve-index': 1.9.4
- '@types/serve-static': 1.15.10
+ '@types/serve-static': 1.15.7
'@types/sockjs': 0.3.36
'@types/ws': 8.18.1
ansi-html-community: 0.0.8
- bonjour-service: 1.4.2
+ bonjour-service: 1.4.0
chokidar: 3.6.0
colorette: 2.0.20
compression: 1.8.1
connect-history-api-fallback: 2.0.0
express: 4.22.2
graceful-fs: 4.2.11
- http-proxy-middleware: 2.0.10(@types/express@4.17.25)
- ipaddr.js: 2.4.0
+ http-proxy-middleware: 2.0.9(@types/express@4.17.25)
+ ipaddr.js: 2.3.0
launch-editor: 2.14.1
open: 10.2.0
p-retry: 6.2.1
@@ -29724,10 +29968,10 @@ snapshots:
serve-index: 1.9.2
sockjs: 0.3.24
spdy: 4.0.2
- webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
+ webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
ws: 8.21.0
optionalDependencies:
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
transitivePeerDependencies:
- bufferutil
- debug
@@ -29749,29 +29993,30 @@ snapshots:
webpack-sources@3.5.0: {}
- webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(@swc/html@1.15.43)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16):
+ webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16):
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.17.0
- acorn-import-phases: 1.0.4(acorn@8.17.0)
- browserslist: 4.28.4
+ acorn: 8.16.0
+ acorn-import-phases: 1.0.4(acorn@8.16.0)
+ browserslist: 4.28.2
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.24.1
- es-module-lexer: 2.2.0
+ enhanced-resolve: 5.22.0
+ es-module-lexer: 2.1.0
eslint-scope: 5.1.1
events: 3.3.0
+ glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
loader-runner: 4.3.2
mime-db: 1.54.0
- minimizer-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(@swc/html@1.15.43)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.3
- watchpack: 2.5.2
+ terser-webpack-plugin: 5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(@swc/html@1.15.40)(esbuild@0.28.1)(lightningcss@1.32.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ watchpack: 2.5.1
webpack-sources: 3.5.0
transitivePeerDependencies:
- '@minify-html/node'
@@ -29787,29 +30032,30 @@ snapshots:
- postcss
- uglify-js
- webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16):
+ webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16):
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.17.0
- acorn-import-phases: 1.0.4(acorn@8.17.0)
- browserslist: 4.28.4
+ acorn: 8.16.0
+ acorn-import-phases: 1.0.4(acorn@8.16.0)
+ browserslist: 4.28.2
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.24.1
- es-module-lexer: 2.2.0
+ enhanced-resolve: 5.22.0
+ es-module-lexer: 2.1.0
eslint-scope: 5.1.1
events: 3.3.0
+ glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
loader-runner: 4.3.2
mime-db: 1.54.0
- minimizer-webpack-plugin: 5.6.1(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16))
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.3
- watchpack: 2.5.2
+ terser-webpack-plugin: 5.6.0(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16))
+ watchpack: 2.5.1
webpack-sources: 3.5.0
transitivePeerDependencies:
- '@minify-html/node'
@@ -29825,29 +30071,30 @@ snapshots:
- postcss
- uglify-js
- webpack@5.108.3(esbuild@0.28.1)(postcss@8.5.16):
+ webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16):
dependencies:
- '@types/estree': 1.0.9
+ '@types/estree': 1.0.8
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.17.0
- acorn-import-phases: 1.0.4(acorn@8.17.0)
- browserslist: 4.28.4
+ acorn: 8.16.0
+ acorn-import-phases: 1.0.4(acorn@8.16.0)
+ browserslist: 4.28.2
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.24.1
- es-module-lexer: 2.2.0
+ enhanced-resolve: 5.22.0
+ es-module-lexer: 2.1.0
eslint-scope: 5.1.1
events: 3.3.0
+ glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
loader-runner: 4.3.2
mime-db: 1.54.0
- minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(postcss@8.5.16)(webpack@5.108.3(esbuild@0.28.1)(postcss@8.5.16))
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.3
- watchpack: 2.5.2
+ terser-webpack-plugin: 5.6.0(esbuild@0.28.1)(postcss@8.5.16)(webpack@5.107.1(esbuild@0.28.1)(postcss@8.5.16))
+ watchpack: 2.5.1
webpack-sources: 3.5.0
transitivePeerDependencies:
- '@minify-html/node'
@@ -29863,15 +30110,15 @@ snapshots:
- postcss
- uglify-js
- webpackbar@7.0.0(@rspack/core@1.7.12(@swc/helpers@0.5.23))(webpack@5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(esbuild@0.28.1)(postcss@8.5.16)):
+ webpackbar@7.0.0(@rspack/core@1.7.11(@swc/helpers@0.5.15))(webpack@5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(esbuild@0.28.1)(postcss@8.5.16)):
dependencies:
ansis: 3.17.0
consola: 3.4.2
pretty-time: 1.1.0
std-env: 3.10.0
optionalDependencies:
- '@rspack/core': 1.7.12(@swc/helpers@0.5.23)
- webpack: 5.108.3(@swc/core@1.15.43(@swc/helpers@0.5.23))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
+ '@rspack/core': 1.7.11(@swc/helpers@0.5.15)
+ webpack: 5.107.1(@swc/core@1.15.3(@swc/helpers@0.5.15))(clean-css@5.3.3)(cssnano@6.1.2(postcss@8.5.16))(esbuild@0.28.1)(html-minifier-terser@7.2.0)(postcss@8.5.16)
websocket-driver@0.7.5:
dependencies:
@@ -29889,9 +30136,9 @@ snapshots:
whatwg-mimetype@5.0.0: {}
- whatwg-url@16.0.1(@noble/hashes@2.2.0):
+ whatwg-url@16.0.1(@noble/hashes@2.0.1):
dependencies:
- '@exodus/bytes': 1.15.1(@noble/hashes@2.2.0)
+ '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
tr46: 6.0.0
webidl-conversions: 8.0.1
transitivePeerDependencies:
@@ -29906,6 +30153,11 @@ snapshots:
dependencies:
isexe: 2.0.0
+ which@4.0.0:
+ dependencies:
+ isexe: 3.1.5
+ optional: true
+
why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
@@ -29955,13 +30207,13 @@ snapshots:
dependencies:
ansi-styles: 6.2.3
string-width: 5.1.2
- strip-ansi: 7.2.0
+ strip-ansi: 7.1.2
wrap-ansi@9.0.2:
dependencies:
ansi-styles: 6.2.3
string-width: 7.2.0
- strip-ansi: 7.2.0
+ strip-ansi: 7.1.2
wrappy@1.0.2: {}
@@ -30024,7 +30276,7 @@ snapshots:
yargs-parser@22.0.0: {}
- yargs@16.2.2:
+ yargs@16.2.0:
dependencies:
cliui: 7.0.4
escalade: 3.2.0
@@ -30034,7 +30286,7 @@ snapshots:
y18n: 5.0.8
yargs-parser: 20.2.9
- yargs@17.7.3:
+ yargs@17.7.2:
dependencies:
cliui: 8.0.1
escalade: 3.2.0
@@ -30057,20 +30309,20 @@ snapshots:
yoctocolors-cjs@2.1.3: {}
- yoctocolors@2.1.2: {}
+ yoctocolors@2.1.1: {}
zip-stream@6.0.1:
dependencies:
archiver-utils: 5.0.2
compress-commons: 6.0.2
- readable-stream: 4.7.0
+ readable-stream: 4.5.2
zod-form-data@3.0.2(zod@4.4.3):
dependencies:
- '@rvf/set-get': 7.0.2
+ '@rvf/set-get': 7.0.1
zod: 4.4.3
- zod-openapi@5.4.6(zod@4.4.3):
+ zod-openapi@5.3.0(zod@4.4.3):
dependencies:
zod: 4.4.3
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 33a76ce4f..d760590f0 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -18,7 +18,7 @@ catalog:
"@gitbeaker/rest": ^43.8.0
"@homarr/gridstack": ^1.12.0
"@homarr/node-unifi": ^2.6.0
- "@immich/sdk": ^3.0.0
+ "@immich/sdk": ^3.0.1
"@jellyfin/sdk": ^0.13.0
"@kubernetes/client-node": ^1.4.0
"@modelcontextprotocol/sdk": 1.29.0
@@ -33,14 +33,14 @@ catalog:
"@mantine/notifications": ^9.4.1
"@mantine/spotlight": ^9.4.1
"@mantine/tiptap": ^9.4.1
- "@next/eslint-plugin-next": 16.2.9
+ "@next/eslint-plugin-next": 16.2.10
"@octokit/auth-app": ^8.2.0
"@paralleldrive/cuid2": ^3.3.0
"@playwright/test": ^1.61.1
"@semantic-release/changelog": ^6.0.3
"@semantic-release/commit-analyzer": ^13.0.1
"@semantic-release/git": ^10.0.1
- "@semantic-release/github": ^12.0.8
+ "@semantic-release/github": ^12.0.9
"@semantic-release/npm": ^13.1.5
"@semantic-release/release-notes-generator": ^14.1.1
"@t3-oss/env-nextjs": ^0.13.11
@@ -53,28 +53,28 @@ catalog:
"@testcontainers/mysql": ^12.0.4
"@testcontainers/postgresql": ^12.0.4
"@testcontainers/redis": ^12.0.4
- "@tiptap/extension-color": 3.27.1
- "@tiptap/extension-highlight": 3.27.1
- "@tiptap/extension-image": 3.27.1
- "@tiptap/extension-link": ^3.27.1
- "@tiptap/extension-placeholder": ^3.27.1
- "@tiptap/extension-table": 3.27.1
- "@tiptap/extension-table-cell": 3.27.1
- "@tiptap/extension-table-header": 3.27.1
- "@tiptap/extension-table-row": 3.27.1
- "@tiptap/extension-task-item": 3.27.1
- "@tiptap/extension-task-list": 3.27.1
- "@tiptap/extension-text-align": 3.27.1
- "@tiptap/extension-text-style": 3.27.1
- "@tiptap/extension-underline": 3.27.1
- "@tiptap/react": ^3.27.1
- "@tiptap/starter-kit": ^3.27.1
+ "@tiptap/extension-color": 3.27.3
+ "@tiptap/extension-highlight": 3.27.3
+ "@tiptap/extension-image": 3.27.3
+ "@tiptap/extension-link": ^3.27.3
+ "@tiptap/extension-placeholder": ^3.27.3
+ "@tiptap/extension-table": 3.27.3
+ "@tiptap/extension-table-cell": 3.27.3
+ "@tiptap/extension-table-header": 3.27.3
+ "@tiptap/extension-table-row": 3.27.3
+ "@tiptap/extension-task-item": 3.27.3
+ "@tiptap/extension-task-list": 3.27.3
+ "@tiptap/extension-text-align": 3.27.3
+ "@tiptap/extension-text-style": 3.27.3
+ "@tiptap/extension-underline": 3.27.3
+ "@tiptap/react": ^3.27.3
+ "@tiptap/starter-kit": ^3.27.3
"@trpc/client": ^11.18.0
"@trpc/next": ^11.18.0
"@trpc/react-query": ^11.18.0
"@trpc/server": ^11.18.0
"@trpc/tanstack-react-query": ^11.18.0
- "@turbo/gen": ^2.10.2
+ "@turbo/gen": ^2.10.4
"@types/adm-zip": 0.5.8
"@types/bcrypt": 6.0.0
"@types/better-sqlite3": 7.6.13
@@ -83,18 +83,18 @@ catalog:
"@types/crypto-js": ^4.2.2
"@types/css-modules": ^1.0.5
"@types/dockerode": ^4.0.1
- "@types/node": ^24.13.2
+ "@types/node": ^24.13.3
"@types/node-unifi": ^2.5.1
"@types/pg": ^8.20.0
"@types/prismjs": ^1.26.6
"@types/react": 19.2.17
"@types/react-dom": 19.2.3
- "@scalar/api-reference-react": ^0.9.50
+ "@scalar/api-reference-react": ^0.9.54
"@types/video.js": ^7.3.58
"@types/ws": ^8.18.1
"@types/xml2js": ^0.4.14
- posthog-js: ^1.396.3
- posthog-node: ^5.39.1
+ posthog-js: ^1.398.2
+ posthog-node: ^5.39.2
"@vitejs/plugin-react": ^6.0.3
"@vitest/coverage-v8": ^4.1.9
"@vitest/ui": ^4.1.9
@@ -110,8 +110,8 @@ catalog:
chroma-js: ^3.2.0
clsx: ^2.1.1
concurrently: ^10.0.3
- conventional-changelog-conventionalcommits: ^10.0.0
- cookie: 2.0.0
+ conventional-changelog-conventionalcommits: ^10.2.0
+ cookie: 2.0.1
cookies: ^0.9.1
croner: 10.0.1
cross-env: ^10.1.0
@@ -139,19 +139,19 @@ catalog:
jsonpath-plus: ^10.4.0
ldapts: 8.1.8
lodash.clonedeep: ^4.5.0
- lucide-react: ^1.22.0
+ lucide-react: ^1.23.0
"mantine-contextmenu": ^9.3.1
mantine-datatable: ^9.3.1
mantine-react-table: npm:mantine-react-table-open@9.0.3
mcp-handler: ^1.1.0
maria2: ^0.4.1
mysql2: 3.22.5
- next: 16.2.9
+ next: 16.2.10
next-auth: 5.0.0-beta.31
next-intl: 4.13.1
node-loader: ^2.1.0
octokit: ^5.0.5
- oxfmt: ^0.57.0
+ oxfmt: ^0.58.0
oxlint: ^1.72.0
pg: ^8.22.0
pocketbase: ^0.26.2
@@ -177,8 +177,8 @@ catalog:
trpc-to-openapi: ^3.3.0
tsdav: ^2.3.0
tsx: 4.20.4
- turbo: ^2.10.2
- typescript: ^7.0.1-rc
+ turbo: ^2.10.4
+ typescript: ^6.0.3
vite: ^8.1.2
undici: 7.28.0
use-deep-compare-effect: ^1.8.1
@@ -206,8 +206,6 @@ minimumReleaseAgeExclude:
- next
- "@next/*"
- "@immich/sdk@3.0.0"
- - typescript@7.0.1-rc
- - "@typescript/*"
# Renovate security update: turbo@2.9.14
- turbo@2.9.14
# Renovate security update: form-data@4.0.6
@@ -224,7 +222,7 @@ overrides:
"brace-expansion@>=1.0.0 <=1.1.11": ">=5.0.7"
"esbuild@<=0.24.2": ">=0.28.1"
"form-data@>=4.0.0 <4.0.4": ">=4.0.6"
- "hono@<4.6.5": ">=4.12.27"
+ "hono@<4.6.5": ">=4.12.28"
"linkifyjs@<4.3.2": ">=4.3.3"
"nanoid@>=4.0.0 <5.0.9": ">=5.1.16"
"prismjs@<1.30.0": ">=1.30.0"
@@ -235,10 +233,11 @@ overrides:
"tar-fs@>=3.0.0 <3.0.9": ">=3.1.3"
"tar-fs@>=2.0.0 <2.1.3": ">=3.1.3"
"tmp@<=0.2.3": ">=0.2.7"
- "vite@>=5.0.0 <=5.4.18": ">=8.1.2"
+ "vite@>=5.0.0 <=5.4.18": ">=8.1.3"
patchedDependencies:
"@types/node-unifi": "patches/@types__node-unifi.patch"
"trpc-to-openapi": "patches/trpc-to-openapi.patch"
+
allowUnusedPatches: true
allowBuilds:
"@tree-sitter-grammars/tree-sitter-yaml": true
diff --git a/static-data/contributors.json b/static-data/contributors.json
index 3613cc905..c576fb0d1 100644
--- a/static-data/contributors.json
+++ b/static-data/contributors.json
@@ -1 +1 @@
-[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"marektancak0106","avatar_url":"https://avatars.githubusercontent.com/u/25422667?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"beanbag420","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"bo3bdo","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"afonsojramos","avatar_url":"https://avatars.githubusercontent.com/u/19473034?v=4"},{"login":"mvanhorn","avatar_url":"https://avatars.githubusercontent.com/u/455140?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"SergioChan","avatar_url":"https://avatars.githubusercontent.com/u/10103766?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"darbyjack","avatar_url":"https://avatars.githubusercontent.com/u/21014720?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"StrandedTurtle","avatar_url":"https://avatars.githubusercontent.com/u/132835255?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"kylegrieder","avatar_url":"https://avatars.githubusercontent.com/u/25424229?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"lopsch","avatar_url":"https://avatars.githubusercontent.com/u/4073114?v=4"},{"login":"Bergasha","avatar_url":"https://avatars.githubusercontent.com/u/25044200?v=4"},{"login":"Gilmoursa","avatar_url":"https://avatars.githubusercontent.com/u/10321421?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"},{"login":"mairas","avatar_url":"https://avatars.githubusercontent.com/u/407010?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"Nerdy-Technician","avatar_url":"https://avatars.githubusercontent.com/u/45691205?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"ohmzi","avatar_url":"https://avatars.githubusercontent.com/u/6551272?v=4"},{"login":"Rhiz3K","avatar_url":"https://avatars.githubusercontent.com/u/33246262?v=4"},{"login":"saschabuehrle","avatar_url":"https://avatars.githubusercontent.com/u/47737812?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"VIVAAN-DHAWAN","avatar_url":"https://avatars.githubusercontent.com/u/150339722?v=4"},{"login":"euduardo","avatar_url":"https://avatars.githubusercontent.com/u/22860571?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"sharpsalat","avatar_url":"https://avatars.githubusercontent.com/u/15666932?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"ashtonbatty","avatar_url":"https://avatars.githubusercontent.com/u/230635?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"cethien","avatar_url":"https://avatars.githubusercontent.com/u/60463918?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"dgshue","avatar_url":"https://avatars.githubusercontent.com/u/12952156?v=4"},{"login":"d-lindahl","avatar_url":"https://avatars.githubusercontent.com/u/690410?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"febrile42","avatar_url":"https://avatars.githubusercontent.com/u/14597122?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"KelianB","avatar_url":"https://avatars.githubusercontent.com/u/11216155?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"Lok3sh-kumar","avatar_url":"https://avatars.githubusercontent.com/u/110459168?v=4"},{"login":"Bricklou","avatar_url":"https://avatars.githubusercontent.com/u/15181236?v=4"}]
\ No newline at end of file
+[{"login":"ajnart","avatar_url":"https://avatars.githubusercontent.com/u/49837342?v=4"},{"login":"manuel-rw","avatar_url":"https://avatars.githubusercontent.com/u/30572287?v=4"},{"login":"Meierschlumpf","avatar_url":"https://avatars.githubusercontent.com/u/63781622?v=4"},{"login":"SeDemal","avatar_url":"https://avatars.githubusercontent.com/u/26098587?v=4"},{"login":"lammersbjorn","avatar_url":"https://avatars.githubusercontent.com/u/71191962?v=4"},{"login":"LarveyOfficial","avatar_url":"https://avatars.githubusercontent.com/u/39219859?v=4"},{"login":"c00ldude1oo","avatar_url":"https://avatars.githubusercontent.com/u/15677803?v=4"},{"login":"InterN0te","avatar_url":"https://avatars.githubusercontent.com/u/10882916?v=4"},{"login":"Aimsucks","avatar_url":"https://avatars.githubusercontent.com/u/1828486?v=4"},{"login":"JannesV","avatar_url":"https://avatars.githubusercontent.com/u/5984244?v=4"},{"login":"MauriceNino","avatar_url":"https://avatars.githubusercontent.com/u/18658092?v=4"},{"login":"hillaliy","avatar_url":"https://avatars.githubusercontent.com/u/950010?v=4"},{"login":"Skeeww","avatar_url":"https://avatars.githubusercontent.com/u/9639992?v=4"},{"login":"RichyHBM","avatar_url":"https://avatars.githubusercontent.com/u/5472275?v=4"},{"login":"Bonfire","avatar_url":"https://avatars.githubusercontent.com/u/5704760?v=4"},{"login":"wieli99","avatar_url":"https://avatars.githubusercontent.com/u/46794825?v=4"},{"login":"ishaanparlikar","avatar_url":"https://avatars.githubusercontent.com/u/43013132?v=4"},{"login":"Zareix","avatar_url":"https://avatars.githubusercontent.com/u/29818713?v=4"},{"login":"tuggan","avatar_url":"https://avatars.githubusercontent.com/u/4325608?v=4"},{"login":"Spillebulle","avatar_url":"https://avatars.githubusercontent.com/u/46653946?v=4"},{"login":"marektancak0106","avatar_url":"https://avatars.githubusercontent.com/u/25422667?v=4"},{"login":"spkesDE","avatar_url":"https://avatars.githubusercontent.com/u/1682314?v=4"},{"login":"j3lte","avatar_url":"https://avatars.githubusercontent.com/u/2557568?v=4"},{"login":"dslatt","avatar_url":"https://avatars.githubusercontent.com/u/5211001?v=4"},{"login":"Malong11-007","avatar_url":"https://avatars.githubusercontent.com/u/40298510?v=4"},{"login":"StefanB7","avatar_url":"https://avatars.githubusercontent.com/u/22056509?v=4"},{"login":"souravghosh01","avatar_url":"https://avatars.githubusercontent.com/u/37548139?v=4"},{"login":"SR3u","avatar_url":"https://avatars.githubusercontent.com/u/2380522?v=4"},{"login":"Rikpat","avatar_url":"https://avatars.githubusercontent.com/u/33869814?v=4"},{"login":"NormanJS","avatar_url":"https://avatars.githubusercontent.com/u/83409549?v=4"},{"login":"No-Maines-Land","avatar_url":"https://avatars.githubusercontent.com/u/20687725?v=4"},{"login":"stark1tty","avatar_url":"https://avatars.githubusercontent.com/u/69326376?v=4"},{"login":"Momcilo42","avatar_url":"https://avatars.githubusercontent.com/u/10118137?v=4"},{"login":"marius-arch","avatar_url":"https://avatars.githubusercontent.com/u/72494359?v=4"},{"login":"Lumilias","avatar_url":"https://avatars.githubusercontent.com/u/10852161?v=4"},{"login":"Havock94","avatar_url":"https://avatars.githubusercontent.com/u/7635248?v=4"},{"login":"Lollyde","avatar_url":"https://avatars.githubusercontent.com/u/11347524?v=4"},{"login":"krishnamuppaneni","avatar_url":"https://avatars.githubusercontent.com/u/4703366?v=4"},{"login":"devtobi","avatar_url":"https://avatars.githubusercontent.com/u/28538704?v=4"},{"login":"TyxTang","avatar_url":"https://avatars.githubusercontent.com/u/90897955?v=4"},{"login":"beanbag420","avatar_url":"https://avatars.githubusercontent.com/u/19630511?v=4"},{"login":"WillyJL","avatar_url":"https://avatars.githubusercontent.com/u/49810075?v=4"},{"login":"anonysoul","avatar_url":"https://avatars.githubusercontent.com/u/105715150?v=4"},{"login":"cospeedster","avatar_url":"https://avatars.githubusercontent.com/u/52749645?v=4"},{"login":"diederbert","avatar_url":"https://avatars.githubusercontent.com/u/162878798?v=4"},{"login":"digdilem","avatar_url":"https://avatars.githubusercontent.com/u/4052275?v=4"},{"login":"dinghino","avatar_url":"https://avatars.githubusercontent.com/u/14729459?v=4"},{"login":"gfomichev","avatar_url":"https://avatars.githubusercontent.com/u/1596146?v=4"},{"login":"gnattu","avatar_url":"https://avatars.githubusercontent.com/u/12995396?v=4"},{"login":"tuxpizza","avatar_url":"https://avatars.githubusercontent.com/u/84710786?v=4"},{"login":"xmarkurion","avatar_url":"https://avatars.githubusercontent.com/u/46654687?v=4"},{"login":"huanga","avatar_url":"https://avatars.githubusercontent.com/u/732970?v=4"},{"login":"taos15","avatar_url":"https://avatars.githubusercontent.com/u/122130728?v=4"},{"login":"arghyadipchak","avatar_url":"https://avatars.githubusercontent.com/u/32430374?v=4"},{"login":"AuthorShin","avatar_url":"https://avatars.githubusercontent.com/u/4959043?v=4"},{"login":"benniblot","avatar_url":"https://avatars.githubusercontent.com/u/47495914?v=4"},{"login":"bebsworthy","avatar_url":"https://avatars.githubusercontent.com/u/5266759?v=4"},{"login":"catrielmuller","avatar_url":"https://avatars.githubusercontent.com/u/2272323?v=4"},{"login":"Vysp3r","avatar_url":"https://avatars.githubusercontent.com/u/62019735?v=4"},{"login":"DR-Blogs","avatar_url":"https://avatars.githubusercontent.com/u/96393186?v=4"},{"login":"singular0","avatar_url":"https://avatars.githubusercontent.com/u/1925883?v=4"},{"login":"diogovalentte","avatar_url":"https://avatars.githubusercontent.com/u/49578155?v=4"},{"login":"codezninja","avatar_url":"https://avatars.githubusercontent.com/u/4400773?v=4"},{"login":"fabricionaweb","avatar_url":"https://avatars.githubusercontent.com/u/15933?v=4"},{"login":"nyok1912","avatar_url":"https://avatars.githubusercontent.com/u/32163949?v=4"},{"login":"Hamad3bdulla","avatar_url":"https://avatars.githubusercontent.com/u/5271380?v=4"},{"login":"hskrtich","avatar_url":"https://avatars.githubusercontent.com/u/1214484?v=4"},{"login":"ishults","avatar_url":"https://avatars.githubusercontent.com/u/7275442?v=4"},{"login":"jelliuk","avatar_url":"https://avatars.githubusercontent.com/u/4790959?v=4"},{"login":"Moohan","avatar_url":"https://avatars.githubusercontent.com/u/5982260?v=4"},{"login":"tesar-tech","avatar_url":"https://avatars.githubusercontent.com/u/33880579?v=4"},{"login":"jbruell","avatar_url":"https://avatars.githubusercontent.com/u/31685172?v=4"},{"login":"JasonLeeB06","avatar_url":"https://avatars.githubusercontent.com/u/82266978?v=4"},{"login":"jeffersonraimon","avatar_url":"https://avatars.githubusercontent.com/u/80064475?v=4"},{"login":"jo-chemla","avatar_url":"https://avatars.githubusercontent.com/u/16822841?v=4"},{"login":"joser93","avatar_url":"https://avatars.githubusercontent.com/u/6912089?v=4"},{"login":"justijndepover","avatar_url":"https://avatars.githubusercontent.com/u/9008623?v=4"},{"login":"Aandree5","avatar_url":"https://avatars.githubusercontent.com/u/32734153?v=4"},{"login":"afonsojramos","avatar_url":"https://avatars.githubusercontent.com/u/19473034?v=4"},{"login":"mvanhorn","avatar_url":"https://avatars.githubusercontent.com/u/455140?v=4"},{"login":"jackwellerreal","avatar_url":"https://avatars.githubusercontent.com/u/97435840?v=4"},{"login":"Bergasha","avatar_url":"https://avatars.githubusercontent.com/u/25044200?v=4"},{"login":"Copilot","avatar_url":"https://avatars.githubusercontent.com/in/1143301?v=4"},{"login":"SergioChan","avatar_url":"https://avatars.githubusercontent.com/u/10103766?v=4"},{"login":"toineenzo","avatar_url":"https://avatars.githubusercontent.com/u/4921397?v=4"},{"login":"oben01","avatar_url":"https://avatars.githubusercontent.com/u/22369027?v=4"},{"login":"rezstje","avatar_url":"https://avatars.githubusercontent.com/u/45420315?v=4"},{"login":"darbyjack","avatar_url":"https://avatars.githubusercontent.com/u/21014720?v=4"},{"login":"castielwaverly","avatar_url":"https://avatars.githubusercontent.com/u/137005689?v=4"},{"login":"xoxyuxu","avatar_url":"https://avatars.githubusercontent.com/u/3543416?v=4"},{"login":"tvervest","avatar_url":"https://avatars.githubusercontent.com/u/5818471?v=4"},{"login":"StrandedTurtle","avatar_url":"https://avatars.githubusercontent.com/u/132835255?v=4"},{"login":"MaienM","avatar_url":"https://avatars.githubusercontent.com/u/583129?v=4"},{"login":"kylegrieder","avatar_url":"https://avatars.githubusercontent.com/u/25424229?v=4"},{"login":"HeapReaper","avatar_url":"https://avatars.githubusercontent.com/u/31496522?v=4"},{"login":"lopsch","avatar_url":"https://avatars.githubusercontent.com/u/4073114?v=4"},{"login":"Gilmoursa","avatar_url":"https://avatars.githubusercontent.com/u/10321421?v=4"},{"login":"AartSchinkel","avatar_url":"https://avatars.githubusercontent.com/u/189675191?v=4"},{"login":"mairas","avatar_url":"https://avatars.githubusercontent.com/u/407010?v=4"},{"login":"itzTheMeow","avatar_url":"https://avatars.githubusercontent.com/u/50887230?v=4"},{"login":"Nerdy-Technician","avatar_url":"https://avatars.githubusercontent.com/u/45691205?v=4"},{"login":"NicolasNewman","avatar_url":"https://avatars.githubusercontent.com/u/16135852?v=4"},{"login":"NikeLaosClericus","avatar_url":"https://avatars.githubusercontent.com/u/39810627?v=4"},{"login":"noahcroghan","avatar_url":"https://avatars.githubusercontent.com/u/27422774?v=4"},{"login":"ohmzi","avatar_url":"https://avatars.githubusercontent.com/u/6551272?v=4"},{"login":"Rhiz3K","avatar_url":"https://avatars.githubusercontent.com/u/33246262?v=4"},{"login":"saschabuehrle","avatar_url":"https://avatars.githubusercontent.com/u/47737812?v=4"},{"login":"CrazyWolf13","avatar_url":"https://avatars.githubusercontent.com/u/96661824?v=4"},{"login":"VIVAAN-DHAWAN","avatar_url":"https://avatars.githubusercontent.com/u/150339722?v=4"},{"login":"euduardo","avatar_url":"https://avatars.githubusercontent.com/u/22860571?v=4"},{"login":"generalmat82","avatar_url":"https://avatars.githubusercontent.com/u/110256073?v=4"},{"login":"lthomsen","avatar_url":"https://avatars.githubusercontent.com/u/28560325?v=4"},{"login":"pitschi","avatar_url":"https://avatars.githubusercontent.com/u/6841565?v=4"},{"login":"sharpsalat","avatar_url":"https://avatars.githubusercontent.com/u/15666932?v=4"},{"login":"tech62","avatar_url":"https://avatars.githubusercontent.com/u/16237642?v=4"},{"login":"m0s4ik","avatar_url":"https://avatars.githubusercontent.com/u/26578395?v=4"},{"login":"ashtonbatty","avatar_url":"https://avatars.githubusercontent.com/u/230635?v=4"},{"login":"Oupsman","avatar_url":"https://avatars.githubusercontent.com/u/11260343?v=4"},{"login":"cethien","avatar_url":"https://avatars.githubusercontent.com/u/60463918?v=4"},{"login":"DZ945brH","avatar_url":"https://avatars.githubusercontent.com/u/42635243?v=4"},{"login":"dgshue","avatar_url":"https://avatars.githubusercontent.com/u/12952156?v=4"},{"login":"d-lindahl","avatar_url":"https://avatars.githubusercontent.com/u/690410?v=4"},{"login":"KartulUdus","avatar_url":"https://avatars.githubusercontent.com/u/23346150?v=4"},{"login":"ieugen","avatar_url":"https://avatars.githubusercontent.com/u/1050920?v=4"},{"login":"faugusto-oliveira","avatar_url":"https://avatars.githubusercontent.com/u/37384074?v=4"},{"login":"frankvHoof93","avatar_url":"https://avatars.githubusercontent.com/u/7346516?v=4"},{"login":"febrile42","avatar_url":"https://avatars.githubusercontent.com/u/14597122?v=4"},{"login":"mrjoshuap","avatar_url":"https://avatars.githubusercontent.com/u/5722442?v=4"},{"login":"Kaotic3","avatar_url":"https://avatars.githubusercontent.com/u/80522225?v=4"},{"login":"KelianB","avatar_url":"https://avatars.githubusercontent.com/u/11216155?v=4"},{"login":"hotrungnhan","avatar_url":"https://avatars.githubusercontent.com/u/40029631?v=4"},{"login":"leandroscardua","avatar_url":"https://avatars.githubusercontent.com/u/24698541?v=4"},{"login":"Lok3sh-kumar","avatar_url":"https://avatars.githubusercontent.com/u/110459168?v=4"},{"login":"Bricklou","avatar_url":"https://avatars.githubusercontent.com/u/15181236?v=4"}]
\ No newline at end of file
diff --git a/static-data/translators.json b/static-data/translators.json
index 4d0b1456d..74c6a7689 100644
--- a/static-data/translators.json
+++ b/static-data/translators.json
@@ -1 +1 @@
-[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/aaa1f083e04c572f953fde4563171e4a.jpeg"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"sam-tam-sam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17578052/medium/1628dc2954ce3ae95e0caaa2bd60ab0c.png"},{"username":"KydoxOwn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17764383/medium/0bc150a09d77f5fda43988e6342777dc.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"olavinto","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14424644/medium/37c01732bd2b7a272b421807a05ccfeb.png"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"GerOriki","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16268376/medium/da00e54b08cd40348231d92873a0cd0a_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"on9686","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16768173/medium/6282fed9aafe0262a173a5ec0887e5d9_default.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"renan.costaalencar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16938427/medium/6d25b25320c5bde734118dec4af9cd5b.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"Master3307","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17161852/medium/94ec577dd53e16b434f2aac9c34f64c6.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"Pakura","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17396930/medium/18602738018348bf2ffa83a78bf165e2_default.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg"},{"username":"michelwilhelm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg"},{"username":"dias-gxstavo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17547376/medium/8c6b109aae8aeb651192346a39ae9e5b.jpeg"},{"username":"ToxykAuBleu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17614030/medium/8d21e0608560172b121bd46126d827c7.jpeg"},{"username":"e.erdemir","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17617994/medium/7259a29db9941c6171a8cbbd643b92bd.png"},{"username":"sjonkreutz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17618306/medium/7601c45d015189a863656e21348d223b.png"},{"username":"volovich0377","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17620388/medium/c929a8fbd24f96d17620fa497ade7309.png"},{"username":"Hamstio1","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17624898/medium/406e0bf40094c24a01c3064f8f5b2a82.png"},{"username":"i3laa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17627462/medium/613a9d283ed8b69819ee181903851660.jpeg"},{"username":"bastiengrignon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17629884/medium/ddfc3339285bd65195fcd834e512e9b7.jpeg"},{"username":"kauhee","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17644600/medium/def1b9066cf9275b4273a5a5dca7f325.png"},{"username":"hongminzheng","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17683860/medium/a764f4963912777d27a7cd98e136a2b2.png"},{"username":"d-lindahl","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17726729/medium/cbde348582fbabcfadd89a56cd5a0b40.png"},{"username":"Enoal-Fauchille-Bolle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17734649/medium/6e6fb29198782dc7856ea21811db669c.jpeg"},{"username":"manos-grigorakis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17737973/medium/b37f685587c920c81fdaf9a357962434.jpeg"},{"username":"SertraFurr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17738703/medium/5f1e9f270e315ee3185cf2ccb3f5a833.png"},{"username":"Kle.Ma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17739207/medium/b767d6093e6608f251ca152f53d359b8_default.png"},{"username":"WalkerLukas","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17744485/medium/87508ce83a9b6e5391f55883a66a054b.png"},{"username":"mtya","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17748447/medium/f574d5a770d74814f8c49ee68e00f5b7.jpeg"},{"username":"Elaktrato","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17750977/medium/f4109d379f29dc8ea2e7799ac9e208c8.png"},{"username":"marcelmeis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17753627/medium/4ba32116c27e427d3073e45713f6564e.png"},{"username":"ProKafelek12e","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17760377/medium/5199af152f1ea42cee718e7729bd41ff.png"},{"username":"zalaghi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17763367/medium/a06f7b15222663517b58b8dc8902f8a1.png"}]
\ No newline at end of file
+[{"username":"carlchina","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/6697/medium/d22bbe7797bbeb30dbdc73a5648d329a_default.png"},{"username":"zielmann","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/7795/medium/ad22b8b8d5eb33e4154d53a454c862fd_default.png"},{"username":"Thalyn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12494028/medium/5faf5acc945a874ed116c4567edaa09f_default.png"},{"username":"magnushj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12503488/medium/68f32e33ea7b891960055c9f831f7344_default.png"},{"username":"almontegil","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12580457/medium/f4136cacbdfdb4c28ae7f85dc5f840db_default.png"},{"username":"andibing","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12664938/medium/b8be63e4dcb2e791ced1ffc9e3a049a5.jpg"},{"username":"gronare","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12680911/medium/c6eb14d1504156f34a158e507f73aa3d_default.png"},{"username":"SmartPhoneLover","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12701640/medium/ec95486662ec875cda080e778c3ff702.jpg"},{"username":"marcelotk_15","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12773227/medium/ecf6bea16ab0c873c131df2154ee9718_default.png"},{"username":"S3OD177","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13051544/medium/11dd990837f61f7e8f7d36b041a7fddb_default.png"},{"username":"marcg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13153301/medium/ebcf60fbf27deb148ec40a659566c6ff_default.png"},{"username":"BeersTeddy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13185230/medium/2f1f4e1effe74a23422b195cbefb2a95_default.png"},{"username":"jamesmcmahon0","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13245578/medium/586aa873b4abddbd9abc6f3de99ab70e.jpeg"},{"username":"b1nar10","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13286752/medium/aaa1f083e04c572f953fde4563171e4a.jpeg"},{"username":"vannCN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13330448/medium/9b8a9ee3611e51e951e22d5fd4eb7d8d.jpg"},{"username":"binswm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13343482/medium/45dde0e6097b9b72705d2eba9dbbc276_default.png"},{"username":"SkewRam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13496556/medium/188f5c2deb7938eda51eb786cc4539ca.jpeg"},{"username":"raphcatarino","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13547726/medium/b003511e67df13a4b4b5689488fa8099.jpg"},{"username":"shillos5","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13600557/medium/b17650b2b84f829d54fa548c44c1ab27.jpeg"},{"username":"wolong98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13641407/medium/f4634edc58c7857a357e5293543c15cf.jpg"},{"username":"spair0039","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14012333/medium/72430e96027c09c19141cac38eae4617.png"},{"username":"MajorMarcin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14072183/medium/0a197e64bb92b6ea94cecbb607512c45.jpg"},{"username":"KosmoMoustache","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14103535/medium/51c438cdd9f86e8811c75f4869de479c.png"},{"username":"Soochaehwa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14118689/medium/496a1ce63111547bf455a1e0a7ac75f1_default.png"},{"username":"garryfield","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14187035/medium/520c964706676045f6eeec1b08edc880.jpg"},{"username":"droidenko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14444264/medium/4aa3a8e824f72bc9e5ec0d8de307095e.jpeg"},{"username":"maathis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14489950/medium/6eeddf13a757ee35f78f1763f94d95e1.jpeg"},{"username":"bukvam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14546502/medium/a819dc40a13c57395a17dc46e847d3ce.jpg"},{"username":"gm.cinalli","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14670666/medium/2d466a0fdbda40764526be86c97c0ab4.jpeg"},{"username":"antoine2tt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14722148/medium/f88d926900862dd59007ea4b3419cb9d.png"},{"username":"cretzen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14799754/medium/3ba5c1805ec20c000d5810c07985afe9.jpg"},{"username":"ktKongTong","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14817246/medium/97cfc3c028dbdaf85ebd1102da71e58c.jpeg"},{"username":"marinkaberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14861042/medium/2d5c4e62613f03082f3e645fa92efd59.jpeg"},{"username":"djismgaming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14934947/medium/f5a8570713c34ab0f7d5405d105e2a9a.jpeg"},{"username":"f1refa11","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14949159/medium/fd2ae63b8eb4462200ba96abf943c1b9.png"},{"username":"jeffersonraimon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057621/medium/6dff469563860e2618bc9d45646d0ab4.png"},{"username":"giop98","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15057987/medium/b8a4825d3fc39fc662f35ee258db4b2d.jpeg"},{"username":"tomislav.kraljevic","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15118857/medium/e133f1061cc92850b854d05d8faaeafd.png"},{"username":"Walkx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15202182/medium/5c37361ae45aeed487b34582c1f7ca37.png"},{"username":"andrea.rosso","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15246318/medium/11f3f5ef44ec7f55b6f143090e208704_default.png"},{"username":"ajnart","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15270132/medium/a0f107a463c8910ee96bc2fa843a17e3.jpeg"},{"username":"Witchling","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15282238/medium/9e196b6783415b10ca571b7673c2ef33.jpg"},{"username":"guineuu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15292058/medium/22fbb758bda3b7805d50bf21d38f2c20.jpeg"},{"username":"Bulgus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15304568/medium/0e8787e5ceb02ed5c96a514d0068ae87.jpg"},{"username":"Narno","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15314996/medium/a6ba093f24884250a1bf6c6f2ca50f1b_default.png"},{"username":"BySempron","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15315986/medium/e3d22d7b1423c6823a9f36d595ed4bdb.png"},{"username":"jonathan.berglin.work","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15359236/medium/95930b2093db13b76179782f7322c5d5.png"},{"username":"icdmkg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405504/medium/f334d16cde1ac4ffb935b440d03465af.gif"},{"username":"irithys","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15405614/medium/3086461c47cce0a0c031925e5f943412.png"},{"username":"JannesV","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419912/medium/a7809eb4b817d7c49b62cf10ae86b950.png"},{"username":"benniblot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419914/medium/8086b1573d31f152ba41949b3a172445.jpeg"},{"username":"pacjo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419916/medium/3cbeddbd7bc01faafb5a3bf47bba915b_default.png"},{"username":"Payou6994","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419934/medium/37c9b9b17dfb578404c1c1ddb73ba7a8.png"},{"username":"fzibi21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15419976/medium/0da688450358e0290a7b7359cc1f7328.png"},{"username":"WowMurdock","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420118/medium/de19576fccb495b6dfe4c4c04a56b834.png"},{"username":"hbooo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420120/medium/6c7c7f8db785061356ebb03d044d3329.jpeg"},{"username":"Manicraft1001","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420178/medium/50ec94563a06a9f74f33bd09f01eed4d.jpg"},{"username":"Void123","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15420354/medium/86929d44df92a00f9fe900a985c196df_default.png"},{"username":"R4cc","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15422606/medium/a390979662b84694f59de30bdb732141.jpeg"},{"username":"fabricionaweb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15425808/medium/a9354142e7ae5152c144409d55fda551_default.png"},{"username":"JokeOfDead","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15426890/medium/a383eac9365e9de64fd4ab1d6fd0cb95.jpeg"},{"username":"hkz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15427174/medium/c88acefb0d7306e1f7470e872029fb39_default.png"},{"username":"Steken","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428516/medium/d5aea5653c769c3a523182bdb60d1664.png"},{"username":"flar.anton","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15428592/medium/b01fdb365d892e9f811f77fcb50a80a2.jpeg"},{"username":"Bon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15433542/medium/5397da4dfc821f20b6ac14fe0c514e9a.jpeg"},{"username":"bfkadan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434162/medium/4f9a0b43cfe3acaea60124c14ba7f44a.png"},{"username":"BunnySweety","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15434662/medium/f0ef200a6a0dcf0e1d0e9ecd4148f560_default.png"},{"username":"HRKings","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15436168/medium/69a31e461d38549f01864e7ef10d642e.png"},{"username":"wiston81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15439078/medium/10f292c8d12a7c21a44b54495fa4a3d8.jpeg"},{"username":"qaz0911","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15440860/medium/3d3e50ee388c72dc4bf7a771761f2d89_default.png"},{"username":"qqyule","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15441462/medium/7a3cdf82710ffb5d8f388bc0bd010665.png"},{"username":"Bims0n","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15445560/medium/603220b603eeb3367e0f0d3fa675247c.jpg"},{"username":"TariqDaCoder","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15446228/medium/50b0f4040112bbd67690b769477398e5_default.png"},{"username":"Anarchon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15449644/medium/e925e1f3e3ffbf0f982391ce263a1a28.jpeg"},{"username":"Ashun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15453020/medium/ccdcf51c73d6aae40751bb30beee1915_default.png"},{"username":"sebekmartin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15454038/medium/bcfb44598cdfd1d7cd4eb35812538962.jpeg"},{"username":"RagnarGraves","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15459882/medium/143d5af850c1154070a218bea124e9cb_default.png"},{"username":"PrtmPhlp","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15462414/medium/b80db55e9de301432dcd1f8c8b24fd49_default.png"},{"username":"DooYoo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15470768/medium/2a18cf4be67094724b508c9e1e698a21_default.png"},{"username":"espentruls","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486092/medium/8e38afc3a4ff669226a0cfd3e420ff3a.jpeg"},{"username":"frisco82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15486922/medium/4e1c5d4189b42508e660daa3c1c25b2a.jpeg"},{"username":"lupineDK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15491798/medium/461bd501e8371c062bf29ea171aedd36_default.png"},{"username":"hillaliy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15492732/medium/0bae17b421604892d888e3fc70cf0587.jpeg"},{"username":"MarcOrfilaCarreras","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15501072/medium/ea52b26c3c6f21e4931e38e3ce3f3d6e.png"},{"username":"robertbridda","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15507822/medium/a368c2e30411bb2da9b49290084191f3.png"},{"username":"MKoniuszko","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518090/medium/87605434fcc839f6763ab07c50f6d232.jpeg"},{"username":"HeroSizy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15518710/medium/4e79c0e98cbeb536dd961e656331b509.png"},{"username":"dwt136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15520022/medium/554422503f2baea43ace85facb4546fb_default.png"},{"username":"asifthewebguy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15526719/medium/b18931dd0c800d725048bd440646198b_default.png"},{"username":"eiloogs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15545537/medium/f290a2f1190983530a9b76b2e858a609.gif"},{"username":"_vytdv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15547289/medium/60d8644cc8ad6f11a92ccea4a14cd098_default.png"},{"username":"crendasien","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15554645/medium/598ab1d4aaf6b8dccd5ba16be92da7b9.jpeg"},{"username":"edxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15573823/medium/8a565b732a75a77f840dd123cdb30bf4.png"},{"username":"somerlev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15617065/medium/f4b13513e311ec902d90b2f718412c55.jpg"},{"username":"kid1412621","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15643771/medium/dd455e32de652fa88e6fd97598bdffa7.png"},{"username":"suming","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15644717/medium/244159dfe10fa03436205506f80c9e25.png"},{"username":"nick.gher","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15647517/medium/5374a2c6fef60a3fbf0edf86b997c351_default.png"},{"username":"DataCat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15650315/medium/ce7c1365adf35c5d490d77500a4607fb_default.png"},{"username":"dizo89","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15658375/medium/0ca745e5017d491fe1b22b0239904de8.jpeg"},{"username":"tee_noodle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674577/medium/804d9cf06f5196026acb6436b809d0da_default.png"},{"username":"Marty88","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15674593/medium/492b1509d52bd2809dea768121217125.jpeg"},{"username":"Spillebulle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15677023/medium/20b98bb85062e07afe0e63618f8a5feb.PNG"},{"username":"petitmewen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15685239/medium/15de9b62d2e0bc25013435f1784bbcc1.jpeg"},{"username":"NoProsNoNoobs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15687709/medium/ae8f65fafeb8bcf74dcb8871bbe46461.png"},{"username":"y.gybson","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15690777/medium/b5cb5d2d5768904ff6586c727e3a6c77.jpeg"},{"username":"inside90","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15704947/medium/c1355fcb30dd76f8e39d98d1d49f1c52.png"},{"username":"RJSkudra","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15709853/medium/c3abf2774913dc4e81fb261d36d7668c.png"},{"username":"binge203","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15713937/medium/77c1cfa4314673db80e6881fd9f64668.gif"},{"username":"Mailootje","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15714337/medium/743c3bc4ab1989966a375eeeec83d8b8.jpeg"},{"username":"tim-wiegers","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15719805/medium/08a96f064813350661cd6b20bf3d7d99.png"},{"username":"GkhnG","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15722911/medium/71a027caec489ef6ce82bcf1888329d0_default.png"},{"username":"Zoen-Millo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15760967/medium/9e956f11adc5b34f5636268b5c485dbf.jpg"},{"username":"HooinKyoma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15792897/medium/9489f0a9b368e0e827ae758b740a2eed.jpeg"},{"username":"wathergeen","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15794495/medium/a83b7fc80d180669ebfd6deb3544cfd0.png"},{"username":"MoeToo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15818233/medium/d35cd6953717706eaf20f6c143c62947.png"},{"username":"itodouble","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15836233/medium/e984caea18fb0673bf319fcf28cef649.png"},{"username":"loslocitos","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15847901/medium/fe30d12fd2cf38212f929e13b169f9ec.jpeg"},{"username":"Oversleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15849065/medium/06141f13a6d541d753f3c2f2947b8068_default.png"},{"username":"Beardy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15865139/medium/fca6b9d2b3f52e286d1568f52b83b6a0_default.png"},{"username":"raelyan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15875457/medium/2f4fda1d1aaa5dcc79b328baf3f03151.jpeg"},{"username":"dolphin738","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15913763/medium/ee6fede7b8528ca642329ada80d1cc18.png"},{"username":"brunotco","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15916719/medium/09db45880fc05abc18adb8d932a5ecf9_default.png"},{"username":"LukeIsHereToDevelop","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15924739/medium/3e6cd3940297bb4ba7bb039c93e6f918.png"},{"username":"kennit","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15925879/medium/6b0733ad3c5949b91c55e4d8b03db8a5_default.png"},{"username":"kuunpire","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15950309/medium/8192a4f08f07086828ac9f74ed29a169.jpeg"},{"username":"Sandor-dev","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15951759/medium/0216c2da4eb028164ebbecf1c72f6271_default.png"},{"username":"Meierschlumpf","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15953187/medium/23c744faef1ab84fbdc9351a7850aab6.jpeg"},{"username":"harmlesscat","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15970733/medium/dd8d0214a0250c932bb518b1b55e45a2_default.png"},{"username":"OrzWTF","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15976121/medium/4c4557cbff7ff7b0503455bc59c020e0.jpeg"},{"username":"tagaishi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15977271/medium/eade504c83a5a1ff831c80a538fbdb44_default.png"},{"username":"azurite928","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15981895/medium/547ccc459ee123e78b5401c499f1022d.png"},{"username":"Ronner231","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16021342/medium/7734d550df2de5a2fec2ffff33e7024c.jpeg"},{"username":"ugyes","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16034148/medium/ed001e3f470a2dea9a8ce955b18e7bd5.png"},{"username":"rpieja","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16045554/medium/bd55baca2ef8b92502a760cc9ee7c505_default.png"},{"username":"flambyisyou","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16051620/medium/3a3bc0c90f6b95ab4ef74396a0a17beb.png"},{"username":"Topbcy","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16077170/medium/d3aed33ea56330338756cfcd89477cfe.jpeg"},{"username":"ai5d02sb","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16084674/medium/7c8119fe2a5ca71bb15f636916a42b95_default.png"},{"username":"explosiveparrot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16097722/medium/7762f80fc1da63f5b2eb87de9d640324_default.png"},{"username":"DestroyCom","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16111544/medium/83e3d3ac5c8bfed634cd1a074854db67.png"},{"username":"neotraxo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16116966/medium/b30df957873329019a8a90a69f6efe3a.png"},{"username":"gzxpa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16123314/medium/487b05577310a946b0b98bc72c11213b_default.png"},{"username":"TORIK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16124732/medium/de770890e6411860ac06e8cc2dc0abd0_default.png"},{"username":"sergio.pibot","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16138114/medium/80db802b2fcd6bbf19ea4c7413367dca.jpeg"},{"username":"karam-ajaj","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16139838/medium/7539ab958d3c85d5f67e7849483ea8f7.jpeg"},{"username":"SimonHenz97","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16151520/medium/9b94a85b536688e2d94538c384fd0a76.png"},{"username":"olsson82","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16198988/medium/eeaab4cba210c537424d4204754b604e.png"},{"username":"bo3bdo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16222806/medium/8652f3beacb6098dde5a4cd0a29fe80d.jpeg"},{"username":"AngryPlayer04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245192/medium/342715274f4dc31fd4132cdae9126188.jpeg"},{"username":"ehatamm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16245884/medium/979d5e5526fe545be9bf46db481f7182.jpeg"},{"username":"Balionelis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16246058/medium/986d62ba363594c517d966fe9178dcbb.png"},{"username":"kwargs","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16248816/medium/19ce11f04bf1ae2637e0483399c675f9_default.png"},{"username":"lucicu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16273892/medium/3b09e8f3bead221ef98d6a45a16851dc_default.png"},{"username":"Michael5564445","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16357688/medium/9d9026a8bf3eaccb0417da240932ebf7.png"},{"username":"Netscream","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16359198/medium/694e0c8572dc8a47e6d63da31ec5b992.png"},{"username":"belicstefan04","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16368142/medium/4742dcfd7bf7ad7e33e37ac44fba7e0f.png"},{"username":"Hamad2066","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16371478/medium/f37bbc7685b6757defdbd1494236af61.jpeg"},{"username":"3ct0pl4sm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16399616/medium/ce796d1c40163975624c0a483e56374f.png"},{"username":"sanchez.marcell626","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16433865/medium/3ddde1314764cc2205ffdcd1ae719a91.png"},{"username":"Minoctis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16490079/medium/91fd0849303a4eca033d660d0a7b6854.jpeg"},{"username":"homarr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16657003/medium/3afabfd3de949a54ff5d40ad04552aba.png"},{"username":"mwgg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16658379/medium/763dd09f5c238cc5324d4d5357985292.png"},{"username":"kiwinho","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16671855/medium/bfe3a2d497dc4748a04d02e4ae2139cb.jpeg"},{"username":"tjvg4m34r13","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16679135/medium/7a483b9b0abe0d925e54808e1cb38fa0.jpeg"},{"username":"Diegoem","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16705921/medium/29ce68ebc191fc3f65499511b12de98f_default.png"},{"username":"bouks69","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16746091/medium/b58b1fc08520de416198be9df5d093eb.jpeg"},{"username":"futhgar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16748067/medium/b8c526b097f9aa9d687250cac3df16dc.jpeg"},{"username":"GrimSQL","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16764343/medium/fff729a76d1f8fbcdaee9bb0c0f5f3fd.png"},{"username":"chnikel","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767047/medium/3dda2a37e03049dafefe6697bb00f75c.png"},{"username":"yuki19870616","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16767951/medium/f59c848e38382cda6c8464b0a7b9e642_default.png"},{"username":"noamdal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16782245/medium/b4a72a61f9caf138f0322c0cb987e6d0.png"},{"username":"MalithRukshan","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16809057/medium/084d6a5b35fbbeacc70e7021197d222f.png"},{"username":"minirope19","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16930929/medium/e8cbbc26747e31c5a8959215e1dd067b.jpeg"},{"username":"prubin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17503492/medium/96ac87644691e49c1f983f2f094e541c_default.png"},{"username":"sam-tam-sam","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17578052/medium/1628dc2954ce3ae95e0caaa2bd60ab0c.png"},{"username":"KydoxOwn","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17764383/medium/0bc150a09d77f5fda43988e6342777dc.png"},{"username":"toineenzo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12371852/medium/9f1b2bedb4794c59479cd289bdba9fab.png"},{"username":"ArcaneWater","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12421105/medium/1ac82517a6c658f6b62c48aebcb17e86_default.png"},{"username":"Ebedami","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/12974801/medium/b596dea5c09454c4c828eac558389755.jpg"},{"username":"perrygamerptyt","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13117177/medium/1406c949507ecd438480473c8a1f6124.jpg"},{"username":"SergiSvK","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13320543/medium/3df3c79cc5f0c53716c559cd3fd2fc20.png"},{"username":"jeongeon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13362856/medium/eb572f72cde5e5526c517ca3a6489850_default.png"},{"username":"MrTranCFCVN","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13439475/medium/a1789d69c85d90c667194b5d6a518c08_default.png"},{"username":"Tobost06","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13467449/medium/9227dc07f6366bc060d28304f5cb8ce7.jpeg"},{"username":"Kf637","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13530622/medium/118b00bb72d01d3229c97409637e25d1_default.png"},{"username":"Cruellest","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/13610615/medium/2a74faa0947ee08d18f7946fb8602c1e.jpg"},{"username":"olavinto","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14424644/medium/37c01732bd2b7a272b421807a05ccfeb.png"},{"username":"OzakIOne","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14446246/medium/3abb08846344706d3a16a9fb196655ee.jpeg"},{"username":"Thario","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14491372/medium/dd5e142070802a672900121aa3f332a6_default.png"},{"username":"Wjouter","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14585620/medium/b91a51513332bdc0a0a9ecbed99ecbc3.png"},{"username":"albanobattistella","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14686194/medium/564afcfd76f5cd24751bd669cf4943aa.jpg"},{"username":"angrystar170","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14736454/medium/7a70edc6b50122877533e95a4e971203.jpeg"},{"username":"Kachelkaiser","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14763406/medium/203a781797da4a18fe0f4e7db8fd547c.png"},{"username":"regi4","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14842936/medium/f7e1d672f562a7db61ba6b4b8f4de41d.png"},{"username":"baton5129","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/14891064/medium/8d438f557b82977dd02f0ead3187265f.PNG"},{"username":"legocuedy09","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15206280/medium/a93129b77a54ffbb2c9f136f18718e80.png"},{"username":"meviper","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/15958903/medium/209f521ce33a05831fa8d7d1b7babc20_default.png"},{"username":"GerOriki","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16268376/medium/da00e54b08cd40348231d92873a0cd0a_default.png"},{"username":"TheRedCyclops","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16486399/medium/7f39226180120d5a9efcb8e13d8aec8e_default.png"},{"username":"dymek37","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16659221/medium/d1dc6d11d7e7fc370efc5070e837ae03.png"},{"username":"B3CKDOOR","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16744975/medium/e6c7b2d45e76465d54e6efb67c83da7d.png"},{"username":"on9686","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16768173/medium/6282fed9aafe0262a173a5ec0887e5d9_default.png"},{"username":"Larsluph","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16779933/medium/ed7d36f8b44013bad3a16ac0491bd0f7.png"},{"username":"FOEDI","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16781001/medium/6b4552fb72e359aa016f7a054078fac8.png"},{"username":"xmarkurion","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16805443/medium/34a20428427de5aaef99c7d140646803.png"},{"username":"gregid","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16806705/medium/f3c8f4a20436e8538929130142bbc104.png"},{"username":"Flameberg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16820453/medium/d47be866148474c9d05fec6fbe406d88.png"},{"username":"Playfust","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16872865/medium/5f4609cc711e5fb9fa8a0b178635769c.jpeg"},{"username":"Cotignac","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16879297/medium/81ff353edf030699a159bb79cda26e84.jpg"},{"username":"LeaHun","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16916375/medium/618520f0543b1e212ebc83d66b683d4b_default.png"},{"username":"jackwellerreal","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16919717/medium/37bbfdc03893f141133ccc619593266d.png"},{"username":"renan.costaalencar","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16938427/medium/6d25b25320c5bde734118dec4af9cd5b.png"},{"username":"andrius.cim","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/16967845/medium/46028fc1a0ddfaaeebcb37b39739625d_default.png"},{"username":"xjxexrxrxyx","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17041412/medium/d34d664166db6fb25579bca9ff3b50b4.jpeg"},{"username":"bilhal.fellah","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17044572/medium/d1ec6f17e4aa013e9eededc83778d2c6.png"},{"username":"the_octo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17058060/medium/7423ab3a4cabb67f5decb2e2dfa2b675_default.png"},{"username":"BamesJond","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17075846/medium/128d7ffd40254c8e376f45678e2fc620_default.png"},{"username":"Kornikus","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17134240/medium/d7a42b2c30db46ff152699ca01f9e11a_default.png"},{"username":"Master3307","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17161852/medium/94ec577dd53e16b434f2aac9c34f64c6.png"},{"username":"xoxyuxu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17176526/medium/108055aa24343043de852e412bec74be.png"},{"username":"cryptodntsleep","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17249408/medium/b9e15aa2b24a0dbc1e4f194aa8ed5109.png"},{"username":"yaniorg","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17261842/medium/7dbfc77f21c826845961243c44540d26.jpg"},{"username":"Vidariondr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17262438/medium/45fbc71be02ef27296b6f423e97b6a03_default.png"},{"username":"Fastery","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17263066/medium/701b0edc59676174863ad651528bbb37.jpeg"},{"username":"stratself","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17290388/medium/57d9d8161b3fd0abf4dc5558b4a1fa05_default.png"},{"username":"wuzeqin","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17292606/medium/b9e0308410b31337e2d7aa6ed346d718_default.png"},{"username":"ChristopherBull","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17304338/medium/21a175ce596bfae81430767467908b90.jpeg"},{"username":"darkbcnlord","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17311436/medium/b271bc0b419ec3a26ddb7b63ff8ffc4b.png"},{"username":"zhoran1997","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17344028/medium/c8f450b5a8f1e9494a45dc60af7ce63e.png"},{"username":"Pakura","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17396930/medium/18602738018348bf2ffa83a78bf165e2_default.png"},{"username":"gilalves1703","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17447768/medium/3f1de562a5c2391c88bbf8d5cf40a266.png"},{"username":"iServeCloud","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17470960/medium/11649b99d609438d66455a4d2fdc70f7.png"},{"username":"guibolzantvbox","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17474136/medium/59a576e6da538664ceb972253916fa02.jpeg"},{"username":"ivann136","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17506062/medium/67d09ada36fac5f444a1f7517e3a97bd_default.png"},{"username":"Maheshivara","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17516082/medium/576e1e6581cf969615b265de6aeff8b7.jpeg"},{"username":"brunogui81","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17517542/medium/7c0d174e810435af518fe8e0c05e151f.jpeg"},{"username":"michelwilhelm","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17542190/medium/4c6b33fd8993ff565fa75add2ce8355e.jpeg"},{"username":"dias-gxstavo","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17547376/medium/8c6b109aae8aeb651192346a39ae9e5b.jpeg"},{"username":"ToxykAuBleu","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17614030/medium/8d21e0608560172b121bd46126d827c7.jpeg"},{"username":"e.erdemir","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17617994/medium/7259a29db9941c6171a8cbbd643b92bd.png"},{"username":"sjonkreutz","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17618306/medium/7601c45d015189a863656e21348d223b.png"},{"username":"volovich0377","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17620388/medium/c929a8fbd24f96d17620fa497ade7309.png"},{"username":"Hamstio1","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17624898/medium/406e0bf40094c24a01c3064f8f5b2a82.png"},{"username":"i3laa","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17627462/medium/613a9d283ed8b69819ee181903851660.jpeg"},{"username":"bastiengrignon","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17629884/medium/ddfc3339285bd65195fcd834e512e9b7.jpeg"},{"username":"kauhee","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17644600/medium/def1b9066cf9275b4273a5a5dca7f325.png"},{"username":"hongminzheng","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17683860/medium/a764f4963912777d27a7cd98e136a2b2.png"},{"username":"d-lindahl","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17726729/medium/cbde348582fbabcfadd89a56cd5a0b40.png"},{"username":"Enoal-Fauchille-Bolle","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17734649/medium/6e6fb29198782dc7856ea21811db669c.jpeg"},{"username":"manos-grigorakis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17737973/medium/b37f685587c920c81fdaf9a357962434.jpeg"},{"username":"SertraFurr","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17738703/medium/5f1e9f270e315ee3185cf2ccb3f5a833.png"},{"username":"Kle.Ma","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17739207/medium/b767d6093e6608f251ca152f53d359b8_default.png"},{"username":"WalkerLukas","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17744485/medium/87508ce83a9b6e5391f55883a66a054b.png"},{"username":"mtya","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17748447/medium/f574d5a770d74814f8c49ee68e00f5b7.jpeg"},{"username":"Elaktrato","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17750977/medium/f4109d379f29dc8ea2e7799ac9e208c8.png"},{"username":"marcelmeis","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17753627/medium/4ba32116c27e427d3073e45713f6564e.png"},{"username":"ProKafelek12e","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17760377/medium/5199af152f1ea42cee718e7729bd41ff.png"},{"username":"zalaghi","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17763367/medium/a06f7b15222663517b58b8dc8902f8a1.png"},{"username":"Amato21","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17776775/medium/214b1f1581a85fe10f1ae3241aab43e4.png"},{"username":"jabalv","avatarUrl":"https://crowdin-static.cf-downloads.crowdin.com/avatar/17778347/medium/14dd47fff64f6543e6015be7373420c3.png"}]
\ No newline at end of file