diff --git a/apps/public/components/battery-icon.tsx b/apps/public/components/battery-icon.tsx
index 69ce290c..dca6f1c6 100644
--- a/apps/public/components/battery-icon.tsx
+++ b/apps/public/components/battery-icon.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import {
BatteryFullIcon,
BatteryLowIcon,
diff --git a/apps/public/components/competition.tsx b/apps/public/components/competition.tsx
index 7fc6a16b..e93f7eb6 100644
--- a/apps/public/components/competition.tsx
+++ b/apps/public/components/competition.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { AnimatePresence, motion } from 'framer-motion';
import { useEffect, useState } from 'react';
diff --git a/apps/public/components/github-button.tsx b/apps/public/components/github-button.tsx
index 923fefad..07854d5c 100644
--- a/apps/public/components/github-button.tsx
+++ b/apps/public/components/github-button.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { getGithubRepoInfo } from '@/lib/github';
import Link from 'next/link';
import { useEffect, useState } from 'react';
diff --git a/apps/public/components/hero-carousel.tsx b/apps/public/components/hero-carousel.tsx
index bbaac164..615aad2c 100644
--- a/apps/public/components/hero-carousel.tsx
+++ b/apps/public/components/hero-carousel.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { cn } from '@/lib/utils';
import { motion } from 'framer-motion';
import NextImage from 'next/image';
diff --git a/apps/public/components/hero-map.tsx b/apps/public/components/hero-map.tsx
index f7c38f7f..2e5fb80a 100644
--- a/apps/public/components/hero-map.tsx
+++ b/apps/public/components/hero-map.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { motion, useScroll, useTransform } from 'framer-motion';
import { WorldMap } from './world-map';
diff --git a/apps/public/components/navbar.tsx b/apps/public/components/navbar.tsx
index 3d15da89..92c31a06 100644
--- a/apps/public/components/navbar.tsx
+++ b/apps/public/components/navbar.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { baseOptions } from '@/app/layout.config';
import { cn } from '@/lib/utils';
import { AnimatePresence, motion } from 'framer-motion';
diff --git a/apps/public/components/pricing-slider.tsx b/apps/public/components/pricing-slider.tsx
index 11b153ad..ea7d613d 100644
--- a/apps/public/components/pricing-slider.tsx
+++ b/apps/public/components/pricing-slider.tsx
@@ -1,4 +1,3 @@
-'use client';
import NumberFlow from '@number-flow/react';
import { cn } from '@/lib/utils';
diff --git a/apps/public/components/sections/features/events-feature.tsx b/apps/public/components/sections/features/events-feature.tsx
index f72d9014..b1ec3bd9 100644
--- a/apps/public/components/sections/features/events-feature.tsx
+++ b/apps/public/components/sections/features/events-feature.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { AnimatePresence, motion } from 'framer-motion';
import {
BellIcon,
diff --git a/apps/public/components/sections/features/product-analytics-feature.tsx b/apps/public/components/sections/features/product-analytics-feature.tsx
index bf3c37e1..559f4509 100644
--- a/apps/public/components/sections/features/product-analytics-feature.tsx
+++ b/apps/public/components/sections/features/product-analytics-feature.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { motion } from 'framer-motion';
import { useEffect, useState } from 'react';
diff --git a/apps/public/components/sections/features/profiles-feature.tsx b/apps/public/components/sections/features/profiles-feature.tsx
index d2433bc7..8b484385 100644
--- a/apps/public/components/sections/features/profiles-feature.tsx
+++ b/apps/public/components/sections/features/profiles-feature.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import Image from 'next/image';
import { useEffect, useState } from 'react';
diff --git a/apps/public/components/sections/features/web-analytics-feature.tsx b/apps/public/components/sections/features/web-analytics-feature.tsx
index 3cf5a03a..8c216573 100644
--- a/apps/public/components/sections/features/web-analytics-feature.tsx
+++ b/apps/public/components/sections/features/web-analytics-feature.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { SimpleChart } from '@/components/simple-chart';
import { cn } from '@/lib/utils';
import NumberFlow from '@number-flow/react';
diff --git a/apps/public/components/ui/accordion.tsx b/apps/public/components/ui/accordion.tsx
index d7c78719..0b0ea02d 100644
--- a/apps/public/components/ui/accordion.tsx
+++ b/apps/public/components/ui/accordion.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import * as AccordionPrimitive from '@radix-ui/react-accordion';
import { ChevronDown } from 'lucide-react';
import type * as React from 'react';
diff --git a/apps/public/components/ui/slider.tsx b/apps/public/components/ui/slider.tsx
index 955077e9..9f493c61 100644
--- a/apps/public/components/ui/slider.tsx
+++ b/apps/public/components/ui/slider.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import * as SliderPrimitive from '@radix-ui/react-slider';
import * as React from 'react';
diff --git a/apps/public/components/ui/tooltip.tsx b/apps/public/components/ui/tooltip.tsx
index d8a558ed..1076957d 100644
--- a/apps/public/components/ui/tooltip.tsx
+++ b/apps/public/components/ui/tooltip.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
import type * as React from 'react';
diff --git a/apps/public/components/world-map.tsx b/apps/public/components/world-map.tsx
index d7273f9c..77296276 100644
--- a/apps/public/components/world-map.tsx
+++ b/apps/public/components/world-map.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import DottedMap from 'dotted-map/without-countries';
import { useEffect, useMemo, useState } from 'react';
import { mapJsonString } from './world-map-string';
diff --git a/apps/start/package.json b/apps/start/package.json
index c7e93ddb..2f42405a 100644
--- a/apps/start/package.json
+++ b/apps/start/package.json
@@ -3,6 +3,7 @@
"private": true,
"type": "module",
"scripts": {
+ "testing": "pnpm dev",
"dev": "pnpm with-env vite dev --port 3000",
"start_deprecated": "pnpm with-env node .output/server/index.mjs",
"preview": "vite preview",
diff --git a/apps/start/src/components/clients/table/index.tsx b/apps/start/src/components/clients/table/index.tsx
index 8945fbcb..a53f8eb3 100644
--- a/apps/start/src/components/clients/table/index.tsx
+++ b/apps/start/src/components/clients/table/index.tsx
@@ -1,9 +1,12 @@
import type { UseQueryResult } from '@tanstack/react-query';
+import { Button } from '@/components/ui/button';
import { DataTable } from '@/components/ui/data-table/data-table';
import { DataTableToolbar } from '@/components/ui/data-table/data-table-toolbar';
import { useTable } from '@/components/ui/data-table/use-table';
+import { pushModal } from '@/modals';
import type { RouterOutputs } from '@/trpc/client';
+import { PlusIcon } from 'lucide-react';
import { useColumns } from './columns';
type Props = {
@@ -23,7 +26,15 @@ export const ClientsTable = ({ query }: Props) => {
return (
<>
-
+
+
+
>
);
diff --git a/apps/start/src/components/feedback-button.tsx b/apps/start/src/components/feedback-button.tsx
index 97a1a051..77652cc6 100644
--- a/apps/start/src/components/feedback-button.tsx
+++ b/apps/start/src/components/feedback-button.tsx
@@ -16,6 +16,7 @@ export function FeedbackButton() {
(window.uj as any).identify({
id: context.session?.userId,
firstName: context.session?.user?.firstName,
+ email: context.session?.user?.email,
});
(window.uj as any).showWidget();
}
diff --git a/apps/start/src/components/organization/billing.tsx b/apps/start/src/components/organization/billing.tsx
index b73a8950..c817f99b 100644
--- a/apps/start/src/components/organization/billing.tsx
+++ b/apps/start/src/components/organization/billing.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Button } from '@/components/ui/button';
import {
Dialog,
diff --git a/apps/start/src/components/organization/current-subscription.tsx b/apps/start/src/components/organization/current-subscription.tsx
index 62fe38f0..2ae28f78 100644
--- a/apps/start/src/components/organization/current-subscription.tsx
+++ b/apps/start/src/components/organization/current-subscription.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
import { Button } from '@/components/ui/button';
import { Widget, WidgetBody, WidgetHead } from '@/components/widget';
diff --git a/apps/start/src/components/organization/edit-organization.tsx b/apps/start/src/components/organization/edit-organization.tsx
index 718a7dfc..990426ad 100644
--- a/apps/start/src/components/organization/edit-organization.tsx
+++ b/apps/start/src/components/organization/edit-organization.tsx
@@ -1,12 +1,9 @@
-'use client';
-
import { InputWithLabel, WithLabel } from '@/components/forms/input-with-label';
import { Button } from '@/components/ui/button';
import { Widget, WidgetBody, WidgetHead } from '@/components/widget';
import { useTRPC } from '@/integrations/trpc/react';
import { handleError } from '@/trpc/client';
-import { useMutation } from '@tanstack/react-query';
-import { useRouter } from '@tanstack/react-router';
+import { useMutation, useQueryClient } from '@tanstack/react-query';
import { Controller, useForm } from 'react-hook-form';
import { toast } from 'sonner';
import type { z } from 'zod';
@@ -24,8 +21,6 @@ interface EditOrganizationProps {
export default function EditOrganization({
organization,
}: EditOrganizationProps) {
- const router = useRouter();
-
const { register, handleSubmit, formState, reset, control } = useForm({
defaultValues: {
id: organization.id,
@@ -35,6 +30,7 @@ export default function EditOrganization({
});
const trpc = useTRPC();
+ const queryClient = useQueryClient();
const mutation = useMutation(
trpc.organization.update.mutationOptions({
onSuccess(res: any) {
@@ -45,7 +41,7 @@ export default function EditOrganization({
...res,
timezone: res.timezone!,
});
- router.invalidate();
+ queryClient.invalidateQueries(trpc.organization.get.pathFilter());
},
onError: handleError,
}),
diff --git a/apps/start/src/components/organization/organization.tsx b/apps/start/src/components/organization/organization.tsx
index dfdbeb16..d063e92b 100644
--- a/apps/start/src/components/organization/organization.tsx
+++ b/apps/start/src/components/organization/organization.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import type { IServiceOrganization } from '@openpanel/db';
import EditOrganization from './edit-organization';
diff --git a/apps/start/src/components/organization/usage.tsx b/apps/start/src/components/organization/usage.tsx
index e8be151d..778ed624 100644
--- a/apps/start/src/components/organization/usage.tsx
+++ b/apps/start/src/components/organization/usage.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import {
X_AXIS_STYLE_PROPS,
useXAxisProps,
diff --git a/apps/start/src/components/profiles/latest-events.tsx b/apps/start/src/components/profiles/latest-events.tsx
index 9ec5ac9f..9967d43a 100644
--- a/apps/start/src/components/profiles/latest-events.tsx
+++ b/apps/start/src/components/profiles/latest-events.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Button } from '@/components/ui/button';
import { Widget } from '@/components/widget';
import { useTRPC } from '@/integrations/trpc/react';
diff --git a/apps/start/src/components/project-selector.tsx b/apps/start/src/components/project-selector.tsx
index ebd5a042..f044651c 100644
--- a/apps/start/src/components/project-selector.tsx
+++ b/apps/start/src/components/project-selector.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Button } from '@/components/ui/button';
import {
DropdownMenu,
diff --git a/apps/start/src/components/realtime/realtime-active-sessions.tsx b/apps/start/src/components/realtime/realtime-active-sessions.tsx
index 6716db90..21e0f44c 100644
--- a/apps/start/src/components/realtime/realtime-active-sessions.tsx
+++ b/apps/start/src/components/realtime/realtime-active-sessions.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { useTRPC } from '@/integrations/trpc/react';
import { useQuery } from '@tanstack/react-query';
import { AnimatePresence, motion } from 'framer-motion';
diff --git a/apps/start/src/components/realtime/realtime-geo.tsx b/apps/start/src/components/realtime/realtime-geo.tsx
index 1acede2f..41c2a296 100644
--- a/apps/start/src/components/realtime/realtime-geo.tsx
+++ b/apps/start/src/components/realtime/realtime-geo.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { useNumber } from '@/hooks/use-numer-formatter';
import { useTRPC } from '@/integrations/trpc/react';
import { countries } from '@/translations/countries';
diff --git a/apps/start/src/components/realtime/realtime-paths.tsx b/apps/start/src/components/realtime/realtime-paths.tsx
index 639417b9..0c79d823 100644
--- a/apps/start/src/components/realtime/realtime-paths.tsx
+++ b/apps/start/src/components/realtime/realtime-paths.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { useNumber } from '@/hooks/use-numer-formatter';
import { useTRPC } from '@/integrations/trpc/react';
import { useQuery } from '@tanstack/react-query';
diff --git a/apps/start/src/components/realtime/realtime-referrals.tsx b/apps/start/src/components/realtime/realtime-referrals.tsx
index ffd33459..ac28fb2a 100644
--- a/apps/start/src/components/realtime/realtime-referrals.tsx
+++ b/apps/start/src/components/realtime/realtime-referrals.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { useNumber } from '@/hooks/use-numer-formatter';
import { useTRPC } from '@/integrations/trpc/react';
import { useQuery } from '@tanstack/react-query';
diff --git a/apps/start/src/components/realtime/realtime-reloader.tsx b/apps/start/src/components/realtime/realtime-reloader.tsx
index f6aee2ca..934812f9 100644
--- a/apps/start/src/components/realtime/realtime-reloader.tsx
+++ b/apps/start/src/components/realtime/realtime-reloader.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import useWS from '@/hooks/use-ws';
import { useTRPC } from '@/integrations/trpc/react';
import { useQueryClient } from '@tanstack/react-query';
diff --git a/apps/start/src/components/settings/delete-project.tsx b/apps/start/src/components/settings/delete-project.tsx
index ee9518aa..2fdf7ec6 100644
--- a/apps/start/src/components/settings/delete-project.tsx
+++ b/apps/start/src/components/settings/delete-project.tsx
@@ -1,12 +1,10 @@
-'use client';
-
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
import { Button } from '@/components/ui/button';
import { Widget, WidgetBody, WidgetHead } from '@/components/widget';
import { handleError, useTRPC } from '@/integrations/trpc/react';
import { showConfirm } from '@/modals';
import type { IServiceProjectWithClients } from '@openpanel/db';
-import { useMutation } from '@tanstack/react-query';
+import { useMutation, useQueryClient } from '@tanstack/react-query';
import { useRouter } from '@tanstack/react-router';
import { addHours, format, startOfHour } from 'date-fns';
import { TrashIcon } from 'lucide-react';
@@ -18,12 +16,17 @@ export default function DeleteProject({ project }: Props) {
const router = useRouter();
const trpc = useTRPC();
+ const queryClient = useQueryClient();
const mutation = useMutation(
trpc.project.delete.mutationOptions({
onError: handleError,
onSuccess: () => {
- toast.success('Project updated');
- router.invalidate();
+ toast.success('Project is scheduled for deletion');
+ queryClient.invalidateQueries(
+ trpc.project.getProjectWithClients.queryFilter({
+ projectId: project.id,
+ }),
+ );
},
}),
);
@@ -32,8 +35,12 @@ export default function DeleteProject({ project }: Props) {
trpc.project.cancelDeletion.mutationOptions({
onError: handleError,
onSuccess: () => {
- toast.success('Project updated');
- router.invalidate();
+ toast.success('Project deletion cancelled');
+ queryClient.invalidateQueries(
+ trpc.project.getProjectWithClients.queryFilter({
+ projectId: project.id,
+ }),
+ );
},
}),
);
diff --git a/apps/start/src/components/settings/edit-project-details.tsx b/apps/start/src/components/settings/edit-project-details.tsx
index 9f011f5d..6839c7ba 100644
--- a/apps/start/src/components/settings/edit-project-details.tsx
+++ b/apps/start/src/components/settings/edit-project-details.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import AnimateHeight from '@/components/animate-height';
import { InputWithLabel, WithLabel } from '@/components/forms/input-with-label';
import TagInput from '@/components/forms/tag-input';
@@ -13,7 +11,7 @@ import { handleError, useTRPC } from '@/integrations/trpc/react';
import { zodResolver } from '@hookform/resolvers/zod';
import type { IServiceProjectWithClients } from '@openpanel/db';
import { zProject } from '@openpanel/validation';
-import { useMutation } from '@tanstack/react-query';
+import { useMutation, useQueryClient } from '@tanstack/react-query';
import { SaveIcon } from 'lucide-react';
import { useState } from 'react';
import { Controller, useForm } from 'react-hook-form';
@@ -44,11 +42,22 @@ export default function EditProjectDetails({ project }: Props) {
},
});
const trpc = useTRPC();
+ const queryClient = useQueryClient();
const mutation = useMutation(
trpc.project.update.mutationOptions({
onError: handleError,
onSuccess: () => {
toast.success('Project updated');
+ queryClient.invalidateQueries(
+ trpc.project.list.queryFilter({
+ organizationId: project.organizationId,
+ }),
+ );
+ queryClient.invalidateQueries(
+ trpc.project.getProjectWithClients.queryFilter({
+ projectId: project.id,
+ }),
+ );
},
}),
);
diff --git a/apps/start/src/components/settings/edit-project-filters.tsx b/apps/start/src/components/settings/edit-project-filters.tsx
index 36d7bddd..4e38f592 100644
--- a/apps/start/src/components/settings/edit-project-filters.tsx
+++ b/apps/start/src/components/settings/edit-project-filters.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { WithLabel } from '@/components/forms/input-with-label';
import TagInput from '@/components/forms/tag-input';
import { Button } from '@/components/ui/button';
diff --git a/apps/start/src/components/ui/command.tsx b/apps/start/src/components/ui/command.tsx
index a3e80d7c..a628f2f0 100644
--- a/apps/start/src/components/ui/command.tsx
+++ b/apps/start/src/components/ui/command.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Command as CommandPrimitive } from 'cmdk';
import { SearchIcon } from 'lucide-react';
import type * as React from 'react';
diff --git a/apps/start/src/components/ui/data-table/data-table-column-header.tsx b/apps/start/src/components/ui/data-table/data-table-column-header.tsx
index 6f3b1d34..e9d08fd3 100644
--- a/apps/start/src/components/ui/data-table/data-table-column-header.tsx
+++ b/apps/start/src/components/ui/data-table/data-table-column-header.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import type { Column } from '@tanstack/react-table';
import {
ChevronDown,
diff --git a/apps/start/src/components/ui/data-table/data-table-date-filter.tsx b/apps/start/src/components/ui/data-table/data-table-date-filter.tsx
index 678fcef6..3c7fe9a7 100644
--- a/apps/start/src/components/ui/data-table/data-table-date-filter.tsx
+++ b/apps/start/src/components/ui/data-table/data-table-date-filter.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import type { Column } from '@tanstack/react-table';
import { CalendarIcon, XCircle, XCircleIcon } from 'lucide-react';
import * as React from 'react';
diff --git a/apps/start/src/components/ui/data-table/data-table-faceted-filter.tsx b/apps/start/src/components/ui/data-table/data-table-faceted-filter.tsx
index 24724a76..34738c52 100644
--- a/apps/start/src/components/ui/data-table/data-table-faceted-filter.tsx
+++ b/apps/start/src/components/ui/data-table/data-table-faceted-filter.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import type { Column } from '@tanstack/react-table';
import {
Check,
diff --git a/apps/start/src/components/ui/data-table/data-table-slider-filter.tsx b/apps/start/src/components/ui/data-table/data-table-slider-filter.tsx
index e85951c9..badc510a 100644
--- a/apps/start/src/components/ui/data-table/data-table-slider-filter.tsx
+++ b/apps/start/src/components/ui/data-table/data-table-slider-filter.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Button } from '@/components/ui/button';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
diff --git a/apps/start/src/components/ui/data-table/data-table-toolbar.tsx b/apps/start/src/components/ui/data-table/data-table-toolbar.tsx
index c1bad405..9f1ce2d6 100644
--- a/apps/start/src/components/ui/data-table/data-table-toolbar.tsx
+++ b/apps/start/src/components/ui/data-table/data-table-toolbar.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import type { Column, Table } from '@tanstack/react-table';
import { SearchIcon, X, XIcon } from 'lucide-react';
import * as React from 'react';
diff --git a/apps/start/src/components/ui/data-table/data-table-view-options.tsx b/apps/start/src/components/ui/data-table/data-table-view-options.tsx
index f807a62a..cbe2eb39 100644
--- a/apps/start/src/components/ui/data-table/data-table-view-options.tsx
+++ b/apps/start/src/components/ui/data-table/data-table-view-options.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { Button } from '@/components/ui/button';
import {
Command,
diff --git a/apps/start/src/components/ui/date-time.tsx b/apps/start/src/components/ui/date-time.tsx
index 71e070d1..3b797911 100644
--- a/apps/start/src/components/ui/date-time.tsx
+++ b/apps/start/src/components/ui/date-time.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { format } from 'date-fns';
import { Button } from '@/components/ui/button';
diff --git a/apps/start/src/components/ui/select.tsx b/apps/start/src/components/ui/select.tsx
index 6dff0473..46077950 100644
--- a/apps/start/src/components/ui/select.tsx
+++ b/apps/start/src/components/ui/select.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import * as SelectPrimitive from '@radix-ui/react-select';
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
import type * as React from 'react';
diff --git a/apps/start/src/components/ui/slider.tsx b/apps/start/src/components/ui/slider.tsx
index 99b59fd8..da17fe72 100644
--- a/apps/start/src/components/ui/slider.tsx
+++ b/apps/start/src/components/ui/slider.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import * as SliderPrimitive from '@radix-ui/react-slider';
import * as React from 'react';
diff --git a/apps/start/src/modals/add-client.tsx b/apps/start/src/modals/add-client.tsx
index 12d8e9b0..d4db66a4 100644
--- a/apps/start/src/modals/add-client.tsx
+++ b/apps/start/src/modals/add-client.tsx
@@ -44,6 +44,9 @@ export default function AddClient() {
queryClient.invalidateQueries(
trpc.project.getProjectWithClients.pathFilter(),
);
+ queryClient.invalidateQueries(
+ trpc.client.list.queryFilter({ projectId }),
+ );
},
onError: handleError,
}),
diff --git a/apps/start/src/modals/add-project.tsx b/apps/start/src/modals/add-project.tsx
index c0bebdb0..c0253ac9 100644
--- a/apps/start/src/modals/add-project.tsx
+++ b/apps/start/src/modals/add-project.tsx
@@ -10,7 +10,7 @@ import { useTRPC } from '@/integrations/trpc/react';
import { handleError } from '@/integrations/trpc/react';
import { zodResolver } from '@hookform/resolvers/zod';
import { zOnboardingProject } from '@openpanel/validation';
-import { useMutation } from '@tanstack/react-query';
+import { useMutation, useQueryClient } from '@tanstack/react-query';
import { useNavigate } from '@tanstack/react-router';
import {
MonitorIcon,
@@ -45,10 +45,14 @@ export default function AddProject() {
},
});
const trpc = useTRPC();
+ const queryClient = useQueryClient();
const mutation = useMutation(
trpc.project.create.mutationOptions({
onError: handleError,
onSuccess: (res) => {
+ queryClient.invalidateQueries(
+ trpc.project.list.queryFilter({ organizationId }),
+ );
toast.success('Project created', {
description: `${res.name}`,
action: {
diff --git a/apps/start/src/modals/create-invite.tsx b/apps/start/src/modals/create-invite.tsx
index ed0e9543..83572f5b 100644
--- a/apps/start/src/modals/create-invite.tsx
+++ b/apps/start/src/modals/create-invite.tsx
@@ -1,5 +1,3 @@
-'use client';
-
import { InputWithLabel } from '@/components/forms/input-with-label';
import { Button } from '@/components/ui/button';
import { ComboboxAdvanced } from '@/components/ui/combobox-advanced';
diff --git a/apps/worker/package.json b/apps/worker/package.json
index 85fa5cbf..c9b54878 100644
--- a/apps/worker/package.json
+++ b/apps/worker/package.json
@@ -12,8 +12,8 @@
"gen:referrers": "jiti scripts/get-referrers.ts && biome format --write ./src/referrers/index.ts"
},
"dependencies": {
- "@bull-board/api": "5.21.0",
- "@bull-board/express": "5.21.0",
+ "@bull-board/api": "6.13.1",
+ "@bull-board/express": "6.13.1",
"@openpanel/common": "workspace:*",
"@openpanel/db": "workspace:*",
"@openpanel/email": "workspace:*",
diff --git a/apps/worker/src/index.ts b/apps/worker/src/index.ts
index 65953608..bb7793d7 100644
--- a/apps/worker/src/index.ts
+++ b/apps/worker/src/index.ts
@@ -1,8 +1,6 @@
import { createBullBoard } from '@bull-board/api';
import { BullMQAdapter } from '@bull-board/api/bullMQAdapter';
import { ExpressAdapter } from '@bull-board/express';
-import express from 'express';
-
import { createInitialSalts } from '@openpanel/db';
import {
cronQueue,
@@ -11,6 +9,7 @@ import {
notificationQueue,
sessionsQueue,
} from '@openpanel/queue';
+import express from 'express';
import client from 'prom-client';
import { BullBoardGroupMQAdapter } from 'groupmq';
@@ -32,7 +31,7 @@ async function start() {
if (process.env.DISABLE_BULLBOARD === undefined) {
const serverAdapter = new ExpressAdapter();
serverAdapter.setBasePath('/');
- createBullBoard({
+ ({
queues: [
new BullBoardGroupMQAdapter(eventsGroupQueue) as any,
new BullMQAdapter(sessionsQueue),
diff --git a/packages/db/src/services/event.service.ts b/packages/db/src/services/event.service.ts
index c146904c..195fc887 100644
--- a/packages/db/src/services/event.service.ts
+++ b/packages/db/src/services/event.service.ts
@@ -551,7 +551,7 @@ export async function getEventList(options: GetEventListOptions) {
if (events && events.length > 0) {
sb.where.events = `name IN (${join(
- events.map((event) => escape(event)),
+ events.map((event) => sqlstring.escape(event)),
',',
)})`;
}
@@ -612,7 +612,7 @@ export async function getEventsCount({
if (events && events.length > 0) {
sb.where.events = `name IN (${join(
- events.map((event) => escape(event)),
+ events.map((event) => sqlstring.escape(event)),
',',
)})`;
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7ba50951..5784c75c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -792,11 +792,11 @@ importers:
apps/worker:
dependencies:
'@bull-board/api':
- specifier: 5.21.0
- version: 5.21.0(@bull-board/ui@5.21.0)
+ specifier: 6.13.1
+ version: 6.13.1(@bull-board/ui@6.13.1)
'@bull-board/express':
- specifier: 5.21.0
- version: 5.21.0
+ specifier: 6.13.1
+ version: 6.13.1
'@openpanel/common':
specifier: workspace:*
version: link:../../packages/common
@@ -2687,16 +2687,16 @@ packages:
cpu: [x64]
os: [win32]
- '@bull-board/api@5.21.0':
- resolution: {integrity: sha512-27tjptwgRgP1G5jT+POjiZZOP3LgdIM4XdfEWfa6t5E0CYImL4EjmdiFo5lhbHhYKZ842VhIpHuNcPk8nY3K9A==}
+ '@bull-board/api@6.13.1':
+ resolution: {integrity: sha512-L9Ukfd/gxg8VIUb+vXRcU31yJsAaLLKG2qU/OMXQJ5EoXm2JhWBat+26YgrH/oKIb9zbZsg8xwHyqxa7sHEkVg==}
peerDependencies:
- '@bull-board/ui': 5.21.0
+ '@bull-board/ui': 6.13.1
- '@bull-board/express@5.21.0':
- resolution: {integrity: sha512-iBPBJq8KYebYrN4YvdSvEfOxjYYJfWycilAfNDSikyI3rJKOBRq34BmDnQj6Jn1ytssBb+vvZ35+bCSbbhFB3w==}
+ '@bull-board/express@6.13.1':
+ resolution: {integrity: sha512-wipvCsdeMdcgWVc77qrs858OjyGo7IAjJxuuWd4q5dvciFmTU1fmfZddWuZ1jDWpq5P7KdcpGxjzF1vnd2GaUw==}
- '@bull-board/ui@5.21.0':
- resolution: {integrity: sha512-eH8QQwIHgCXxNEmlg9EZr3fSvno/bdbgBGfSQO5s9c9n9eDEaKX46ambKSPvgFPtwSdiV1AYQEa/3fGSebVIxg==}
+ '@bull-board/ui@6.13.1':
+ resolution: {integrity: sha512-DzPjCFzjEbDukhfSd7nLdTLVKIv5waARQuAXETSRqiKTN4vSA1KNdaJ8p72YwHujKO19yFW1zWjNKrzsa8DCIg==}
'@capsizecss/unpack@2.4.0':
resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==}
@@ -8724,6 +8724,10 @@ packages:
resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ body-parser@1.20.3:
+ resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -8834,10 +8838,18 @@ packages:
resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
engines: {node: '>= 10'}
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
call-bind@1.0.7:
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
engines: {node: '>= 0.4'}
+ call-bound@1.0.4:
+ resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
+ engines: {node: '>= 0.4'}
+
call-once-fn@1.0.17:
resolution: {integrity: sha512-aSu6eFg1N+L81d6RFbzfQ6I9AZVwxx5aK+4CpEtMtNEG+DOefqA+qmph0GAuBHVpBayK7IKhXzB2dLIa2D8CiA==}
engines: {node: '>=0.8'}
@@ -9201,6 +9213,10 @@ packages:
resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
engines: {node: '>= 0.6'}
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
@@ -9768,6 +9784,10 @@ packages:
oxc-resolver:
optional: true
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
duplexify@3.7.1:
resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
@@ -9837,6 +9857,10 @@ packages:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'}
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
encoding-sniffer@0.2.1:
resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==}
@@ -9903,6 +9927,10 @@ packages:
resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
engines: {node: '>= 0.4'}
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
@@ -9917,6 +9945,10 @@ packages:
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
engines: {node: '>= 0.4'}
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
es-set-tostringtag@2.0.2:
resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
engines: {node: '>= 0.4'}
@@ -10124,6 +10156,10 @@ packages:
resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
engines: {node: '>= 0.10.0'}
+ express@4.21.2:
+ resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
+ engines: {node: '>= 0.10.0'}
+
exsolve@1.0.7:
resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
@@ -10291,6 +10327,10 @@ packages:
resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
engines: {node: '>= 0.8'}
+ finalhandler@1.3.1:
+ resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
+ engines: {node: '>= 0.8'}
+
find-cache-dir@2.1.0:
resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
engines: {node: '>=6'}
@@ -10519,6 +10559,10 @@ packages:
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
get-nonce@1.0.1:
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
engines: {node: '>=6'}
@@ -10531,6 +10575,10 @@ packages:
resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==}
engines: {node: '>=16'}
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
get-stream@4.1.0:
resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
engines: {node: '>=6'}
@@ -10620,6 +10668,10 @@ packages:
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -10686,6 +10738,10 @@ packages:
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
engines: {node: '>= 0.4'}
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
has-tostringtag@1.0.2:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
@@ -10693,10 +10749,6 @@ packages:
hash-string@1.0.0:
resolution: {integrity: sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==}
- hasown@2.0.1:
- resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
- engines: {node: '>= 0.4'}
-
hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
@@ -11751,6 +11803,10 @@ packages:
matchmediaquery@0.3.1:
resolution: {integrity: sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==}
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
mathjs@12.3.2:
resolution: {integrity: sha512-o+HwBVD71MHdYpdScDd6CEcdd6CJOF2eXQJE0kNuIkfTjffPyqoeYdYkzVqimTUr1YgIQkNbL8MakHCZ2Ml7mg==}
engines: {node: '>= 18'}
@@ -11849,6 +11905,9 @@ packages:
merge-descriptors@1.0.1:
resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -12459,6 +12518,10 @@ packages:
object-inspect@1.13.1:
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@@ -12705,6 +12768,9 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
@@ -13045,6 +13111,10 @@ packages:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
+ qs@6.13.0:
+ resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
+ engines: {node: '>=0.6'}
+
quansync@0.2.11:
resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
@@ -13901,6 +13971,10 @@ packages:
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
engines: {node: '>= 0.8.0'}
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
serialize-error@2.1.0:
resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==}
engines: {node: '>=0.10.0'}
@@ -13919,6 +13993,10 @@ packages:
resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
engines: {node: '>= 0.8.0'}
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
@@ -13985,10 +14063,26 @@ packages:
resolution: {integrity: sha512-yhniEILouC0s4lpH0h7rJsfylZdca10W9mDJRAFh3EpcSUanCHGb0R7kcFOIUCZYSAPo0PUD5ZxWQdW0T4xaug==}
hasBin: true
+ side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+
+ side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+
side-channel@1.0.5:
resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==}
engines: {node: '>= 0.4'}
+ side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+
siginfo@2.0.0:
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
@@ -16909,23 +17003,23 @@ snapshots:
'@biomejs/cli-win32-x64@1.9.4':
optional: true
- '@bull-board/api@5.21.0(@bull-board/ui@5.21.0)':
+ '@bull-board/api@6.13.1(@bull-board/ui@6.13.1)':
dependencies:
- '@bull-board/ui': 5.21.0
+ '@bull-board/ui': 6.13.1
redis-info: 3.1.0
- '@bull-board/express@5.21.0':
+ '@bull-board/express@6.13.1':
dependencies:
- '@bull-board/api': 5.21.0(@bull-board/ui@5.21.0)
- '@bull-board/ui': 5.21.0
+ '@bull-board/api': 6.13.1(@bull-board/ui@6.13.1)
+ '@bull-board/ui': 6.13.1
ejs: 3.1.10
- express: 4.19.2
+ express: 4.21.2
transitivePeerDependencies:
- supports-color
- '@bull-board/ui@5.21.0':
+ '@bull-board/ui@6.13.1':
dependencies:
- '@bull-board/api': 5.21.0(@bull-board/ui@5.21.0)
+ '@bull-board/api': 6.13.1(@bull-board/ui@6.13.1)
'@capsizecss/unpack@2.4.0':
dependencies:
@@ -23592,6 +23686,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ body-parser@1.20.3:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.13.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
boolbase@1.0.0: {}
bops@0.1.1:
@@ -23748,6 +23859,11 @@ snapshots:
transitivePeerDependencies:
- bluebird
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
call-bind@1.0.7:
dependencies:
es-define-property: 1.0.0
@@ -23756,6 +23872,11 @@ snapshots:
get-intrinsic: 1.2.4
set-function-length: 1.2.1
+ call-bound@1.0.4:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+
call-once-fn@1.0.17: {}
caller-callsite@2.0.0:
@@ -24112,6 +24233,8 @@ snapshots:
cookie@0.6.0: {}
+ cookie@0.7.1: {}
+
cookie@0.7.2: {}
cookie@1.0.2: {}
@@ -24665,6 +24788,12 @@ snapshots:
dts-resolver@2.1.2: {}
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
duplexify@3.7.1:
dependencies:
end-of-stream: 1.4.4
@@ -24733,6 +24862,8 @@ snapshots:
encodeurl@1.0.2: {}
+ encodeurl@2.0.0: {}
+
encoding-sniffer@0.2.1:
dependencies:
iconv-lite: 0.6.3
@@ -24890,6 +25021,8 @@ snapshots:
dependencies:
get-intrinsic: 1.2.4
+ es-define-property@1.0.1: {}
+
es-errors@1.3.0: {}
es-get-iterator@1.1.3:
@@ -24910,6 +25043,10 @@ snapshots:
dependencies:
es-errors: 1.3.0
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
es-set-tostringtag@2.0.2:
dependencies:
get-intrinsic: 1.2.4
@@ -25360,6 +25497,42 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ express@4.21.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
exsolve@1.0.7: {}
extend-shallow@2.0.1:
@@ -25594,6 +25767,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ finalhandler@1.3.1:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
find-cache-dir@2.1.0:
dependencies:
commondir: 1.0.1
@@ -25871,7 +26056,20 @@ snapshots:
function-bind: 1.1.2
has-proto: 1.0.1
has-symbols: 1.0.3
- hasown: 2.0.1
+ hasown: 2.0.2
+
+ 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.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
get-nonce@1.0.1: {}
@@ -25879,6 +26077,11 @@ snapshots:
get-port@7.1.0: {}
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
get-stream@4.1.0:
dependencies:
pump: 3.0.0
@@ -26001,6 +26204,8 @@ snapshots:
dependencies:
get-intrinsic: 1.2.4
+ gopd@1.2.0: {}
+
graceful-fs@4.2.11: {}
graphql-tag@2.12.6(graphql@15.8.0):
@@ -26061,16 +26266,14 @@ snapshots:
has-symbols@1.0.3: {}
+ has-symbols@1.1.0: {}
+
has-tostringtag@1.0.2:
dependencies:
has-symbols: 1.0.3
hash-string@1.0.0: {}
- hasown@2.0.1:
- dependencies:
- function-bind: 1.1.2
-
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
@@ -27226,6 +27429,8 @@ snapshots:
dependencies:
css-mediaquery: 0.1.2
+ math-intrinsics@1.1.0: {}
+
mathjs@12.3.2:
dependencies:
'@babel/runtime': 7.23.9
@@ -27457,6 +27662,8 @@ snapshots:
merge-descriptors@1.0.1: {}
+ merge-descriptors@1.0.3: {}
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -28321,6 +28528,8 @@ snapshots:
object-inspect@1.13.1: {}
+ object-inspect@1.13.4: {}
+
object-keys@1.1.1: {}
object.assign@4.1.5:
@@ -28594,6 +28803,8 @@ snapshots:
lru-cache: 10.2.0
minipass: 7.1.2
+ path-to-regexp@0.1.12: {}
+
path-to-regexp@0.1.7: {}
path-to-regexp@6.3.0: {}
@@ -28934,6 +29145,10 @@ snapshots:
dependencies:
side-channel: 1.0.5
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
quansync@0.2.11: {}
querystringify@2.2.0: {}
@@ -30071,6 +30286,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
serialize-error@2.1.0: {}
seroval-plugins@1.3.2(seroval@1.3.2):
@@ -30088,6 +30321,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
set-blocking@2.0.0: {}
set-cookie-parser@2.6.0: {}
@@ -30185,6 +30427,26 @@ snapshots:
short-unique-id@5.0.3: {}
+ side-channel-list@1.0.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-map@1.0.1:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+
+ side-channel-weakmap@1.0.2:
+ dependencies:
+ call-bound: 1.0.4
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+
side-channel@1.0.5:
dependencies:
call-bind: 1.0.7
@@ -30192,6 +30454,14 @@ snapshots:
get-intrinsic: 1.2.4
object-inspect: 1.13.1
+ side-channel@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+
siginfo@2.0.0: {}
signal-exit@3.0.7: {}