diff --git a/.vscode/settings.json b/.vscode/settings.json
index 53c760db0..b9a963aad 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -10,6 +10,7 @@
"cSpell.words": [
"superjson",
"homarr",
- "trpc"
+ "trpc",
+ "Umami"
]
}
\ No newline at end of file
diff --git a/README.md b/README.md
index 2eb9f8222..3a88af411 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# THIS PROJECT IS STILL UNSTABLE AND WE DO NOT PROVIDE ANY SUPPORT FOR ISSUES THAT OCCURE.
+
## PLEASE DO NOT OPEN ANY ISSUES OR DISCUSSIONS
+
### EVERYTHING IS SUBJECT TO CHANGE
Please use [this](https://github.com/ajnart/homarr) version of Homarr when you want to use it
diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json
index 529e259ca..cb3f9b643 100644
--- a/apps/nextjs/package.json
+++ b/apps/nextjs/package.json
@@ -14,6 +14,7 @@
"with-env": "dotenv -e ../../.env --"
},
"dependencies": {
+ "@homarr/analytics": "workspace:^0.1.0",
"@homarr/api": "workspace:^0.1.0",
"@homarr/auth": "workspace:^0.1.0",
"@homarr/common": "workspace:^0.1.0",
diff --git a/apps/nextjs/src/app/[locale]/layout.tsx b/apps/nextjs/src/app/[locale]/layout.tsx
index 35414e252..86db1c66c 100644
--- a/apps/nextjs/src/app/[locale]/layout.tsx
+++ b/apps/nextjs/src/app/[locale]/layout.tsx
@@ -11,6 +11,7 @@ import { auth } from "@homarr/auth/next";
import { ModalProvider } from "@homarr/modals";
import { Notifications } from "@homarr/notifications";
+import { Analytics } from "~/components/layout/analytics";
import { JotaiProvider } from "./_client-providers/jotai";
import { NextInternationalProvider } from "./_client-providers/next-international";
import { AuthProvider } from "./_client-providers/session";
@@ -76,6 +77,7 @@ export default function Layout(props: { children: React.ReactNode; params: { loc
+
diff --git a/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx b/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx
index dfe86b363..7ac93b917 100644
--- a/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx
+++ b/apps/nextjs/src/app/[locale]/manage/settings/_components/analytics.settings.tsx
@@ -96,18 +96,23 @@ const SwitchSetting = ({
title: string;
text: ReactNode;
}) => {
+ const disabled = formKey !== "enableGeneral" && !form.values.enableGeneral;
const handleClick = React.useCallback(() => {
+ if (disabled) {
+ return;
+ }
form.setFieldValue(formKey, !form.values[formKey]);
- }, [form, formKey]);
+ }, [form, formKey, disabled]);
+
return (
-
-
+
+
{title}
{text}
-
-
-
+
+
+
);
};
diff --git a/apps/nextjs/src/components/layout/analytics.tsx b/apps/nextjs/src/components/layout/analytics.tsx
new file mode 100644
index 000000000..76e76e2d2
--- /dev/null
+++ b/apps/nextjs/src/components/layout/analytics.tsx
@@ -0,0 +1,14 @@
+import Script from "next/script";
+
+import { UMAMI_WEBSITE_ID } from "@homarr/analytics";
+import { api } from "@homarr/api/server";
+
+export const Analytics = async () => {
+ const analytics = await api.serverSettings.getAnalytics();
+
+ if (analytics.enableGeneral) {
+ return ;
+ }
+
+ return <>>;
+};
diff --git a/apps/tasks/package.json b/apps/tasks/package.json
index 7133523b8..7fb47a799 100644
--- a/apps/tasks/package.json
+++ b/apps/tasks/package.json
@@ -27,6 +27,7 @@
"@homarr/redis": "workspace:^0.1.0",
"@homarr/server-settings": "workspace:^0.1.0",
"@homarr/validation": "workspace:^0.1.0",
+ "@homarr/analytics": "workspace:^0.1.0",
"dotenv": "^16.4.5",
"node-cron": "^3.0.3",
"superjson": "2.2.1"
diff --git a/apps/tasks/src/jobs.ts b/apps/tasks/src/jobs.ts
index 39fcb0113..181ce4590 100644
--- a/apps/tasks/src/jobs.ts
+++ b/apps/tasks/src/jobs.ts
@@ -1,4 +1,5 @@
import { iconsUpdaterJob } from "~/jobs/icons-updater";
+import { analyticsJob } from "./jobs/analytics";
import { queuesJob } from "./jobs/queue";
import { createJobGroup } from "./lib/cron-job/group";
@@ -8,4 +9,5 @@ export const jobs = createJobGroup({
// This job is used to process queues.
queues: queuesJob,
iconsUpdater: iconsUpdaterJob,
+ analytics: analyticsJob,
});
diff --git a/apps/tasks/src/jobs/analytics.ts b/apps/tasks/src/jobs/analytics.ts
new file mode 100644
index 000000000..bbdd89927
--- /dev/null
+++ b/apps/tasks/src/jobs/analytics.ts
@@ -0,0 +1,29 @@
+import SuperJSON from "superjson";
+
+import { sendServerAnalyticsAsync } from "@homarr/analytics";
+import { db, eq } from "@homarr/db";
+import { serverSettings } from "@homarr/db/schema/sqlite";
+
+import { EVERY_WEEK } from "~/lib/cron-job/constants";
+import { createCronJob } from "~/lib/cron-job/creator";
+import type { defaultServerSettings } from "../../../../packages/server-settings";
+
+export const analyticsJob = createCronJob(EVERY_WEEK, {
+ runOnStart: true,
+}).withCallback(async () => {
+ const analyticSetting = await db.query.serverSettings.findFirst({
+ where: eq(serverSettings.settingKey, "analytics"),
+ });
+
+ if (!analyticSetting) {
+ return;
+ }
+
+ const value = SuperJSON.parse<(typeof defaultServerSettings)["analytics"]>(analyticSetting.value);
+
+ if (!value.enableGeneral) {
+ return;
+ }
+
+ await sendServerAnalyticsAsync();
+});
diff --git a/packages/analytics/index.ts b/packages/analytics/index.ts
new file mode 100644
index 000000000..3bd16e178
--- /dev/null
+++ b/packages/analytics/index.ts
@@ -0,0 +1 @@
+export * from "./src";
diff --git a/packages/analytics/package.json b/packages/analytics/package.json
new file mode 100644
index 000000000..7d2c49d17
--- /dev/null
+++ b/packages/analytics/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "@homarr/analytics",
+ "private": true,
+ "version": "0.1.0",
+ "type": "module",
+ "exports": {
+ ".": "./index.ts"
+ },
+ "typesVersions": {
+ "*": {
+ "*": [
+ "src/*"
+ ]
+ }
+ },
+ "license": "MIT",
+ "scripts": {
+ "clean": "rm -rf .turbo node_modules",
+ "lint": "eslint .",
+ "format": "prettier --check . --ignore-path ../../.gitignore",
+ "typecheck": "tsc --noEmit"
+ },
+ "devDependencies": {
+ "@homarr/db": "workspace:^0.1.0",
+ "@homarr/eslint-config": "workspace:^0.2.0",
+ "@homarr/log": "workspace:^0.1.0",
+ "@homarr/prettier-config": "workspace:^0.1.0",
+ "@homarr/server-settings": "workspace:^0.1.0",
+ "@homarr/tsconfig": "workspace:^0.1.0",
+ "eslint": "^8.57.0",
+ "typescript": "^5.4.5"
+ },
+ "eslintConfig": {
+ "extends": [
+ "@homarr/eslint-config/base"
+ ]
+ },
+ "prettier": "@homarr/prettier-config",
+ "dependencies": {
+ "@umami/node": "^0.3.0",
+ "superjson": "2.2.1"
+ }
+}
diff --git a/packages/analytics/src/constants.ts b/packages/analytics/src/constants.ts
new file mode 100644
index 000000000..6316180ad
--- /dev/null
+++ b/packages/analytics/src/constants.ts
@@ -0,0 +1,2 @@
+export const UMAMI_HOST_URL = "https://umami.homarr.dev";
+export const UMAMI_WEBSITE_ID = "ff7dc470-a84f-4779-b1ab-66a5bb16a94b";
diff --git a/packages/analytics/src/index.ts b/packages/analytics/src/index.ts
new file mode 100644
index 000000000..c3c0fd550
--- /dev/null
+++ b/packages/analytics/src/index.ts
@@ -0,0 +1,2 @@
+export * from "./constants";
+export * from "./send-server-analytics";
diff --git a/packages/analytics/src/send-server-analytics.ts b/packages/analytics/src/send-server-analytics.ts
new file mode 100644
index 000000000..532bd5c4c
--- /dev/null
+++ b/packages/analytics/src/send-server-analytics.ts
@@ -0,0 +1,102 @@
+import type { UmamiEventData } from "@umami/node";
+import { Umami } from "@umami/node";
+import SuperJSON from "superjson";
+
+import { count, db, eq } from "@homarr/db";
+import { integrations, items, serverSettings, users } from "@homarr/db/schema/sqlite";
+import { logger } from "@homarr/log";
+import type { defaultServerSettings } from "@homarr/server-settings";
+
+import { Stopwatch } from "../../common/src";
+import { UMAMI_HOST_URL, UMAMI_WEBSITE_ID } from "./constants";
+
+export const sendServerAnalyticsAsync = async () => {
+ const stopWatch = new Stopwatch();
+ const setting = await db.query.serverSettings.findFirst({
+ where: eq(serverSettings.settingKey, "analytics"),
+ });
+
+ if (!setting) {
+ logger.info(
+ "Server does not know the configured state of analytics. No data will be sent. Enable analytics in the settings",
+ );
+ return;
+ }
+
+ const analyticsSettings = SuperJSON.parse(setting.value);
+
+ if (!analyticsSettings.enableGeneral) {
+ logger.info("Analytics are disabled. No data will be sent. Enable analytics in the settings");
+ return;
+ }
+
+ const umamiInstance = new Umami();
+ umamiInstance.init({
+ hostUrl: UMAMI_HOST_URL,
+ websiteId: UMAMI_WEBSITE_ID,
+ });
+
+ await sendIntegrationDataAsync(umamiInstance, analyticsSettings);
+ await sendWidgetDataAsync(umamiInstance, analyticsSettings);
+ await sendUserDataAsync(umamiInstance, analyticsSettings);
+
+ logger.info(`Sent all analytics in ${stopWatch.getElapsedInHumanWords()}`);
+};
+
+const sendWidgetDataAsync = async (umamiInstance: Umami, analyticsSettings: typeof defaultServerSettings.analytics) => {
+ if (!analyticsSettings.enableWidgetData) {
+ return;
+ }
+ const widgetCount = (await db.select({ count: count(items.id) }).from(items))[0]?.count ?? 0;
+
+ const response = await umamiInstance.track("server-widget-data", {
+ countWidgets: widgetCount,
+ });
+ if (response.ok) {
+ return;
+ }
+
+ logger.warn("Unable to send track event data to Umami instance");
+};
+
+const sendUserDataAsync = async (umamiInstance: Umami, analyticsSettings: typeof defaultServerSettings.analytics) => {
+ if (!analyticsSettings.enableUserData) {
+ return;
+ }
+ const userCount = (await db.select({ count: count(users.id) }).from(users))[0]?.count ?? 0;
+
+ const response = await umamiInstance.track("server-user-data", {
+ countUsers: userCount,
+ });
+ if (response.ok) {
+ return;
+ }
+
+ logger.warn("Unable to send track event data to Umami instance");
+};
+
+const sendIntegrationDataAsync = async (
+ umamiInstance: Umami,
+ analyticsSettings: typeof defaultServerSettings.analytics,
+) => {
+ if (!analyticsSettings.enableIntegrationData) {
+ return;
+ }
+ const integrationKinds = await db
+ .select({ kind: integrations.kind, count: count(integrations.id) })
+ .from(integrations)
+ .groupBy(integrations.kind);
+
+ const map: UmamiEventData = {};
+
+ integrationKinds.forEach((integrationKind) => {
+ map[integrationKind.kind] = integrationKind.count;
+ });
+
+ const response = await umamiInstance.track("server-integration-data-kind", map);
+ if (response.ok) {
+ return;
+ }
+
+ logger.warn("Unable to send track event data to Umami instance");
+};
diff --git a/packages/analytics/tsconfig.json b/packages/analytics/tsconfig.json
new file mode 100644
index 000000000..cbe8483d9
--- /dev/null
+++ b/packages/analytics/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@homarr/tsconfig/base.json",
+ "compilerOptions": {
+ "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json"
+ },
+ "include": ["*.ts", "src"],
+ "exclude": ["node_modules"]
+}
diff --git a/packages/api/src/router/serverSettings.ts b/packages/api/src/router/serverSettings.ts
index 8766836ca..b1f00f057 100644
--- a/packages/api/src/router/serverSettings.ts
+++ b/packages/api/src/router/serverSettings.ts
@@ -2,13 +2,34 @@ import SuperJSON from "superjson";
import { eq } from "@homarr/db";
import { serverSettings } from "@homarr/db/schema/sqlite";
-import type { ServerSettings } from "@homarr/server-settings";
+import { logger } from "@homarr/log";
+import type { defaultServerSettings, ServerSettings } from "@homarr/server-settings";
import { defaultServerSettingsKeys } from "@homarr/server-settings";
import { z } from "@homarr/validation";
-import { createTRPCRouter, protectedProcedure } from "../trpc";
+import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
export const serverSettingsRouter = createTRPCRouter({
+ // this must be public so anonymous users also get analytics
+ getAnalytics: publicProcedure.query(async ({ ctx }) => {
+ const setting = await ctx.db.query.serverSettings.findFirst({
+ where: eq(serverSettings.settingKey, "analytics"),
+ });
+
+ if (!setting) {
+ logger.info(
+ "Server settings for analytics is currently undefined. Using default values instead. If this persists, there may be an issue with the server settings",
+ );
+ return {
+ enableGeneral: true,
+ enableIntegrationData: false,
+ enableUserData: false,
+ enableWidgetData: false,
+ } as (typeof defaultServerSettings)["analytics"];
+ }
+
+ return SuperJSON.parse<(typeof defaultServerSettings)["analytics"]>(setting.value);
+ }),
getAll: protectedProcedure.query(async ({ ctx }) => {
const settings = await ctx.db.query.serverSettings.findMany();
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2b657afd8..01115e835 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,16 +10,16 @@ importers:
dependencies:
'@mantine/core':
specifier: ^7.9.2
- version: 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/dates':
specifier: ^7.9.2
- version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tabler/icons-react':
specifier: ^3.5.0
version: 3.5.0(react@18.3.1)
mantine-react-table:
specifier: 2.0.0-beta.3
- version: 2.0.0-beta.3(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tabler/icons-react@3.5.0(react@18.3.1))(clsx@2.1.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 2.0.0-beta.3(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tabler/icons-react@3.5.0(react@18.3.1))(clsx@2.1.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
devDependencies:
'@homarr/prettier-config':
specifier: workspace:^0.1.0
@@ -60,6 +60,9 @@ importers:
apps/nextjs:
dependencies:
+ '@homarr/analytics':
+ specifier: workspace:^0.1.0
+ version: link:../../packages/analytics
'@homarr/api':
specifier: workspace:^0.1.0
version: link:../../packages/api
@@ -119,31 +122,31 @@ importers:
version: 7.9.2(react@18.3.1)
'@mantine/modals':
specifier: ^7.9.2
- version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/tiptap':
specifier: ^7.9.2
- version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tiptap/extension-link@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4))(@tiptap/react@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tiptap/extension-link@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4))(@tiptap/react@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@t3-oss/env-nextjs':
specifier: ^0.10.1
version: 0.10.1(typescript@5.4.5)(zod@3.23.8)
'@tanstack/react-query':
specifier: ^5.37.1
- version: 5.38.0(react@18.3.1)
+ version: 5.37.1(react@18.3.1)
'@tanstack/react-query-devtools':
specifier: ^5.37.1
- version: 5.38.0(@tanstack/react-query@5.38.0(react@18.3.1))(react@18.3.1)
+ version: 5.37.1(@tanstack/react-query@5.37.1(react@18.3.1))(react@18.3.1)
'@tanstack/react-query-next-experimental':
specifier: 5.37.1
- version: 5.37.1(@tanstack/react-query@5.38.0(react@18.3.1))(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react@18.3.1)
+ version: 5.37.1(@tanstack/react-query@5.37.1(react@18.3.1))(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react@18.3.1)
'@trpc/client':
specifier: 11.0.0-rc.374
version: 11.0.0-rc.374(@trpc/server@11.0.0-rc.377)
'@trpc/next':
specifier: next
- version: 11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/react-query@11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@trpc/server@11.0.0-rc.377)(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/react-query@11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@trpc/server@11.0.0-rc.377)(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@trpc/react-query':
specifier: next
- version: 11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@trpc/server':
specifier: next
version: 11.0.0-rc.377
@@ -170,10 +173,10 @@ importers:
version: 7.2.2
glob:
specifier: ^10.3.15
- version: 10.4.1
+ version: 10.3.15
jotai:
specifier: ^2.8.1
- version: 2.8.1(@types/react@18.3.3)(react@18.3.1)
+ version: 2.8.1(@types/react@18.3.2)(react@18.3.1)
next:
specifier: ^14.2.3
version: 14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2)
@@ -216,7 +219,7 @@ importers:
version: 20.12.12
'@types/react':
specifier: ^18.3.2
- version: 18.3.3
+ version: 18.3.2
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.0
@@ -238,6 +241,9 @@ importers:
apps/tasks:
dependencies:
+ '@homarr/analytics':
+ specifier: workspace:^0.1.0
+ version: link:../../packages/analytics
'@homarr/common':
specifier: workspace:^0.1.0
version: link:../../packages/common
@@ -358,6 +364,40 @@ importers:
specifier: ^5.4.5
version: 5.4.5
+ packages/analytics:
+ dependencies:
+ '@umami/node':
+ specifier: ^0.3.0
+ version: 0.3.0
+ superjson:
+ specifier: 2.2.1
+ version: 2.2.1
+ devDependencies:
+ '@homarr/db':
+ specifier: workspace:^0.1.0
+ version: link:../db
+ '@homarr/eslint-config':
+ specifier: workspace:^0.2.0
+ version: link:../../tooling/eslint
+ '@homarr/log':
+ specifier: workspace:^0.1.0
+ version: link:../log
+ '@homarr/prettier-config':
+ specifier: workspace:^0.1.0
+ version: link:../../tooling/prettier
+ '@homarr/server-settings':
+ specifier: workspace:^0.1.0
+ version: link:../server-settings
+ '@homarr/tsconfig':
+ specifier: workspace:^0.1.0
+ version: link:../../tooling/typescript
+ eslint:
+ specifier: ^8.57.0
+ version: 8.57.0
+ typescript:
+ specifier: ^5.4.5
+ version: 5.4.5
+
packages/api:
dependencies:
'@homarr/auth':
@@ -523,7 +563,7 @@ importers:
version: 0.21.2
drizzle-orm:
specifier: ^0.30.10
- version: 0.30.10(@types/better-sqlite3@7.6.10)(@types/react@18.3.3)(better-sqlite3@10.0.0)(mysql2@3.9.7)(react@18.3.1)
+ version: 0.30.10(@types/better-sqlite3@7.6.10)(@types/react@18.3.2)(better-sqlite3@10.0.0)(mysql2@3.9.7)(react@18.3.1)
mysql2:
specifier: 3.9.7
version: 3.9.7
@@ -710,7 +750,7 @@ importers:
version: link:../ui
'@mantine/notifications':
specifier: ^7.9.2
- version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
@@ -787,7 +827,7 @@ importers:
version: link:../ui
'@mantine/spotlight':
specifier: ^7.9.2
- version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
devDependencies:
'@homarr/eslint-config':
specifier: workspace:^0.2.0
@@ -2006,6 +2046,12 @@ packages:
'@remirror/core-constants@2.0.2':
resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
+ '@remirror/core-helpers@3.0.0':
+ resolution: {integrity: sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==}
+
+ '@remirror/types@1.0.1':
+ resolution: {integrity: sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==}
+
'@rollup/rollup-android-arm-eabi@4.13.0':
resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==}
cpu: [arm]
@@ -2110,16 +2156,16 @@ packages:
resolution: {integrity: sha512-PnVV3d2poenUM31ZbZi/yXkBu3J7kd5k2u51CGwwNojag451AjTH9N6n41yjXz2fpLeewleyLBmNS6+HcGDlXw==}
engines: {node: '>=12'}
- '@tanstack/query-core@5.38.0':
- resolution: {integrity: sha512-QtkoxvFcu52mNpp3+qOo9H265m3rt83Dgbw5WnNyJvr83cegrQ7zT8haHhL4Rul6ZQkeovxyWbXVW9zI0WYx6g==}
+ '@tanstack/query-core@5.36.1':
+ resolution: {integrity: sha512-BteWYEPUcucEu3NBcDAgKuI4U25R9aPrHSP6YSf2NvaD2pSlIQTdqOfLRsxH9WdRYg7k0Uom35Uacb6nvbIMJg==}
'@tanstack/query-devtools@5.37.1':
resolution: {integrity: sha512-XcG4IIHIv0YQKrexTqo2zogQWR1Sz672tX2KsfE9kzB+9zhx44vRKH5si4WDILE1PIWQpStFs/NnrDQrBAUQpg==}
- '@tanstack/react-query-devtools@5.38.0':
- resolution: {integrity: sha512-jEgraQ1gxMPBYgmhcrvaAvksSY9Wz949ZHID+YXkV3t5jhXzoGwawAMYNDurpRjsNzzHEyuu/GwThkgXgTZj6Q==}
+ '@tanstack/react-query-devtools@5.37.1':
+ resolution: {integrity: sha512-fWL3rV/avL9HsHt3RVYxuLCqSHghBwSGPIUMDZ9hfg9PDjQaeI9d8kJj6yLoCBWUhTue5/rQbISvFtr+yxyYyA==}
peerDependencies:
- '@tanstack/react-query': ^5.38.0
+ '@tanstack/react-query': ^5.37.1
react: ^18.0.0
'@tanstack/react-query-next-experimental@5.37.1':
@@ -2129,8 +2175,8 @@ packages:
next: ^13 || ^14
react: ^18.0.0
- '@tanstack/react-query@5.38.0':
- resolution: {integrity: sha512-LzMSPS2zSd6KUQfSqYxHBMuB3N0k3tZRNPCXeWXgLMGdrscgleRhE8Ni3QNkxGYvLW+qxuu8RKpuewsCiCKg3g==}
+ '@tanstack/react-query@5.37.1':
+ resolution: {integrity: sha512-EhtBNA8GL3XFeSx6VYUjXQ96n44xe3JGKZCzBINrCYlxbZP6UwBafv7ti4eSRWc2Fy+fybQre0w17gR6lMzULA==}
peerDependencies:
react: ^18.0.0
@@ -2491,11 +2537,17 @@ packages:
'@types/node@20.12.12':
resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+ '@types/object.omit@3.0.3':
+ resolution: {integrity: sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew==}
+
+ '@types/object.pick@1.3.4':
+ resolution: {integrity: sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA==}
+
'@types/prismjs@1.26.4':
resolution: {integrity: sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==}
- '@types/prop-types@15.7.12':
- resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
+ '@types/prop-types@15.7.11':
+ resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
'@types/qs@6.9.11':
resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==}
@@ -2506,8 +2558,8 @@ packages:
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
- '@types/react@18.3.3':
- resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
+ '@types/react@18.3.2':
+ resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==}
'@types/send@0.17.4':
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
@@ -2515,6 +2567,9 @@ packages:
'@types/serve-static@1.15.5':
resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==}
+ '@types/throttle-debounce@2.1.0':
+ resolution: {integrity: sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==}
+
'@types/through@0.0.33':
resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==}
@@ -2588,6 +2643,9 @@ packages:
resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==}
engines: {node: ^18.18.0 || >=20.0.0}
+ '@umami/node@0.3.0':
+ resolution: {integrity: sha512-+1cZ7o7jVN8oXDYZRqigfLHrWbEv5vtGWjB7blfVH1QUa+DRmWB6GfhMZtE2aSW+P9ACal8ZW7xD2PCAejlNCQ==}
+
'@ungap/structured-clone@1.2.0':
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
@@ -2889,6 +2947,10 @@ packages:
caniuse-lite@1.0.30001587:
resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==}
+ case-anything@2.1.13:
+ resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==}
+ engines: {node: '>=12.13'}
+
chai@4.4.1:
resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==}
engines: {node: '>=4'}
@@ -3070,6 +3132,9 @@ packages:
damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+ dash-get@1.0.2:
+ resolution: {integrity: sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==}
+
data-uri-to-buffer@6.0.2:
resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
engines: {node: '>= 14'}
@@ -3120,6 +3185,10 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+
defaults@1.0.4:
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
@@ -3698,8 +3767,8 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
- glob@10.4.1:
- resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==}
+ glob@10.3.15:
+ resolution: {integrity: sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==}
engines: {node: '>=16 || 14 >=14.18'}
hasBin: true
@@ -3860,7 +3929,6 @@ packages:
inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
@@ -3927,6 +3995,10 @@ packages:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
engines: {node: '>= 0.4'}
+ is-extendable@1.0.1:
+ resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
+ engines: {node: '>=0.10.0'}
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -3979,6 +4051,10 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
+ is-plain-object@2.0.4:
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
+
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -4048,6 +4124,10 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isobject@3.0.1:
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
+
istanbul-lib-coverage@3.2.2:
resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
engines: {node: '>=8'}
@@ -4071,10 +4151,6 @@ packages:
resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
engines: {node: '>=14'}
- jackspeak@3.1.2:
- resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==}
- engines: {node: '>=14'}
-
jose@5.2.2:
resolution: {integrity: sha512-/WByRr4jDcsKlvMd1dRJnPfS1GVO3WuKyaurJ/vvXcOaUQO8rnNObCQMlv/5uCceVQIq5Q4WLF44ohsdiTohdg==}
@@ -4237,8 +4313,8 @@ packages:
lower-case@1.1.4:
resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==}
- lru-cache@10.2.2:
- resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
+ lru-cache@10.2.0:
+ resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
engines: {node: 14 || >=16.14}
lru-cache@5.1.1:
@@ -4293,8 +4369,8 @@ packages:
react: '>=18.0'
react-dom: '>=18.0'
- markdown-it@14.1.0:
- resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ markdown-it@14.0.0:
+ resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==}
hasBin: true
mdurl@2.0.0:
@@ -4359,8 +4435,8 @@ packages:
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
engines: {node: '>=8'}
- minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ minipass@7.0.4:
+ resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
engines: {node: '>=16 || 14 >=14.17'}
minizlib@2.1.2:
@@ -4556,6 +4632,14 @@ packages:
object.hasown@1.1.3:
resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==}
+ object.omit@3.0.0:
+ resolution: {integrity: sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==}
+ engines: {node: '>=0.10.0'}
+
+ object.pick@1.3.0:
+ resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
+ engines: {node: '>=0.10.0'}
+
object.values@1.1.7:
resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
engines: {node: '>= 0.4'}
@@ -4652,9 +4736,9 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
+ path-scurry@1.11.0:
+ resolution: {integrity: sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==}
+ engines: {node: '>=16 || 14 >=14.17'}
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
@@ -4779,8 +4863,8 @@ packages:
prosemirror-gapcursor@1.3.2:
resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
- prosemirror-history@1.4.0:
- resolution: {integrity: sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==}
+ prosemirror-history@1.3.2:
+ resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==}
prosemirror-inputrules@1.4.0:
resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==}
@@ -4788,14 +4872,14 @@ packages:
prosemirror-keymap@1.2.2:
resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
- prosemirror-markdown@1.13.0:
- resolution: {integrity: sha512-UziddX3ZYSYibgx8042hfGKmukq5Aljp2qoBiJRejD/8MH70siQNz5RB1TrdTPheqLMy4aCe4GYNF10/3lQS5g==}
+ prosemirror-markdown@1.12.0:
+ resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==}
prosemirror-menu@1.2.4:
resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==}
- prosemirror-model@1.21.0:
- resolution: {integrity: sha512-zLpS1mVCZLA7VTp82P+BfMiYVPcX1/z0Mf3gsjKZtzMWubwn2pN7CceMV0DycjlgE5JeXPR7UF4hJPbBV98oWA==}
+ prosemirror-model@1.19.4:
+ resolution: {integrity: sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==}
prosemirror-schema-basic@1.2.2:
resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==}
@@ -4809,18 +4893,18 @@ packages:
prosemirror-tables@1.3.7:
resolution: {integrity: sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==}
- prosemirror-trailing-node@2.0.8:
- resolution: {integrity: sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==}
+ prosemirror-trailing-node@2.0.7:
+ resolution: {integrity: sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==}
peerDependencies:
prosemirror-model: ^1.19.0
prosemirror-state: ^1.4.2
prosemirror-view: ^1.31.2
- prosemirror-transform@1.9.0:
- resolution: {integrity: sha512-5UXkr1LIRx3jmpXXNKDhv8OyAOeLTGuXNwdVfg8x27uASna/wQkr9p6fD3eupGOi4PLJfbezxTyi/7fSJypXHg==}
+ prosemirror-transform@1.8.0:
+ resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==}
- prosemirror-view@1.33.6:
- resolution: {integrity: sha512-zRLUNgLIQfd8IfGprsXxWTjdA8xEAFJe8cDNrOptj6Mop9sj+BMeVbJvceyAYCm5G2dOdT2prctH7K9dfnpIMw==}
+ prosemirror-view@1.33.1:
+ resolution: {integrity: sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==}
proxy-agent@6.4.0:
resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==}
@@ -5314,6 +5398,10 @@ packages:
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ throttle-debounce@3.0.1:
+ resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==}
+ engines: {node: '>=10'}
+
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
@@ -5479,6 +5567,10 @@ packages:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
+ type-fest@2.19.0:
+ resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
+ engines: {node: '>=12.20'}
+
type-fest@4.12.0:
resolution: {integrity: sha512-5Y2/pp2wtJk8o08G0CMkuFPCO354FGwk/vbidxrdhRGZfd0tFnb4Qb8anp9XxXriwBgVPjdWbKpGl4J9lJY2jQ==}
engines: {node: '>=16'}
@@ -6505,7 +6597,7 @@ snapshots:
dependencies:
chroma-js: 2.4.2
- '@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@floating-ui/react': 0.26.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
@@ -6513,15 +6605,15 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-number-format: 5.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1)
- react-textarea-autosize: 8.5.3(@types/react@18.3.3)(react@18.3.1)
+ react-remove-scroll: 2.5.7(@types/react@18.3.2)(react@18.3.1)
+ react-textarea-autosize: 8.5.3(@types/react@18.3.2)(react@18.3.1)
type-fest: 4.12.0
transitivePeerDependencies:
- '@types/react'
- '@mantine/dates@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mantine/dates@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
clsx: 2.1.0
dayjs: 1.11.11
@@ -6538,25 +6630,25 @@ snapshots:
dependencies:
react: 18.3.1
- '@mantine/modals@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mantine/modals@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@mantine/notifications@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mantine/notifications@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
'@mantine/store': 7.9.2(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/spotlight@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mantine/spotlight@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
'@mantine/store': 7.9.2(react@18.3.1)
react: 18.3.1
@@ -6566,9 +6658,9 @@ snapshots:
dependencies:
react: 18.3.1
- '@mantine/tiptap@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tiptap/extension-link@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4))(@tiptap/react@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mantine/tiptap@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tiptap/extension-link@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4))(@tiptap/react@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
'@tiptap/extension-link': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)
'@tiptap/react': 2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -6652,6 +6744,26 @@ snapshots:
'@remirror/core-constants@2.0.2': {}
+ '@remirror/core-helpers@3.0.0':
+ dependencies:
+ '@remirror/core-constants': 2.0.2
+ '@remirror/types': 1.0.1
+ '@types/object.omit': 3.0.3
+ '@types/object.pick': 1.3.4
+ '@types/throttle-debounce': 2.1.0
+ case-anything: 2.1.13
+ dash-get: 1.0.2
+ deepmerge: 4.3.1
+ fast-deep-equal: 3.1.3
+ make-error: 1.3.6
+ object.omit: 3.0.0
+ object.pick: 1.3.0
+ throttle-debounce: 3.0.1
+
+ '@remirror/types@1.0.1':
+ dependencies:
+ type-fest: 2.19.0
+
'@rollup/rollup-android-arm-eabi@4.13.0':
optional: true
@@ -6724,25 +6836,25 @@ snapshots:
dependencies:
remove-accents: 0.5.0
- '@tanstack/query-core@5.38.0': {}
+ '@tanstack/query-core@5.36.1': {}
'@tanstack/query-devtools@5.37.1': {}
- '@tanstack/react-query-devtools@5.38.0(@tanstack/react-query@5.38.0(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-query-devtools@5.37.1(@tanstack/react-query@5.37.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@tanstack/query-devtools': 5.37.1
- '@tanstack/react-query': 5.38.0(react@18.3.1)
+ '@tanstack/react-query': 5.37.1(react@18.3.1)
react: 18.3.1
- '@tanstack/react-query-next-experimental@5.37.1(@tanstack/react-query@5.38.0(react@18.3.1))(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react@18.3.1)':
+ '@tanstack/react-query-next-experimental@5.37.1(@tanstack/react-query@5.37.1(react@18.3.1))(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react@18.3.1)':
dependencies:
- '@tanstack/react-query': 5.38.0(react@18.3.1)
+ '@tanstack/react-query': 5.37.1(react@18.3.1)
next: 14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2)
react: 18.3.1
- '@tanstack/react-query@5.38.0(react@18.3.1)':
+ '@tanstack/react-query@5.37.1(react@18.3.1)':
dependencies:
- '@tanstack/query-core': 5.38.0
+ '@tanstack/query-core': 5.36.1
react: 18.3.1
'@tanstack/react-table@8.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@@ -6918,19 +7030,19 @@ snapshots:
prosemirror-commands: 1.5.2
prosemirror-dropcursor: 1.8.1
prosemirror-gapcursor: 1.3.2
- prosemirror-history: 1.4.0
+ prosemirror-history: 1.3.2
prosemirror-inputrules: 1.4.0
prosemirror-keymap: 1.2.2
- prosemirror-markdown: 1.13.0
+ prosemirror-markdown: 1.12.0
prosemirror-menu: 1.2.4
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-schema-basic: 1.2.2
prosemirror-schema-list: 1.3.0
prosemirror-state: 1.4.3
prosemirror-tables: 1.3.7
- prosemirror-trailing-node: 2.0.8(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6)
- prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-trailing-node: 2.0.7(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.33.1)
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
'@tiptap/react@2.4.0(@tiptap/core@2.4.0(@tiptap/pm@2.2.4))(@tiptap/pm@2.2.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -6975,7 +7087,7 @@ snapshots:
dependencies:
'@trpc/server': 11.0.0-rc.377
- '@trpc/next@11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/react-query@11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@trpc/server@11.0.0-rc.377)(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@trpc/next@11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/react-query@11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@trpc/server@11.0.0-rc.377)(next@14.2.3(@babel/core@7.24.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@trpc/client': 11.0.0-rc.374(@trpc/server@11.0.0-rc.377)
'@trpc/server': 11.0.0-rc.377
@@ -6983,12 +7095,12 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
- '@tanstack/react-query': 5.38.0(react@18.3.1)
- '@trpc/react-query': 11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@tanstack/react-query': 5.37.1(react@18.3.1)
+ '@trpc/react-query': 11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@trpc/react-query@11.0.0-rc.377(@tanstack/react-query@5.38.0(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@trpc/react-query@11.0.0-rc.377(@tanstack/react-query@5.37.1(react@18.3.1))(@trpc/client@11.0.0-rc.374(@trpc/server@11.0.0-rc.377))(@trpc/server@11.0.0-rc.377)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@tanstack/react-query': 5.38.0(react@18.3.1)
+ '@tanstack/react-query': 5.37.1(react@18.3.1)
'@trpc/client': 11.0.0-rc.374(@trpc/server@11.0.0-rc.377)
'@trpc/server': 11.0.0-rc.377
react: 18.3.1
@@ -7141,9 +7253,13 @@ snapshots:
dependencies:
undici-types: 5.26.5
+ '@types/object.omit@3.0.3': {}
+
+ '@types/object.pick@1.3.4': {}
+
'@types/prismjs@1.26.4': {}
- '@types/prop-types@15.7.12': {}
+ '@types/prop-types@15.7.11': {}
'@types/qs@6.9.11': {}
@@ -7151,11 +7267,11 @@ snapshots:
'@types/react-dom@18.3.0':
dependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
- '@types/react@18.3.3':
+ '@types/react@18.3.2':
dependencies:
- '@types/prop-types': 15.7.12
+ '@types/prop-types': 15.7.11
csstype: 3.1.3
'@types/send@0.17.4':
@@ -7169,6 +7285,8 @@ snapshots:
'@types/mime': 3.0.4
'@types/node': 20.12.12
+ '@types/throttle-debounce@2.1.0': {}
+
'@types/through@0.0.33':
dependencies:
'@types/node': 20.12.12
@@ -7264,6 +7382,8 @@ snapshots:
'@typescript-eslint/types': 7.9.0
eslint-visitor-keys: 3.4.3
+ '@umami/node@0.3.0': {}
+
'@ungap/structured-clone@1.2.0': {}
'@videojs/http-streaming@3.12.1(video.js@8.12.0)':
@@ -7648,6 +7768,8 @@ snapshots:
caniuse-lite@1.0.30001587: {}
+ case-anything@2.1.13: {}
+
chai@4.4.1:
dependencies:
assertion-error: 1.1.0
@@ -7853,6 +7975,8 @@ snapshots:
damerau-levenshtein@1.0.8: {}
+ dash-get@1.0.2: {}
+
data-uri-to-buffer@6.0.2: {}
data-urls@5.0.0:
@@ -7888,6 +8012,8 @@ snapshots:
deep-is@0.1.4: {}
+ deepmerge@4.3.1: {}
+
defaults@1.0.4:
dependencies:
clone: 1.0.4
@@ -7997,10 +8123,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.30.10(@types/better-sqlite3@7.6.10)(@types/react@18.3.3)(better-sqlite3@10.0.0)(mysql2@3.9.7)(react@18.3.1):
+ drizzle-orm@0.30.10(@types/better-sqlite3@7.6.10)(@types/react@18.3.2)(better-sqlite3@10.0.0)(mysql2@3.9.7)(react@18.3.1):
optionalDependencies:
'@types/better-sqlite3': 7.6.10
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
better-sqlite3: 10.0.0
mysql2: 3.9.7
react: 18.3.1
@@ -8623,16 +8749,16 @@ snapshots:
foreground-child: 3.1.1
jackspeak: 2.3.6
minimatch: 9.0.4
- minipass: 7.1.2
- path-scurry: 1.11.1
+ minipass: 7.0.4
+ path-scurry: 1.11.0
- glob@10.4.1:
+ glob@10.3.15:
dependencies:
foreground-child: 3.1.1
- jackspeak: 3.1.2
+ jackspeak: 2.3.6
minimatch: 9.0.4
- minipass: 7.1.2
- path-scurry: 1.11.1
+ minipass: 7.0.4
+ path-scurry: 1.11.0
glob@7.2.3:
dependencies:
@@ -8910,6 +9036,10 @@ snapshots:
dependencies:
has-tostringtag: 1.0.2
+ is-extendable@1.0.1:
+ dependencies:
+ is-plain-object: 2.0.4
+
is-extglob@2.1.1: {}
is-finalizationregistry@1.0.2:
@@ -8948,6 +9078,10 @@ snapshots:
is-path-inside@3.0.3: {}
+ is-plain-object@2.0.4:
+ dependencies:
+ isobject: 3.0.1
+
is-potential-custom-element-name@1.0.1: {}
is-promise@2.2.2: {}
@@ -9006,6 +9140,8 @@ snapshots:
isexe@2.0.0: {}
+ isobject@3.0.1: {}
+
istanbul-lib-coverage@3.2.2: {}
istanbul-lib-report@3.0.1:
@@ -9041,17 +9177,11 @@ snapshots:
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
- jackspeak@3.1.2:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
-
jose@5.2.2: {}
- jotai@2.8.1(@types/react@18.3.3)(react@18.3.1):
+ jotai@2.8.1(@types/react@18.3.2)(react@18.3.1):
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
react: 18.3.1
js-tokens@4.0.0: {}
@@ -9213,7 +9343,7 @@ snapshots:
lower-case@1.1.4: {}
- lru-cache@10.2.2: {}
+ lru-cache@10.2.0: {}
lru-cache@5.1.1:
dependencies:
@@ -9257,10 +9387,10 @@ snapshots:
make-error@1.3.6: {}
- mantine-react-table@2.0.0-beta.3(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tabler/icons-react@3.5.0(react@18.3.1))(clsx@2.1.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ mantine-react-table@2.0.0-beta.3(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/dates@7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(@tabler/icons-react@3.5.0(react@18.3.1))(clsx@2.1.0)(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
- '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@mantine/dates': 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/core': 7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@mantine/dates': 7.9.2(@mantine/core@7.9.2(@mantine/hooks@7.9.2(react@18.3.1))(@types/react@18.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mantine/hooks@7.9.2(react@18.3.1))(dayjs@1.11.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mantine/hooks': 7.9.2(react@18.3.1)
'@tabler/icons-react': 3.5.0(react@18.3.1)
'@tanstack/match-sorter-utils': 8.15.1
@@ -9271,7 +9401,7 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- markdown-it@14.1.0:
+ markdown-it@14.0.0:
dependencies:
argparse: 2.0.1
entities: 4.5.0
@@ -9338,7 +9468,7 @@ snapshots:
minipass@5.0.0: {}
- minipass@7.1.2: {}
+ minipass@7.0.4: {}
minizlib@2.1.2:
dependencies:
@@ -9542,6 +9672,14 @@ snapshots:
define-properties: 1.2.1
es-abstract: 1.22.4
+ object.omit@3.0.0:
+ dependencies:
+ is-extendable: 1.0.1
+
+ object.pick@1.3.0:
+ dependencies:
+ isobject: 3.0.1
+
object.values@1.1.7:
dependencies:
call-bind: 1.0.7
@@ -9665,10 +9803,10 @@ snapshots:
path-parse@1.0.7: {}
- path-scurry@1.11.1:
+ path-scurry@1.11.0:
dependencies:
- lru-cache: 10.2.2
- minipass: 7.1.2
+ lru-cache: 10.2.0
+ minipass: 7.0.4
path-type@4.0.0: {}
@@ -9783,7 +9921,7 @@ snapshots:
prosemirror-changeset@2.2.1:
dependencies:
- prosemirror-transform: 1.9.0
+ prosemirror-transform: 1.8.0
prosemirror-collab@1.3.1:
dependencies:
@@ -9791,97 +9929,98 @@ snapshots:
prosemirror-commands@1.5.2:
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
+ prosemirror-transform: 1.8.0
prosemirror-dropcursor@1.8.1:
dependencies:
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
prosemirror-gapcursor@1.3.2:
dependencies:
prosemirror-keymap: 1.2.2
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-state: 1.4.3
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.1
- prosemirror-history@1.4.0:
+ prosemirror-history@1.3.2:
dependencies:
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
rope-sequence: 1.3.4
prosemirror-inputrules@1.4.0:
dependencies:
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
+ prosemirror-transform: 1.8.0
prosemirror-keymap@1.2.2:
dependencies:
prosemirror-state: 1.4.3
w3c-keyname: 2.2.8
- prosemirror-markdown@1.13.0:
+ prosemirror-markdown@1.12.0:
dependencies:
- markdown-it: 14.1.0
- prosemirror-model: 1.21.0
+ markdown-it: 14.0.0
+ prosemirror-model: 1.19.4
prosemirror-menu@1.2.4:
dependencies:
crelt: 1.0.6
prosemirror-commands: 1.5.2
- prosemirror-history: 1.4.0
+ prosemirror-history: 1.3.2
prosemirror-state: 1.4.3
- prosemirror-model@1.21.0:
+ prosemirror-model@1.19.4:
dependencies:
orderedmap: 2.1.1
prosemirror-schema-basic@1.2.2:
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-schema-list@1.3.0:
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
+ prosemirror-transform: 1.8.0
prosemirror-state@1.4.3:
dependencies:
- prosemirror-model: 1.21.0
- prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-model: 1.19.4
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
prosemirror-tables@1.3.7:
dependencies:
prosemirror-keymap: 1.2.2
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
- prosemirror-view: 1.33.6
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
- prosemirror-trailing-node@2.0.8(prosemirror-model@1.21.0)(prosemirror-state@1.4.3)(prosemirror-view@1.33.6):
+ prosemirror-trailing-node@2.0.7(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.33.1):
dependencies:
'@remirror/core-constants': 2.0.2
+ '@remirror/core-helpers': 3.0.0
escape-string-regexp: 4.0.0
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-state: 1.4.3
- prosemirror-view: 1.33.6
+ prosemirror-view: 1.33.1
- prosemirror-transform@1.9.0:
+ prosemirror-transform@1.8.0:
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
- prosemirror-view@1.33.6:
+ prosemirror-view@1.33.1:
dependencies:
- prosemirror-model: 1.21.0
+ prosemirror-model: 1.19.4
prosemirror-state: 1.4.3
- prosemirror-transform: 1.9.0
+ prosemirror-transform: 1.8.0
proxy-agent@6.4.0:
dependencies:
@@ -9943,45 +10082,45 @@ snapshots:
react-refresh@0.14.2: {}
- react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1):
+ react-remove-scroll-bar@2.3.4(@types/react@18.3.2)(react@18.3.1):
dependencies:
react: 18.3.1
- react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
+ react-style-singleton: 2.2.1(@types/react@18.3.2)(react@18.3.1)
tslib: 2.6.2
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
- react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1):
+ react-remove-scroll@2.5.7(@types/react@18.3.2)(react@18.3.1):
dependencies:
react: 18.3.1
- react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1)
- react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1)
+ react-remove-scroll-bar: 2.3.4(@types/react@18.3.2)(react@18.3.1)
+ react-style-singleton: 2.2.1(@types/react@18.3.2)(react@18.3.1)
tslib: 2.6.2
- use-callback-ref: 1.3.1(@types/react@18.3.3)(react@18.3.1)
- use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1)
+ use-callback-ref: 1.3.1(@types/react@18.3.2)(react@18.3.1)
+ use-sidecar: 1.1.2(@types/react@18.3.2)(react@18.3.1)
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
react-simple-code-editor@0.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1):
+ react-style-singleton@2.2.1(@types/react@18.3.2)(react@18.3.1):
dependencies:
get-nonce: 1.0.1
invariant: 2.2.4
react: 18.3.1
tslib: 2.6.2
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
- react-textarea-autosize@8.5.3(@types/react@18.3.3)(react@18.3.1):
+ react-textarea-autosize@8.5.3(@types/react@18.3.2)(react@18.3.1):
dependencies:
'@babel/runtime': 7.23.9
react: 18.3.1
use-composed-ref: 1.3.0(react@18.3.1)
- use-latest: 1.2.1(@types/react@18.3.3)(react@18.3.1)
+ use-latest: 1.2.1(@types/react@18.3.2)(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
@@ -10412,6 +10551,8 @@ snapshots:
text-table@0.2.0: {}
+ throttle-debounce@3.0.1: {}
+
through@2.3.8: {}
timers-ext@0.1.7:
@@ -10557,6 +10698,8 @@ snapshots:
type-fest@0.21.3: {}
+ type-fest@2.19.0: {}
+
type-fest@4.12.0: {}
type@1.2.0: {}
@@ -10640,12 +10783,12 @@ snapshots:
url-toolkit@2.2.5: {}
- use-callback-ref@1.3.1(@types/react@18.3.3)(react@18.3.1):
+ use-callback-ref@1.3.1(@types/react@18.3.2)(react@18.3.1):
dependencies:
react: 18.3.1
tslib: 2.6.2
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
use-composed-ref@1.3.0(react@18.3.1):
dependencies:
@@ -10657,26 +10800,26 @@ snapshots:
dequal: 2.0.3
react: 18.3.1
- use-isomorphic-layout-effect@1.1.2(@types/react@18.3.3)(react@18.3.1):
+ use-isomorphic-layout-effect@1.1.2(@types/react@18.3.2)(react@18.3.1):
dependencies:
react: 18.3.1
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
- use-latest@1.2.1(@types/react@18.3.3)(react@18.3.1):
+ use-latest@1.2.1(@types/react@18.3.2)(react@18.3.1):
dependencies:
react: 18.3.1
- use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.3)(react@18.3.1)
+ use-isomorphic-layout-effect: 1.1.2(@types/react@18.3.2)(react@18.3.1)
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
- use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1):
+ use-sidecar@1.1.2(@types/react@18.3.2)(react@18.3.1):
dependencies:
detect-node-es: 1.1.0
react: 18.3.1
tslib: 2.6.2
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.2
util-deprecate@1.0.2: {}