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: {}