From 18ad88ac125b17ad92c7e8da41898974b68d7ea6 Mon Sep 17 00:00:00 2001
From: Kiril Kartunov
Date: Mon, 18 May 2026 13:33:22 +0300
Subject: [PATCH 01/56] ai workflows in sys-admin
---
src/apps/admin/src/admin-app.routes.tsx | 22 +
src/apps/admin/src/ai/Ai.tsx | 31 +
src/apps/admin/src/ai/index.ts | 1 +
.../AiReviewWorkflowsPage.module.scss | 83 +
.../AiReviewWorkflowsPage.tsx | 271 ++
.../WorkflowDetailsModal.module.scss | 180 +
.../review-workflows/WorkflowDetailsModal.tsx | 217 ++
.../admin/src/ai/review-workflows/index.ts | 1 +
src/apps/admin/src/config/routes.config.ts | 2 +
.../DropdownMenu/DropdownMenu.module.scss | 6 +-
.../Tab/config/system-admin-tabs-config.ts | 12 +
.../src/lib/services/ai-workflows.service.ts | 63 +-
yarn.lock | 2916 +++++++++--------
13 files changed, 2350 insertions(+), 1455 deletions(-)
create mode 100644 src/apps/admin/src/ai/Ai.tsx
create mode 100644 src/apps/admin/src/ai/index.ts
create mode 100644 src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.module.scss
create mode 100644 src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.tsx
create mode 100644 src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.module.scss
create mode 100644 src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.tsx
create mode 100644 src/apps/admin/src/ai/review-workflows/index.ts
diff --git a/src/apps/admin/src/admin-app.routes.tsx b/src/apps/admin/src/admin-app.routes.tsx
index de637b87f..afd3b1645 100644
--- a/src/apps/admin/src/admin-app.routes.tsx
+++ b/src/apps/admin/src/admin-app.routes.tsx
@@ -7,6 +7,8 @@ import {
} from '~/libs/core'
import {
+ aiReviewWorkflowsRouteId,
+ aiRouteId,
billingAccountRouteId,
defaultReviewersRouteId,
gamificationAdminRouteId,
@@ -173,6 +175,12 @@ const PaymentsPage: LazyLoadedComponent = lazyLoad(
'PaymentsPage',
)
+const Ai: LazyLoadedComponent = lazyLoad(() => import('./ai/Ai'))
+const AiReviewWorkflowsPage: LazyLoadedComponent = lazyLoad(
+ () => import('./ai/review-workflows/AiReviewWorkflowsPage'),
+ 'AiReviewWorkflowsPage',
+)
+
export const toolTitle: string = ToolTitle.admin
export const adminRoutes: ReadonlyArray = [
@@ -418,6 +426,20 @@ export const adminRoutes: ReadonlyArray = [
rolesRequired: administratorOnlyRoles,
route: paymentsRouteId,
},
+ // AI Module
+ {
+ children: [
+ {
+ element: ,
+ id: 'ai-review-workflows-page',
+ route: aiReviewWorkflowsRouteId,
+ },
+ ],
+ element: ,
+ id: aiRouteId,
+ rolesRequired: administratorOnlyRoles,
+ route: aiRouteId,
+ },
],
domain: AppSubdomain.admin,
element: ,
diff --git a/src/apps/admin/src/ai/Ai.tsx b/src/apps/admin/src/ai/Ai.tsx
new file mode 100644
index 000000000..572523285
--- /dev/null
+++ b/src/apps/admin/src/ai/Ai.tsx
@@ -0,0 +1,31 @@
+import { FC, useContext, useMemo } from 'react'
+import { Outlet, Routes } from 'react-router-dom'
+
+import { routerContext, RouterContextData } from '~/libs/core'
+
+import { adminRoutes } from '../admin-app.routes'
+import { aiRouteId } from '../config/routes.config'
+
+export const Ai: FC = () => {
+ const childRoutes = useChildRoutes()
+
+ return (
+ <>
+
+ {childRoutes}
+ >
+ )
+}
+
+function useChildRoutes(): Array | undefined {
+ const { getRouteElement }: RouterContextData = useContext(routerContext)
+ const childRoutes = useMemo(
+ () => adminRoutes[0].children
+ ?.find(r => r.id === aiRouteId)
+ ?.children?.map(getRouteElement),
+ [], // eslint-disable-line react-hooks/exhaustive-deps -- missing dependency: getRouteElement
+ )
+ return childRoutes
+}
+
+export default Ai
diff --git a/src/apps/admin/src/ai/index.ts b/src/apps/admin/src/ai/index.ts
new file mode 100644
index 000000000..7f855005e
--- /dev/null
+++ b/src/apps/admin/src/ai/index.ts
@@ -0,0 +1 @@
+export { Ai } from './Ai'
diff --git a/src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.module.scss b/src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.module.scss
new file mode 100644
index 000000000..56069c6c7
--- /dev/null
+++ b/src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.module.scss
@@ -0,0 +1,83 @@
+@import '@libs/ui/styles/includes';
+
+.table {
+ margin-bottom: $sp-4;
+
+ tbody tr:nth-child(odd) {
+ background-color: $black-5;
+ }
+}
+
+.mobileTable {
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: $sp-4;
+
+ tbody tr {
+ td {
+ padding: $sp-2 $sp-4 !important;
+ border-radius: 0 !important;
+ background-color: $tc-white !important;
+
+ &:first-child {
+ font-weight: 600;
+ font-size: 12px;
+ text-transform: uppercase;
+ color: $black-60;
+ white-space: nowrap;
+ width: 120px;
+ }
+ }
+
+ // 5 fields per workflow, alternate every other workflow
+ &:nth-child(10n+1) td,
+ &:nth-child(10n+2) td,
+ &:nth-child(10n+3) td,
+ &:nth-child(10n+4) td,
+ &:nth-child(10n+5) td {
+ background-color: $black-5 !important;
+ }
+ }
+}
+
+.link {
+ color: $link-blue-dark;
+ text-decoration: none;
+ cursor: pointer;
+
+ &:hover {
+ text-decoration: underline;
+ }
+}
+
+.cellText {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ max-width: 250px;
+}
+
+.nameCell {
+ word-break: break-word;
+ white-space: normal;
+}
+
+.nameLink {
+ background: none;
+ border: none;
+ padding: 0;
+ color: $link-blue-dark;
+ text-decoration: none;
+ cursor: pointer;
+ text-align: left;
+ word-break: break-word;
+ white-space: normal;
+
+ &:hover {
+ text-decoration: underline;
+ }
+}
+
+.toggle {
+ cursor: pointer;
+}
diff --git a/src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.tsx b/src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.tsx
new file mode 100644
index 000000000..95ae5416b
--- /dev/null
+++ b/src/apps/admin/src/ai/review-workflows/AiReviewWorkflowsPage.tsx
@@ -0,0 +1,271 @@
+import { FC, useCallback, useEffect, useMemo, useState } from 'react'
+import { toast } from 'react-toastify'
+
+import { EnvironmentConfig } from '~/config'
+import { useWindowSize, WindowSize } from '~/libs/shared'
+import { Table, TableColumn } from '~/libs/ui'
+import FormToggleSwitch from '~/libs/ui/lib/components/form/form-groups/form-toggle-switch'
+
+import { ConfirmModal, PageWrapper, TableLoading, TableNoRecord } from '../../lib'
+import { TableMobile } from '../../lib/components/common/TableMobile'
+import { TableWrapper } from '../../lib/components/common/TableWrapper'
+import { MobileTableColumn } from '../../lib/models'
+import { AiWorkflow, getAiWorkflows, updateAiWorkflow } from '../../lib/services/ai-workflows.service'
+
+import { WorkflowDetailsModal } from './WorkflowDetailsModal'
+import styles from './AiReviewWorkflowsPage.module.scss'
+
+function stopPropagation(e: React.MouseEvent): void {
+ e.stopPropagation()
+}
+
+export const AiReviewWorkflowsPage: FC = () => {
+ const [isLoading, setIsLoading] = useState(true)
+ const [isUpdating, setIsUpdating] = useState(false)
+ const [workflows, setWorkflows] = useState([])
+ const [confirmModal, setConfirmModal] = useState<{ open: boolean; workflow?: AiWorkflow }>({
+ open: false,
+ })
+ const [detailModal, setDetailModal] = useState<{ open: boolean; workflow?: AiWorkflow }>({
+ open: false,
+ })
+ const { width: screenWidth }: WindowSize = useWindowSize()
+ const isMobile = useMemo(() => screenWidth <= 1050, [screenWidth])
+
+ useEffect(() => {
+ setIsLoading(true)
+ getAiWorkflows()
+ .then(setWorkflows)
+ .finally(() => setIsLoading(false))
+ }, [])
+
+ const handleToggleClick = useCallback((workflow: AiWorkflow) => {
+ setConfirmModal({ open: true, workflow })
+ }, [])
+
+ const handleCloseConfirm = useCallback(() => {
+ setConfirmModal({ open: false })
+ }, [])
+
+ const handleNameClick = useCallback((workflow: AiWorkflow) => {
+ setDetailModal({ open: true, workflow })
+ }, [])
+
+ const handleCloseDetail = useCallback(() => {
+ setDetailModal({ open: false })
+ }, [])
+
+ const handleConfirmToggle = useCallback(async () => {
+ if (!confirmModal.workflow) {
+ return
+ }
+
+ const newDisabledState = !confirmModal.workflow.disabled
+
+ setIsUpdating(true)
+ try {
+ await updateAiWorkflow(confirmModal.workflow.id, {
+ disabled: newDisabledState,
+ })
+ setWorkflows(prev => prev.map(w => (
+ w.id === confirmModal.workflow?.id
+ ? { ...w, disabled: newDisabledState }
+ : w
+ )))
+ toast.success(`Workflow ${newDisabledState ? 'deactivated' : 'activated'} successfully`)
+ } catch (error) {
+ toast.error('Failed to update workflow')
+ } finally {
+ setIsUpdating(false)
+ setConfirmModal({ open: false })
+ }
+ }, [confirmModal.workflow])
+
+ const columns = useMemo[]>(() => [
+ {
+ label: 'ID',
+ propertyName: 'id',
+ renderer: (data: AiWorkflow) => (
+ {data.id}
+ ),
+ type: 'element',
+ },
+ {
+ defaultSortDirection: 'asc',
+ label: 'Active',
+ propertyName: 'disabled',
+ renderer: (data: AiWorkflow) => {
+ function onToggleChange(): void {
+ handleToggleClick(data)
+ }
+
+ return (
+
+
+
+ )
+ },
+ type: 'element',
+ },
+ {
+ defaultSortDirection: 'asc',
+ isDefaultSort: true,
+ label: 'Name',
+ propertyName: 'name',
+ renderer: (data: AiWorkflow) => {
+ function onNameClick(e: React.MouseEvent): void {
+ e.stopPropagation()
+ handleNameClick(data)
+ }
+
+ return (
+
+ {data.name}
+
+ )
+ },
+ type: 'element',
+ },
+ {
+ defaultSortDirection: 'asc',
+ label: 'Provider/LLM',
+ propertyName: 'llm.provider.name',
+ renderer: (data: AiWorkflow) => (
+
+ {data.llm?.provider?.name}
+ /
+ {data.llm?.name}
+
+ ),
+ type: 'element',
+ },
+ {
+ label: 'Scorecard',
+ renderer: (data: AiWorkflow) => {
+ if (!data.scorecard?.id) {
+ return {data.scorecard?.name || 'N/A'}
+ }
+
+ return (
+
+ {data.scorecard.name}
+
+ )
+ },
+ type: 'element',
+ },
+ ], [])
+
+ const columnsMobile = useMemo[][]>(
+ () => columns.map(column => {
+ if (column.label === 'Active') {
+ return [
+ {
+ ...column,
+ className: '',
+ label: 'Active label',
+ mobileType: 'label',
+ renderer: () => Active:
,
+ type: 'element',
+ },
+ {
+ ...column,
+ mobileType: 'last-value',
+ },
+ ]
+ }
+
+ return [
+ {
+ ...column,
+ className: '',
+ label: `${column.label as string} label`,
+ mobileType: 'label',
+ renderer: () => (
+
+ {column.label as string}
+ :
+
+ ),
+ type: 'element',
+ },
+ {
+ ...column,
+ mobileType: 'last-value',
+ },
+ ]
+ }),
+ [columns],
+ )
+
+ return (
+
+ {isLoading ? (
+
+ ) : (
+ <>
+ {workflows.length === 0 ? (
+
+ ) : (
+
+ {isMobile ? (
+
+ ) : (
+
+ )}
+
+ )}
+ >
+ )}
+
+
+ Are you sure you want to
+ {' '}
+ {confirmModal.workflow?.disabled ? 'activate' : 'deactivate'}
+ {' '}
+ the workflow
+ {' '}
+ {confirmModal.workflow?.name}
+ ?
+
+
+
+
+ )
+}
+
+export default AiReviewWorkflowsPage
diff --git a/src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.module.scss b/src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.module.scss
new file mode 100644
index 000000000..e984792c5
--- /dev/null
+++ b/src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.module.scss
@@ -0,0 +1,180 @@
+@import '@libs/ui/styles/includes';
+
+.container {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-6;
+}
+
+.section {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-3;
+}
+
+.sectionTitle {
+ font-size: 14px;
+ font-weight: 700;
+ color: $black-100;
+ margin: 0;
+ padding-bottom: $sp-2;
+ border-bottom: 1px solid $black-20;
+}
+
+.grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: $sp-3;
+
+ @include ltemd {
+ grid-template-columns: 1fr;
+ }
+}
+
+.field {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-1;
+}
+
+.label {
+ font-size: 11px;
+ font-weight: 600;
+ text-transform: uppercase;
+ color: $black-60;
+}
+
+.value {
+ font-size: 14px;
+ color: $black-100;
+ word-break: break-word;
+}
+
+.link {
+ color: $link-blue-dark;
+ text-decoration: none;
+ font-size: 14px;
+
+ &:hover {
+ text-decoration: underline;
+ }
+}
+
+.descriptionField {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-2;
+ margin-top: $sp-3;
+}
+
+.descriptionValue {
+ font-size: 14px;
+ color: $black-100;
+ background-color: $black-5;
+ border-radius: $sp-2;
+ padding: $sp-4;
+ max-height: 300px;
+ overflow-y: auto;
+
+ a {
+ color: $link-blue-dark;
+ text-decoration: none;
+ font-size: 14px;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+
+ // Markdown normalization
+ h1, h2, h3, h4, h5, h6 {
+ margin: $sp-3 0 $sp-2;
+ font-weight: 700;
+
+ &:first-child {
+ margin-top: 0;
+ }
+ }
+
+ h1 { font-size: 18px; }
+ h2 { font-size: 16px; }
+ h3 { font-size: 15px; }
+ h4, h5, h6 { font-size: 14px; }
+
+ p {
+ margin: 0 0 $sp-2;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ ul, ol {
+ margin: 0 0 $sp-2;
+ padding-left: $sp-5;
+ }
+
+ li {
+ margin-bottom: $sp-1;
+ }
+
+ table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: $sp-2 0;
+ font-size: 13px;
+
+ th, td {
+ border: 1px solid $black-20;
+ padding: $sp-2;
+ text-align: left;
+ }
+
+ th {
+ background-color: $black-10;
+ font-weight: 600;
+ }
+ }
+
+ code {
+ background-color: $black-10;
+ padding: 2px $sp-1;
+ border-radius: 3px;
+ font-family: monospace;
+ font-size: 13px;
+ }
+
+ pre {
+ background-color: $black-10;
+ padding: $sp-3;
+ border-radius: $sp-1;
+ overflow-x: auto;
+ margin: $sp-2 0;
+
+ code {
+ background: none;
+ padding: 0;
+ }
+ }
+
+ blockquote {
+ border-left: 3px solid $black-40;
+ margin: $sp-2 0;
+ padding-left: $sp-3;
+ color: $black-80;
+ }
+
+ hr {
+ border: none;
+ border-top: 1px solid $black-20;
+ margin: $sp-3 0;
+ }
+
+ strong {
+ font-weight: 700;
+ }
+
+ em {
+ font-style: italic;
+ }
+}
diff --git a/src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.tsx b/src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.tsx
new file mode 100644
index 000000000..bc0bba7f8
--- /dev/null
+++ b/src/apps/admin/src/ai/review-workflows/WorkflowDetailsModal.tsx
@@ -0,0 +1,217 @@
+import { FC } from 'react'
+
+import { EnvironmentConfig } from '~/config'
+import { BaseModal, Button } from '~/libs/ui'
+import { MarkdownReview } from '~/apps/review/src/lib/components/MarkdownReview'
+
+import { AiWorkflow } from '../../lib/services/ai-workflows.service'
+
+import styles from './WorkflowDetailsModal.module.scss'
+
+interface SectionProps {
+ workflow: AiWorkflow
+}
+
+const GeneralSection: FC = (props: SectionProps) => (
+
+
General
+
+
+ ID
+ {props.workflow.id}
+
+
+ Name
+ {props.workflow.name}
+
+
+ Status
+
+ {props.workflow.disabled ? 'Inactive' : 'Active'}
+
+
+
+
+ Git Workflow ID
+ {props.workflow.gitWorkflowId || 'N/A'}
+
+
+ Git Owner/Repo
+ {props.workflow.gitOwnerRepo || 'N/A'}
+
+
+
+
Description
+
+ {props.workflow.description ? (
+
+ ) : 'N/A'}
+
+
+
+)
+
+const LlmSection: FC = (props: SectionProps) => (
+
+
LLM Configuration
+
+
+ Provider
+ {props.workflow.llm?.provider?.name || 'N/A'}
+
+
+ Model
+ {props.workflow.llm?.name || 'N/A'}
+
+
+
+
+)
+
+const ScorecardSection: FC = (props: SectionProps) => (
+
+
Scorecard
+
+
+
+ Type
+ {props.workflow.scorecard?.type || 'N/A'}
+
+
+ Status
+ {props.workflow.scorecard?.status || 'N/A'}
+
+
+
+)
+
+interface MetadataSectionProps extends SectionProps {
+ createdAt: string
+ updatedAt: string
+}
+
+const MetadataSection: FC = (props: MetadataSectionProps) => (
+
+
Metadata
+
+
+ Created At
+ {props.createdAt}
+
+
+ Created By
+ {props.workflow.createdBy || 'N/A'}
+
+
+ Updated At
+ {props.updatedAt}
+
+
+ Updated By
+ {props.workflow.updatedBy || 'N/A'}
+
+
+
+)
+
+interface WorkflowDetailsContentProps {
+ workflow: AiWorkflow
+ open: boolean
+ onClose: () => void
+}
+
+const WorkflowDetailsContent: FC = (
+ props: WorkflowDetailsContentProps,
+) => {
+ const createdAtFormatted: string = props.workflow.createdAt
+ ? new Date(props.workflow.createdAt)
+ .toLocaleString()
+ : 'N/A'
+
+ const updatedAtFormatted: string = props.workflow.updatedAt
+ ? new Date(props.workflow.updatedAt)
+ .toLocaleString()
+ : 'N/A'
+
+ return (
+
+ )}
+ >
+
+
+
+
+
+
+
+ )
+}
+
+interface WorkflowDetailsModalProps {
+ workflow?: AiWorkflow
+ open: boolean
+ onClose: () => void
+}
+
+export const WorkflowDetailsModal: FC = (
+ props: WorkflowDetailsModalProps,
+) => {
+ if (!props.workflow) {
+ return <>>
+ }
+
+ return (
+
+ )
+}
diff --git a/src/apps/admin/src/ai/review-workflows/index.ts b/src/apps/admin/src/ai/review-workflows/index.ts
new file mode 100644
index 000000000..7a149d4ff
--- /dev/null
+++ b/src/apps/admin/src/ai/review-workflows/index.ts
@@ -0,0 +1 @@
+export { AiReviewWorkflowsPage } from './AiReviewWorkflowsPage'
diff --git a/src/apps/admin/src/config/routes.config.ts b/src/apps/admin/src/config/routes.config.ts
index a2ebf2790..7a25332f8 100644
--- a/src/apps/admin/src/config/routes.config.ts
+++ b/src/apps/admin/src/config/routes.config.ts
@@ -18,3 +18,5 @@ export const termsRouteId = 'terms'
export const defaultReviewersRouteId = 'default-reviewers'
export const platformRouteId = 'platform'
export const paymentsRouteId = 'payments'
+export const aiRouteId = 'ai'
+export const aiReviewWorkflowsRouteId = 'review-workflows'
diff --git a/src/apps/admin/src/lib/components/common/DropdownMenu/DropdownMenu.module.scss b/src/apps/admin/src/lib/components/common/DropdownMenu/DropdownMenu.module.scss
index 3291b7c1d..548a0d707 100644
--- a/src/apps/admin/src/lib/components/common/DropdownMenu/DropdownMenu.module.scss
+++ b/src/apps/admin/src/lib/components/common/DropdownMenu/DropdownMenu.module.scss
@@ -11,11 +11,13 @@
border-radius: 0 0 $sp-1 $sp-1;
padding: $sp-2 0;
max-height: 320px;
- overflow: auto;
+ overflow-y: auto;
+ overflow-x: hidden;
+ min-width: max-content;
:global {
ul > li {
text-align: left;
-
+ white-space: nowrap;
font-weight: normal;
color: $black-100;
padding: $sp-2 $sp-4;
diff --git a/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts b/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts
index 1aa72a376..55aa8a735 100644
--- a/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts
+++ b/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts
@@ -3,6 +3,8 @@ import _ from 'lodash'
import { TabsNavItem } from '~/libs/ui'
import { isAdministrator } from '~/apps/admin/src/lib/utils/access'
import {
+ aiReviewWorkflowsRouteId,
+ aiRouteId,
billingAccountRouteId,
defaultReviewersRouteId,
gamificationAdminRouteId,
@@ -83,6 +85,16 @@ export const SystemAdminTabsConfig: TabsNavItem[] = [
id: paymentsRouteId,
title: 'Payments',
},
+ {
+ children: [
+ {
+ id: `${aiRouteId}/${aiReviewWorkflowsRouteId}`,
+ title: 'AI Review Workflows',
+ },
+ ],
+ id: aiRouteId,
+ title: 'AI',
+ },
]
/**
diff --git a/src/apps/admin/src/lib/services/ai-workflows.service.ts b/src/apps/admin/src/lib/services/ai-workflows.service.ts
index b960cf7cb..200006844 100644
--- a/src/apps/admin/src/lib/services/ai-workflows.service.ts
+++ b/src/apps/admin/src/lib/services/ai-workflows.service.ts
@@ -1,12 +1,73 @@
import { EnvironmentConfig } from '~/config'
-import { xhrGetAsync } from '~/libs/core'
+import { xhrGetAsync, xhrPatchAsync } from '~/libs/core'
+
+export interface LlmProvider {
+ id: string;
+ name: string;
+ createdAt: string;
+ createdBy: string;
+}
+
+export interface Llm {
+ id: string;
+ providerId: string;
+ name: string;
+ description: string;
+ icon: string;
+ url: string;
+ createdAt: string;
+ createdBy: string;
+ provider: LlmProvider;
+}
+
+export interface Scorecard {
+ id: string;
+ legacyId: string;
+ status: string;
+ type: string;
+ challengeTrack: string;
+ challengeType: string;
+ name: string;
+ version: string;
+ minScore: number;
+ minimumPassingScore: number;
+ maxScore: number;
+ createdAt: string;
+ createdBy: string;
+ updatedAt: string;
+ updatedBy: string;
+}
export interface AiWorkflow {
id: string;
name: string;
+ llmId: string;
+ description: string;
+ defUrl: string;
+ gitWorkflowId: string;
+ gitOwnerRepo: string;
+ scorecardId: string;
+ disabled: boolean;
+ createdAt: string;
+ createdBy: string;
+ updatedAt: string;
+ updatedBy: string;
+ llm: Llm;
+ scorecard: Scorecard;
}
export async function getAiWorkflows(): Promise {
const response = await xhrGetAsync(`${EnvironmentConfig.API.V6}/workflows`)
return response
}
+
+export async function updateAiWorkflow(
+ id: string,
+ data: Partial>,
+): Promise {
+ const response = await xhrPatchAsync>, AiWorkflow>(
+ `${EnvironmentConfig.API.V6}/workflows/${id}`,
+ data,
+ )
+ return response
+}
diff --git a/yarn.lock b/yarn.lock
index cfdce4785..6c45456e0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13,12 +13,11 @@
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
"@apideck/better-ajv-errors@^0.3.1":
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097"
- integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.7.tgz#89238f689d81a644139a47e0ebc2e236bca1ff2c"
+ integrity sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==
dependencies:
- json-schema "^0.4.0"
- jsonpointer "^5.0.0"
+ jsonpointer "^5.0.1"
leven "^3.1.0"
"@aw-web-design/x-default-browser@1.4.126":
@@ -28,34 +27,34 @@
dependencies:
default-browser-id "3.0.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.8.3":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
- integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0", "@babel/code-frame@^7.8.3":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c"
+ integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==
dependencies:
- "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.28.5"
js-tokens "^4.0.0"
picocolors "^1.1.1"
-"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f"
- integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==
+"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.3":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.3.tgz#e3f5347f0589596c91d227ccb6a541d37fb1307b"
+ integrity sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==
"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.18.9", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.28.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e"
- integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==
- dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.5"
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-module-transforms" "^7.28.3"
- "@babel/helpers" "^7.28.4"
- "@babel/parser" "^7.28.5"
- "@babel/template" "^7.27.2"
- "@babel/traverse" "^7.28.5"
- "@babel/types" "^7.28.5"
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322"
+ integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==
+ dependencies:
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helpers" "^7.28.6"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
+ "@babel/types" "^7.29.0"
"@jridgewell/remapping" "^2.3.5"
convert-source-map "^2.0.0"
debug "^4.1.0"
@@ -64,21 +63,21 @@
semver "^6.3.1"
"@babel/eslint-parser@^7.16.3":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz#0b8883a4a1c2cbed7b3cd9d7765d80e8f480b9ae"
- integrity sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz#6a294a4add732ebe7ded8a8d2792dd03dd81dc3f"
+ integrity sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.23.0", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298"
- integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==
+"@babel/generator@^7.23.0", "@babel/generator@^7.29.0", "@babel/generator@^7.7.2":
+ version "7.29.1"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50"
+ integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==
dependencies:
- "@babel/parser" "^7.28.5"
- "@babel/types" "^7.28.5"
+ "@babel/parser" "^7.29.0"
+ "@babel/types" "^7.29.0"
"@jridgewell/gen-mapping" "^0.3.12"
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
@@ -90,31 +89,31 @@
dependencies:
"@babel/types" "^7.27.3"
-"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d"
- integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==
+"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
+ integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
dependencies:
- "@babel/compat-data" "^7.27.2"
+ "@babel/compat-data" "^7.28.6"
"@babel/helper-validator-option" "^7.27.1"
browserslist "^4.24.0"
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3", "@babel/helper-create-class-features-plugin@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46"
- integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.28.6":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz#67328947d956f06fc7b48def269bf0489155fd42"
+ integrity sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
"@babel/helper-member-expression-to-functions" "^7.28.5"
"@babel/helper-optimise-call-expression" "^7.27.1"
- "@babel/helper-replace-supers" "^7.27.1"
+ "@babel/helper-replace-supers" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
- "@babel/traverse" "^7.28.5"
+ "@babel/traverse" "^7.29.0"
semver "^6.3.1"
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1":
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997"
integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==
@@ -123,23 +122,23 @@
regexpu-core "^6.3.1"
semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.6.5":
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753"
- integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==
+"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8":
+ version "0.6.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1"
+ integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==
dependencies:
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
- debug "^4.4.1"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ debug "^4.4.3"
lodash.debounce "^4.0.8"
- resolve "^1.22.10"
+ resolve "^1.22.11"
"@babel/helper-globals@^7.28.0":
version "7.28.0"
resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674"
integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
-"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5":
+"@babel/helper-member-expression-to-functions@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150"
integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==
@@ -147,22 +146,22 @@
"@babel/traverse" "^7.28.5"
"@babel/types" "^7.28.5"
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
- integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
+ integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
dependencies:
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6"
- integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==
+"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e"
+ integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
- "@babel/traverse" "^7.28.3"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-validator-identifier" "^7.28.5"
+ "@babel/traverse" "^7.28.6"
"@babel/helper-optimise-call-expression@^7.27.1":
version "7.27.1"
@@ -171,10 +170,10 @@
dependencies:
"@babel/types" "^7.27.1"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
- integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8"
+ integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==
"@babel/helper-remap-async-to-generator@^7.27.1":
version "7.27.1"
@@ -185,14 +184,14 @@
"@babel/helper-wrap-function" "^7.27.1"
"@babel/traverse" "^7.27.1"
-"@babel/helper-replace-supers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0"
- integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==
+"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44"
+ integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.27.1"
+ "@babel/helper-member-expression-to-functions" "^7.28.5"
"@babel/helper-optimise-call-expression" "^7.27.1"
- "@babel/traverse" "^7.27.1"
+ "@babel/traverse" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1":
version "7.27.1"
@@ -207,7 +206,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5":
+"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
@@ -218,28 +217,28 @@
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
"@babel/helper-wrap-function@^7.27.1":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz#fe4872092bc1438ffd0ce579e6f699609f9d0a7a"
- integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a"
+ integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==
dependencies:
- "@babel/template" "^7.27.2"
- "@babel/traverse" "^7.28.3"
- "@babel/types" "^7.28.2"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/helpers@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827"
- integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==
+"@babel/helpers@^7.28.6":
+ version "7.29.2"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49"
+ integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==
dependencies:
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.4"
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.29.0"
-"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08"
- integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==
+"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.3.tgz#116f70a77958307fceac27747573032f8a62f88e"
+ integrity sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==
dependencies:
- "@babel/types" "^7.28.5"
+ "@babel/types" "^7.29.0"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5":
version "7.28.5"
@@ -263,6 +262,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
+"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.3":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz#2e14f9335803d892ccb67ef487e23cf9726156fe"
+ integrity sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
+
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd"
@@ -272,13 +279,13 @@
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
"@babel/plugin-transform-optional-chaining" "^7.27.1"
-"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a"
- integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f"
+ integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/traverse" "^7.28.3"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
"@babel/plugin-proposal-class-properties@^7.16.0":
version "7.18.6"
@@ -289,13 +296,13 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-proposal-decorators@^7.16.4":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz#419c8acc31088e05a774344c021800f7ddc39bf0"
- integrity sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz#d159f26f78740e47bf3ef075882b155b2d54ca81"
+ integrity sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-syntax-decorators" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-syntax-decorators" "^7.28.6"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0":
version "7.18.6"
@@ -373,33 +380,33 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz#ee7dd9590aeebc05f9d4c8c0560007b05979a63d"
- integrity sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==
+"@babel/plugin-syntax-decorators@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz#8c3293a0fef033e4c786b35ce1e159fc1d676153"
+ integrity sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-flow@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz#6c83cf0d7d635b716827284b7ecd5aead9237662"
- integrity sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz#447559a225e66c4cd477a3ffb1a74d8c1fe25a62"
+ integrity sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-syntax-import-assertions@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd"
- integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==
+"@babel/plugin-syntax-import-assertions@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507"
+ integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07"
- integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==
+"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503"
+ integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-import-meta@^7.10.4":
version "7.10.4"
@@ -415,12 +422,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"
- integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6", "@babel/plugin-syntax-jsx@^7.7.2":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee"
+ integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
@@ -478,12 +485,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18"
- integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==
+"@babel/plugin-syntax-typescript@^7.28.6", "@babel/plugin-syntax-typescript@^7.7.2":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2"
+ integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
version "7.18.6"
@@ -500,22 +507,22 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-async-generator-functions@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2"
- integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==
+"@babel/plugin-transform-async-generator-functions@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f"
+ integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-remap-async-to-generator" "^7.27.1"
- "@babel/traverse" "^7.28.0"
+ "@babel/traverse" "^7.29.0"
-"@babel/plugin-transform-async-to-generator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7"
- integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==
+"@babel/plugin-transform-async-to-generator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77"
+ integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-remap-async-to-generator" "^7.27.1"
"@babel/plugin-transform-block-scoped-functions@^7.27.1":
@@ -525,50 +532,50 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-block-scoping@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6"
- integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==
+"@babel/plugin-transform-block-scoping@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99"
+ integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925"
- integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==
+"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72"
+ integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-class-static-block@^7.28.3":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852"
- integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==
+"@babel/plugin-transform-class-static-block@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70"
+ integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.28.3"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-classes@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c"
- integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==
+"@babel/plugin-transform-classes@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7"
+ integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
- "@babel/helper-compilation-targets" "^7.27.2"
+ "@babel/helper-compilation-targets" "^7.28.6"
"@babel/helper-globals" "^7.28.0"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/helper-replace-supers" "^7.27.1"
- "@babel/traverse" "^7.28.4"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/helper-replace-supers" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
-"@babel/plugin-transform-computed-properties@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa"
- integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==
+"@babel/plugin-transform-computed-properties@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2"
+ integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/template" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/template" "^7.28.6"
-"@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5":
+"@babel/plugin-transform-destructuring@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7"
integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==
@@ -576,13 +583,13 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/traverse" "^7.28.5"
-"@babel/plugin-transform-dotall-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d"
- integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==
+"@babel/plugin-transform-dotall-regex@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61"
+ integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-duplicate-keys@^7.27.1":
version "7.27.1"
@@ -591,13 +598,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec"
- integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==
+"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1"
+ integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-dynamic-import@^7.27.1":
version "7.27.1"
@@ -606,20 +613,20 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-explicit-resource-management@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a"
- integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==
+"@babel/plugin-transform-explicit-resource-management@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7"
+ integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-transform-destructuring" "^7.28.0"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-transform-destructuring" "^7.28.5"
-"@babel/plugin-transform-exponentiation-operator@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe"
- integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==
+"@babel/plugin-transform-exponentiation-operator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091"
+ integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-export-namespace-from@^7.27.1":
version "7.27.1"
@@ -653,12 +660,12 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/traverse" "^7.27.1"
-"@babel/plugin-transform-json-strings@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c"
- integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==
+"@babel/plugin-transform-json-strings@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038"
+ integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-literals@^7.27.1":
version "7.27.1"
@@ -667,12 +674,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-logical-assignment-operators@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e"
- integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==
+"@babel/plugin-transform-logical-assignment-operators@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605"
+ integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-member-expression-literals@^7.27.1":
version "7.27.1"
@@ -689,23 +696,23 @@
"@babel/helper-module-transforms" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832"
- integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==
+"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1"
+ integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==
dependencies:
- "@babel/helper-module-transforms" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-modules-systemjs@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2"
- integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==
+"@babel/plugin-transform-modules-systemjs@^7.29.4":
+ version "7.29.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz#f621105da99919c15cf4bde6fcc7346ef95e7b20"
+ integrity sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==
dependencies:
- "@babel/helper-module-transforms" "^7.28.3"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-validator-identifier" "^7.28.5"
- "@babel/traverse" "^7.28.5"
+ "@babel/traverse" "^7.29.0"
"@babel/plugin-transform-modules-umd@^7.27.1":
version "7.27.1"
@@ -715,13 +722,13 @@
"@babel/helper-module-transforms" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1"
- integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a"
+ integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-new-target@^7.27.1":
version "7.27.1"
@@ -730,30 +737,30 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d"
- integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==
+"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757"
+ integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-numeric-separator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6"
- integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==
+"@babel/plugin-transform-numeric-separator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f"
+ integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-object-rest-spread@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d"
- integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==
+"@babel/plugin-transform-object-rest-spread@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7"
+ integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==
dependencies:
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-transform-destructuring" "^7.28.0"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-transform-destructuring" "^7.28.5"
"@babel/plugin-transform-parameters" "^7.27.7"
- "@babel/traverse" "^7.28.4"
+ "@babel/traverse" "^7.28.6"
"@babel/plugin-transform-object-super@^7.27.1":
version "7.27.1"
@@ -763,19 +770,19 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/helper-replace-supers" "^7.27.1"
-"@babel/plugin-transform-optional-catch-binding@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c"
- integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==
+"@babel/plugin-transform-optional-catch-binding@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c"
+ integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26"
- integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==
+"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd"
+ integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
"@babel/plugin-transform-parameters@^7.27.7":
@@ -785,22 +792,22 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af"
- integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==
+"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411"
+ integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-private-property-in-object@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11"
- integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==
+"@babel/plugin-transform-private-property-in-object@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811"
+ integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.27.1"
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-annotate-as-pure" "^7.27.3"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-property-literals@^7.27.1":
version "7.27.1"
@@ -831,15 +838,15 @@
"@babel/plugin-transform-react-jsx" "^7.27.1"
"@babel/plugin-transform-react-jsx@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0"
- integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz#f51cb70a90b9529fbb71ee1f75ea27b7078eed62"
+ integrity sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.27.1"
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-syntax-jsx" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/helper-annotate-as-pure" "^7.27.3"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-syntax-jsx" "^7.28.6"
+ "@babel/types" "^7.28.6"
"@babel/plugin-transform-react-pure-annotations@^7.27.1":
version "7.27.1"
@@ -849,20 +856,20 @@
"@babel/helper-annotate-as-pure" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-regenerator@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51"
- integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==
+"@babel/plugin-transform-regenerator@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b"
+ integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-regexp-modifiers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09"
- integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==
+"@babel/plugin-transform-regexp-modifiers@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b"
+ integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-reserved-words@^7.27.1":
version "7.27.1"
@@ -872,12 +879,12 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-runtime@^7.16.4", "@babel/plugin-transform-runtime@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz#ae3e21fbefe2831ebac04dfa6b463691696afe17"
- integrity sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz#a5fded13cc656700804bfd6e5ebd7fffd5266803"
+ integrity sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
babel-plugin-polyfill-corejs2 "^0.4.14"
babel-plugin-polyfill-corejs3 "^0.13.0"
babel-plugin-polyfill-regenerator "^0.6.5"
@@ -890,12 +897,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-spread@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08"
- integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==
+"@babel/plugin-transform-spread@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6"
+ integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
"@babel/plugin-transform-sticky-regex@^7.27.1":
@@ -920,15 +927,15 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-typescript@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz#441c5f9a4a1315039516c6c612fc66d5f4594e72"
- integrity sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz#1e93d96da8adbefdfdade1d4956f73afa201a158"
+ integrity sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
- "@babel/helper-create-class-features-plugin" "^7.28.5"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
- "@babel/plugin-syntax-typescript" "^7.27.1"
+ "@babel/plugin-syntax-typescript" "^7.28.6"
"@babel/plugin-transform-unicode-escapes@^7.27.1":
version "7.27.1"
@@ -937,13 +944,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-unicode-property-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956"
- integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==
+"@babel/plugin-transform-unicode-property-regex@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821"
+ integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-unicode-regex@^7.27.1":
version "7.27.1"
@@ -953,88 +960,89 @@
"@babel/helper-create-regexp-features-plugin" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-unicode-sets-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1"
- integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==
+"@babel/plugin-transform-unicode-sets-regex@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e"
+ integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.23.2", "@babel/preset-env@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0"
- integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==
+ version "7.29.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.5.tgz#c48b7ed94582c8b685e21b8b42de8633ec289268"
+ integrity sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==
dependencies:
- "@babel/compat-data" "^7.28.5"
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/compat-data" "^7.29.3"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-validator-option" "^7.27.1"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5"
"@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1"
+ "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.3"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1"
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6"
"@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
- "@babel/plugin-syntax-import-assertions" "^7.27.1"
- "@babel/plugin-syntax-import-attributes" "^7.27.1"
+ "@babel/plugin-syntax-import-assertions" "^7.28.6"
+ "@babel/plugin-syntax-import-attributes" "^7.28.6"
"@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
"@babel/plugin-transform-arrow-functions" "^7.27.1"
- "@babel/plugin-transform-async-generator-functions" "^7.28.0"
- "@babel/plugin-transform-async-to-generator" "^7.27.1"
+ "@babel/plugin-transform-async-generator-functions" "^7.29.0"
+ "@babel/plugin-transform-async-to-generator" "^7.28.6"
"@babel/plugin-transform-block-scoped-functions" "^7.27.1"
- "@babel/plugin-transform-block-scoping" "^7.28.5"
- "@babel/plugin-transform-class-properties" "^7.27.1"
- "@babel/plugin-transform-class-static-block" "^7.28.3"
- "@babel/plugin-transform-classes" "^7.28.4"
- "@babel/plugin-transform-computed-properties" "^7.27.1"
+ "@babel/plugin-transform-block-scoping" "^7.28.6"
+ "@babel/plugin-transform-class-properties" "^7.28.6"
+ "@babel/plugin-transform-class-static-block" "^7.28.6"
+ "@babel/plugin-transform-classes" "^7.28.6"
+ "@babel/plugin-transform-computed-properties" "^7.28.6"
"@babel/plugin-transform-destructuring" "^7.28.5"
- "@babel/plugin-transform-dotall-regex" "^7.27.1"
+ "@babel/plugin-transform-dotall-regex" "^7.28.6"
"@babel/plugin-transform-duplicate-keys" "^7.27.1"
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1"
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0"
"@babel/plugin-transform-dynamic-import" "^7.27.1"
- "@babel/plugin-transform-explicit-resource-management" "^7.28.0"
- "@babel/plugin-transform-exponentiation-operator" "^7.28.5"
+ "@babel/plugin-transform-explicit-resource-management" "^7.28.6"
+ "@babel/plugin-transform-exponentiation-operator" "^7.28.6"
"@babel/plugin-transform-export-namespace-from" "^7.27.1"
"@babel/plugin-transform-for-of" "^7.27.1"
"@babel/plugin-transform-function-name" "^7.27.1"
- "@babel/plugin-transform-json-strings" "^7.27.1"
+ "@babel/plugin-transform-json-strings" "^7.28.6"
"@babel/plugin-transform-literals" "^7.27.1"
- "@babel/plugin-transform-logical-assignment-operators" "^7.28.5"
+ "@babel/plugin-transform-logical-assignment-operators" "^7.28.6"
"@babel/plugin-transform-member-expression-literals" "^7.27.1"
"@babel/plugin-transform-modules-amd" "^7.27.1"
- "@babel/plugin-transform-modules-commonjs" "^7.27.1"
- "@babel/plugin-transform-modules-systemjs" "^7.28.5"
+ "@babel/plugin-transform-modules-commonjs" "^7.28.6"
+ "@babel/plugin-transform-modules-systemjs" "^7.29.4"
"@babel/plugin-transform-modules-umd" "^7.27.1"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0"
"@babel/plugin-transform-new-target" "^7.27.1"
- "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1"
- "@babel/plugin-transform-numeric-separator" "^7.27.1"
- "@babel/plugin-transform-object-rest-spread" "^7.28.4"
+ "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6"
+ "@babel/plugin-transform-numeric-separator" "^7.28.6"
+ "@babel/plugin-transform-object-rest-spread" "^7.28.6"
"@babel/plugin-transform-object-super" "^7.27.1"
- "@babel/plugin-transform-optional-catch-binding" "^7.27.1"
- "@babel/plugin-transform-optional-chaining" "^7.28.5"
+ "@babel/plugin-transform-optional-catch-binding" "^7.28.6"
+ "@babel/plugin-transform-optional-chaining" "^7.28.6"
"@babel/plugin-transform-parameters" "^7.27.7"
- "@babel/plugin-transform-private-methods" "^7.27.1"
- "@babel/plugin-transform-private-property-in-object" "^7.27.1"
+ "@babel/plugin-transform-private-methods" "^7.28.6"
+ "@babel/plugin-transform-private-property-in-object" "^7.28.6"
"@babel/plugin-transform-property-literals" "^7.27.1"
- "@babel/plugin-transform-regenerator" "^7.28.4"
- "@babel/plugin-transform-regexp-modifiers" "^7.27.1"
+ "@babel/plugin-transform-regenerator" "^7.29.0"
+ "@babel/plugin-transform-regexp-modifiers" "^7.28.6"
"@babel/plugin-transform-reserved-words" "^7.27.1"
"@babel/plugin-transform-shorthand-properties" "^7.27.1"
- "@babel/plugin-transform-spread" "^7.27.1"
+ "@babel/plugin-transform-spread" "^7.28.6"
"@babel/plugin-transform-sticky-regex" "^7.27.1"
"@babel/plugin-transform-template-literals" "^7.27.1"
"@babel/plugin-transform-typeof-symbol" "^7.27.1"
"@babel/plugin-transform-unicode-escapes" "^7.27.1"
- "@babel/plugin-transform-unicode-property-regex" "^7.27.1"
+ "@babel/plugin-transform-unicode-property-regex" "^7.28.6"
"@babel/plugin-transform-unicode-regex" "^7.27.1"
- "@babel/plugin-transform-unicode-sets-regex" "^7.27.1"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.28.6"
"@babel/preset-modules" "0.1.6-no-external-plugins"
- babel-plugin-polyfill-corejs2 "^0.4.14"
- babel-plugin-polyfill-corejs3 "^0.13.0"
- babel-plugin-polyfill-regenerator "^0.6.5"
- core-js-compat "^3.43.0"
+ babel-plugin-polyfill-corejs2 "^0.4.15"
+ babel-plugin-polyfill-corejs3 "^0.14.0"
+ babel-plugin-polyfill-regenerator "^0.6.6"
+ core-js-compat "^3.48.0"
semver "^6.3.1"
"@babel/preset-flow@^7.22.15":
@@ -1079,9 +1087,9 @@
"@babel/plugin-transform-typescript" "^7.28.5"
"@babel/register@^7.22.15":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.28.3.tgz#abd8a3753480c799bdaf9c9092d6745d16e052c2"
- integrity sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.29.3.tgz#726233ed488d52bb67aa8fd0dc5cdf19d10a2584"
+ integrity sha512-F6C1KpIdoImKQfsD6HSxZ+mS4YY/2Q+JsqrmTC5ApVkTR2rG+nnbpjhWwzA5bDNu8mJjB3AryqDaWFLd4gCbJQ==
dependencies:
clone-deep "^4.0.1"
find-cache-dir "^2.0.0"
@@ -1089,42 +1097,37 @@
pirates "^4.0.6"
source-map-support "^0.5.16"
-"@babel/runtime@^7.10.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.26.7", "@babel/runtime@^7.28.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326"
- integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==
+"@babel/runtime@^7.10.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.26.7", "@babel/runtime@^7.28.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+ version "7.29.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e"
+ integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==
-"@babel/runtime@^7.18.6":
+"@babel/template@^7.28.6", "@babel/template@^7.3.3":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b"
- integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==
-
-"@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
- integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57"
+ integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==
dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/parser" "^7.27.2"
- "@babel/types" "^7.27.1"
+ "@babel/code-frame" "^7.28.6"
+ "@babel/parser" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b"
- integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a"
+ integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==
dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.5"
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
"@babel/helper-globals" "^7.28.0"
- "@babel/parser" "^7.28.5"
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.5"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.29.0"
debug "^4.3.1"
-"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b"
- integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==
+"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
+ integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.28.5"
@@ -1151,10 +1154,15 @@
resolved "https://registry.yarnpkg.com/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz#c543c61d15885e19506f068618a4d6427a5bf817"
integrity sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ==
+"@borewit/text-codec@^0.2.1":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.2.2.tgz#75025f735c0983b3a871668804a57387e3649375"
+ integrity sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==
+
"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.20.1":
- version "6.20.1"
- resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz#4cfbc8b2e1e25f890ec34a081037e58b4e44143e"
- integrity sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==
+ version "6.20.2"
+ resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.20.2.tgz#36200d33f3e403ef4f76cf67b4cc7ec560e61c7b"
+ integrity sha512-G5FPkgIiLjOgZMjqVjvuKQ1rGPtHogLldJr33eFJdVLtmwY+giGrlv/ewljLz6b9BSQLkjxuwBc6g6omDM+YxQ==
dependencies:
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.0.0"
@@ -1180,9 +1188,9 @@
"@lezer/java" "^1.0.0"
"@codemirror/language@^6.0.0", "@codemirror/language@^6.12.2":
- version "6.12.2"
- resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.2.tgz#7db5a46757411cf251e8f450474c05710c27d42c"
- integrity sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==
+ version "6.12.3"
+ resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.3.tgz#0b220182973a4c19850b29f7dd82aec1bbae3d7e"
+ integrity sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.23.0"
@@ -1192,18 +1200,18 @@
style-mod "^4.0.0"
"@codemirror/lint@^6.0.0", "@codemirror/lint@^6.9.5":
- version "6.9.5"
- resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.5.tgz#c7da006f3335a33014799a7375c82df558e89f90"
- integrity sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA==
+ version "6.9.6"
+ resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.6.tgz#eae25d5dfac28595521a2b38ebad223f14b7b6d1"
+ integrity sha512-6Kp7r6XfCi/D/5sdXieMfg9pJU1bUEx96WITuLU6ESaKizCz0QHFMjY/TaFSbigDdEAIgi93itLBIUETP4oK+A==
dependencies:
"@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.35.0"
+ "@codemirror/view" "^6.42.0"
crelt "^1.0.5"
"@codemirror/search@^6.0.0", "@codemirror/search@^6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.6.0.tgz#3b83a1e35391e1575a83a3b485e3f95263ddaa0b"
- integrity sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.7.0.tgz#c6bea0ab0e882395d03a760b1a7d3959b1f3a4ac"
+ integrity sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.37.0"
@@ -1226,10 +1234,10 @@
"@codemirror/view" "^6.0.0"
"@lezer/highlight" "^1.0.0"
-"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.37.0", "@codemirror/view@^6.40.0":
- version "6.40.0"
- resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.40.0.tgz#97198fd717ebf471ef594a5bd557a9f2d1d4d165"
- integrity sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg==
+"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.37.0", "@codemirror/view@^6.40.0", "@codemirror/view@^6.42.0":
+ version "6.43.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.43.0.tgz#a577da65f1d5d8f7cbf08e14849284c12f38365a"
+ integrity sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==
dependencies:
"@codemirror/state" "^6.6.0"
crelt "^1.0.6"
@@ -1404,24 +1412,24 @@
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
"@emnapi/core@^1.4.3":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.7.1.tgz#3a79a02dbc84f45884a1806ebb98e5746bdfaac4"
- integrity sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467"
+ integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==
dependencies:
- "@emnapi/wasi-threads" "1.1.0"
+ "@emnapi/wasi-threads" "1.2.1"
tslib "^2.4.0"
"@emnapi/runtime@^1.4.3":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.7.1.tgz#a73784e23f5d57287369c808197288b52276b791"
- integrity sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c"
+ integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==
dependencies:
tslib "^2.4.0"
-"@emnapi/wasi-threads@1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf"
- integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==
+"@emnapi/wasi-threads@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548"
+ integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==
dependencies:
tslib "^2.4.0"
@@ -1646,9 +1654,9 @@
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0":
- version "4.9.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3"
- integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595"
+ integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==
dependencies:
eslint-visitor-keys "^3.4.3"
@@ -1687,32 +1695,32 @@
resolved "https://registry.yarnpkg.com/@filestack/loader/-/loader-1.0.9.tgz#eaab7e6536a41c8fd1e918ba064e24fd7a12bb32"
integrity sha512-zvXbZSgeybT1p3ds5NZ5GQYPVnKacgb2YGWe7psdPs/JE1v3SL1j2SXYaHA/f/Qwc8Y1fjzz53maKP0vwDHrvA==
-"@floating-ui/core@^1.7.3":
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7"
- integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==
+"@floating-ui/core@^1.7.5":
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622"
+ integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==
dependencies:
- "@floating-ui/utils" "^0.2.10"
+ "@floating-ui/utils" "^0.2.11"
-"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.6.1", "@floating-ui/dom@^1.7.4":
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.4.tgz#ee667549998745c9c3e3e84683b909c31d6c9a77"
- integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==
+"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.6.1", "@floating-ui/dom@^1.7.6":
+ version "1.7.6"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf"
+ integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==
dependencies:
- "@floating-ui/core" "^1.7.3"
- "@floating-ui/utils" "^0.2.10"
+ "@floating-ui/core" "^1.7.5"
+ "@floating-ui/utils" "^0.2.11"
"@floating-ui/react-dom@^2.0.0":
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.6.tgz#189f681043c1400561f62972f461b93f01bf2231"
- integrity sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.8.tgz#5fb5a20d10aafb9505f38c24f38d00c8e1598893"
+ integrity sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==
dependencies:
- "@floating-ui/dom" "^1.7.4"
+ "@floating-ui/dom" "^1.7.6"
-"@floating-ui/utils@^0.2.10":
- version "0.2.10"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c"
- integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
+"@floating-ui/utils@^0.2.11":
+ version "0.2.11"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f"
+ integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==
"@hapi/address@^5.1.1":
version "5.1.1"
@@ -1737,9 +1745,9 @@
integrity sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==
"@hapi/tlds@^1.1.1":
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/@hapi/tlds/-/tlds-1.1.4.tgz#df4a7b59082b54ba4f3b7b38f781e2ac3cbc359a"
- integrity sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/@hapi/tlds/-/tlds-1.1.6.tgz#c98ed89ca76aa030352d6d7102d0f250aed89cfb"
+ integrity sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==
"@hapi/topo@^6.0.2":
version "6.0.2"
@@ -1795,18 +1803,6 @@
resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==
-"@isaacs/balanced-match@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29"
- integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
-
-"@isaacs/brace-expansion@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3"
- integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
- dependencies:
- "@isaacs/balanced-match" "^4.0.1"
-
"@isaacs/cliui@^8.0.2":
version "8.0.2"
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
@@ -1831,9 +1827,9 @@
resolve-from "^5.0.0"
"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3":
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
- integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.6.tgz#8dc9afa2ac1506cb1a58f89940f1c124446c8df3"
+ integrity sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==
"@jackwilsdon/craco-use-babelrc@1.0.0":
version "1.0.0"
@@ -1946,10 +1942,10 @@
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/diff-sequences@30.0.1":
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be"
- integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==
+"@jest/diff-sequences@30.4.0":
+ version "30.4.0"
+ resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz#8be2d260e6241d6cddddd102c304fe13b4fc8e3e"
+ integrity sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==
"@jest/environment@^27.5.1":
version "27.5.1"
@@ -1971,10 +1967,10 @@
"@types/node" "*"
jest-mock "^29.7.0"
-"@jest/expect-utils@30.2.0":
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.2.0.tgz#4f95413d4748454fdb17404bf1141827d15e6011"
- integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==
+"@jest/expect-utils@30.4.1":
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.4.1.tgz#e0c7436d52b08610de9027841912dc3734ae80b2"
+ integrity sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==
dependencies:
"@jest/get-type" "30.1.0"
@@ -2041,13 +2037,13 @@
"@jest/types" "^29.6.3"
jest-mock "^29.7.0"
-"@jest/pattern@30.0.1":
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f"
- integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==
+"@jest/pattern@30.4.0":
+ version "30.4.0"
+ resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.4.0.tgz#fcb519eeacc25caa3768f787595a27afa15302ae"
+ integrity sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==
dependencies:
"@types/node" "*"
- jest-regex-util "30.0.1"
+ jest-regex-util "30.4.0"
"@jest/reporters@^27.5.1":
version "27.5.1"
@@ -2110,10 +2106,10 @@
strip-ansi "^6.0.0"
v8-to-istanbul "^9.0.1"
-"@jest/schemas@30.0.5":
- version "30.0.5"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473"
- integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==
+"@jest/schemas@30.4.1":
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.4.1.tgz#c3703fdd71357e2c83aa59bd38469e60a11529c6"
+ integrity sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==
dependencies:
"@sinclair/typebox" "^0.34.0"
@@ -2241,13 +2237,13 @@
slash "^3.0.0"
write-file-atomic "^4.0.2"
-"@jest/types@30.2.0":
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.2.0.tgz#1c678a7924b8f59eafd4c77d56b6d0ba976d62b8"
- integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==
+"@jest/types@30.4.1":
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.4.1.tgz#f79b647a85cb2ff4a90cc55984b31dae820db1f7"
+ integrity sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==
dependencies:
- "@jest/pattern" "30.0.1"
- "@jest/schemas" "30.0.5"
+ "@jest/pattern" "30.4.0"
+ "@jest/schemas" "30.4.1"
"@types/istanbul-lib-coverage" "^2.0.6"
"@types/istanbul-reports" "^3.0.4"
"@types/node" "*"
@@ -2350,9 +2346,9 @@
integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==
"@lezer/common@^1.0.0", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.3.0", "@lezer/common@^1.5.0":
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.1.tgz#6e8c114ff5d36a41148e146a253734d3bb8807d3"
- integrity sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.2.tgz#d6840db13779e3f1b42e70c9a97c4086d12fae22"
+ integrity sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==
"@lezer/highlight@^1.0.0":
version "1.2.3"
@@ -2371,9 +2367,9 @@
"@lezer/lr" "^1.0.0"
"@lezer/lr@^1.0.0":
- version "1.4.8"
- resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.8.tgz#333de9bc9346057323ff09beb4cda47ccc38a498"
- integrity sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==
+ version "1.4.10"
+ resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.10.tgz#b3acc36e5ad049b74ddb7719594e7e74d9161ff5"
+ integrity sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==
dependencies:
"@lezer/common" "^1.0.0"
@@ -2415,6 +2411,11 @@
dependencies:
eslint-scope "5.1.1"
+"@nodable/entities@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2"
+ integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -2441,94 +2442,94 @@
resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
-"@parcel/watcher-android-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
- integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
-
-"@parcel/watcher-darwin-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
- integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
-
-"@parcel/watcher-darwin-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8"
- integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
-
-"@parcel/watcher-freebsd-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
- integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
-
-"@parcel/watcher-linux-arm-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
- integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
-
-"@parcel/watcher-linux-arm-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
- integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
-
-"@parcel/watcher-linux-arm64-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
- integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
-
-"@parcel/watcher-linux-arm64-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
- integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
-
-"@parcel/watcher-linux-x64-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
- integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
-
-"@parcel/watcher-linux-x64-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
- integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
-
-"@parcel/watcher-win32-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
- integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
-
-"@parcel/watcher-win32-ia32@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
- integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
-
-"@parcel/watcher-win32-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
- integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
+"@parcel/watcher-android-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz#5f32e0dba356f4ac9a11068d2a5c134ca3ba6564"
+ integrity sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==
+
+"@parcel/watcher-darwin-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz#88d3e720b59b1eceffce98dac46d7c40e8be5e8e"
+ integrity sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==
+
+"@parcel/watcher-darwin-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz#bf05d76a78bc15974f15ec3671848698b0838063"
+ integrity sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==
+
+"@parcel/watcher-freebsd-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz#8bc26e9848e7303ac82922a5ae1b1ef1bdb48a53"
+ integrity sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==
+
+"@parcel/watcher-linux-arm-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz#1328fee1deb0c2d7865079ef53a2ba4cc2f8b40a"
+ integrity sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==
+
+"@parcel/watcher-linux-arm-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz#bad0f45cb3e2157746db8b9d22db6a125711f152"
+ integrity sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz#b75913fbd501d9523c5f35d420957bf7d0204809"
+ integrity sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==
+
+"@parcel/watcher-linux-arm64-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz#da5621a6a576070c8c0de60dea8b46dc9c3827d4"
+ integrity sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==
+
+"@parcel/watcher-linux-x64-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz#ce437accdc4b30f93a090b4a221fd95cd9b89639"
+ integrity sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==
+
+"@parcel/watcher-linux-x64-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz#02400c54b4a67efcc7e2327b249711920ac969e2"
+ integrity sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==
+
+"@parcel/watcher-win32-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz#caae3d3c7583ca0a7171e6bd142c34d20ea1691e"
+ integrity sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==
+
+"@parcel/watcher-win32-ia32@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz#9ac922550896dfe47bfc5ae3be4f1bcaf8155d6d"
+ integrity sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==
+
+"@parcel/watcher-win32-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz#73fdafba2e21c448f0e456bbe13178d8fe11739d"
+ integrity sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==
"@parcel/watcher@^2.4.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200"
- integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.6.tgz#3f932828c894f06d0ad9cfefade1756ecc6ef1f1"
+ integrity sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==
dependencies:
- detect-libc "^1.0.3"
+ detect-libc "^2.0.3"
is-glob "^4.0.3"
- micromatch "^4.0.5"
node-addon-api "^7.0.0"
+ picomatch "^4.0.3"
optionalDependencies:
- "@parcel/watcher-android-arm64" "2.5.1"
- "@parcel/watcher-darwin-arm64" "2.5.1"
- "@parcel/watcher-darwin-x64" "2.5.1"
- "@parcel/watcher-freebsd-x64" "2.5.1"
- "@parcel/watcher-linux-arm-glibc" "2.5.1"
- "@parcel/watcher-linux-arm-musl" "2.5.1"
- "@parcel/watcher-linux-arm64-glibc" "2.5.1"
- "@parcel/watcher-linux-arm64-musl" "2.5.1"
- "@parcel/watcher-linux-x64-glibc" "2.5.1"
- "@parcel/watcher-linux-x64-musl" "2.5.1"
- "@parcel/watcher-win32-arm64" "2.5.1"
- "@parcel/watcher-win32-ia32" "2.5.1"
- "@parcel/watcher-win32-x64" "2.5.1"
+ "@parcel/watcher-android-arm64" "2.5.6"
+ "@parcel/watcher-darwin-arm64" "2.5.6"
+ "@parcel/watcher-darwin-x64" "2.5.6"
+ "@parcel/watcher-freebsd-x64" "2.5.6"
+ "@parcel/watcher-linux-arm-glibc" "2.5.6"
+ "@parcel/watcher-linux-arm-musl" "2.5.6"
+ "@parcel/watcher-linux-arm64-glibc" "2.5.6"
+ "@parcel/watcher-linux-arm64-musl" "2.5.6"
+ "@parcel/watcher-linux-x64-glibc" "2.5.6"
+ "@parcel/watcher-linux-x64-musl" "2.5.6"
+ "@parcel/watcher-win32-arm64" "2.5.6"
+ "@parcel/watcher-win32-ia32" "2.5.6"
+ "@parcel/watcher-win32-x64" "2.5.6"
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
@@ -2919,10 +2920,10 @@
dependencies:
"@babel/runtime" "^7.13.10"
-"@remix-run/router@1.23.1":
- version "1.23.1"
- resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.1.tgz#0ce8857b024e24fc427585316383ad9d295b3a7f"
- integrity sha512-vDbaOzF7yT2Qs4vO6XV1MHcJv+3dgR1sT+l3B8xxOVhUC336prMvqrvsLL/9Dnw2xr6Qhz4J0dmS0llNAbnUmQ==
+"@remix-run/router@1.23.2":
+ version "1.23.2"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.2.tgz#156c4b481c0bee22a19f7924728a67120de06971"
+ integrity sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==
"@rollup/plugin-babel@^5.2.0":
version "5.3.1"
@@ -2967,55 +2968,55 @@
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
"@rushstack/eslint-patch@^1.1.0":
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.15.0.tgz#8184bcb37791e6d3c3c13a9bfbe4af263f66665f"
- integrity sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz#4f97581e114fc79f246cee3723a5c4edd3b62415"
+ integrity sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==
-"@sentry-internal/browser-utils@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz#d89bae423edd29c39f01285c8e2d59ce9289d9a6"
- integrity sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==
+"@sentry-internal/browser-utils@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.55.2.tgz#3463115ac048813d71565c6fa2a48e6d60f15e8b"
+ integrity sha512-GnKod+gL/Y+1FUM/RGV8q6le1CoyiGbT40MitEK7eVwWe+bfTRq1gN7ioupyHFMUg1RlQkDQ4/sENmio/uow5A==
dependencies:
- "@sentry/core" "8.55.0"
+ "@sentry/core" "8.55.2"
-"@sentry-internal/feedback@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.55.0.tgz#170b8e96a36ce6f71f53daad680f1a0c98381314"
- integrity sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==
+"@sentry-internal/feedback@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.55.2.tgz#16608bf305beb840b751f63473558cb57e9c9503"
+ integrity sha512-XQy//NWbL0mLLM5w8wNDWMNpXz39VUyW2397dUrH8++kR63WhUVAvTOtL0o0GMVadSAzl1b08oHP9zSUNFQwcg==
dependencies:
- "@sentry/core" "8.55.0"
+ "@sentry/core" "8.55.2"
-"@sentry-internal/replay-canvas@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz#e65430207a2f18e4a07c25c669ec758d11282aaf"
- integrity sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==
+"@sentry-internal/replay-canvas@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.55.2.tgz#66138ae5e31c8e77a72ceab12673bfd7ae99dd26"
+ integrity sha512-P/jGiuR7dRLG9IzD/463fLgiibyYceauav/9prRG0ZxJm1AtuO02OKball2Fs3bbzdzwHCTlcsUuL2ivDF4b5A==
dependencies:
- "@sentry-internal/replay" "8.55.0"
- "@sentry/core" "8.55.0"
+ "@sentry-internal/replay" "8.55.2"
+ "@sentry/core" "8.55.2"
-"@sentry-internal/replay@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.55.0.tgz#4c00b22cdf58cac5b3e537f8d4f675f2b021f475"
- integrity sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==
+"@sentry-internal/replay@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.55.2.tgz#c00cfa8117a6bad93f5522671049760e3780d0c8"
+ integrity sha512-+W43Z697EVe/OgpGW07B773sa8xO1UbpnW0Cr+E+3FMDb6ZbXlaBUoagPTUkkQPdwBe35SDh6r8y2M3EOPGbxg==
dependencies:
- "@sentry-internal/browser-utils" "8.55.0"
- "@sentry/core" "8.55.0"
+ "@sentry-internal/browser-utils" "8.55.2"
+ "@sentry/core" "8.55.2"
"@sentry/browser@8.x.x":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.55.0.tgz#9a489e2a54d29c65e6271b4ee594b43679cab7bd"
- integrity sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.55.2.tgz#95eff656e5a61f4a22605f88c03746c20c51cf47"
+ integrity sha512-xHuPIEKhx9zw5quWvv4YgZprnwoVMCfxIhmOIf6KJ9iizyUHeUDcKpLS59xERroqwX4RpvK+l/27AZu4zfZlzQ==
dependencies:
- "@sentry-internal/browser-utils" "8.55.0"
- "@sentry-internal/feedback" "8.55.0"
- "@sentry-internal/replay" "8.55.0"
- "@sentry-internal/replay-canvas" "8.55.0"
- "@sentry/core" "8.55.0"
+ "@sentry-internal/browser-utils" "8.55.2"
+ "@sentry-internal/feedback" "8.55.2"
+ "@sentry-internal/replay" "8.55.2"
+ "@sentry-internal/replay-canvas" "8.55.2"
+ "@sentry/core" "8.55.2"
-"@sentry/core@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.55.0.tgz#4964920229fcf649237ef13b1533dfc4b9f6b22e"
- integrity sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==
+"@sentry/core@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.55.2.tgz#1a841aefc9b96f7a8a05c30162fa6ebc7e1dc47a"
+ integrity sha512-YlEBwybUcOQ/KjMHDmof1vwweVnBtBxYlQp7DE3fOdtW4pqqdHWTnTntQs4VgYfxzjJYgtkd9LHlGtg8qy+JVQ==
"@sinclair/typebox@^0.24.1":
version "0.24.51"
@@ -3023,14 +3024,14 @@
integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
"@sinclair/typebox@^0.27.8":
- version "0.27.8"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
- integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
+ version "0.27.10"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6"
+ integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==
"@sinclair/typebox@^0.34.0":
- version "0.34.41"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.41.tgz#aa51a6c1946df2c5a11494a2cdb9318e026db16c"
- integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==
+ version "0.34.49"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.49.tgz#4f1369234f2ecf693866476c3b2e1b54d2a9d68e"
+ integrity sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==
"@sindresorhus/is@^4.0.0":
version "4.6.0"
@@ -3066,14 +3067,14 @@
"@sinonjs/commons" "^1.7.0"
"@sprig-technologies/sprig-browser@^2.39.0":
- version "2.39.0"
- resolved "https://registry.yarnpkg.com/@sprig-technologies/sprig-browser/-/sprig-browser-2.39.0.tgz#214b0bbdd63d3815b8443f4013829bca80d3a98d"
- integrity sha512-66mdsxc7DlkfWmBacTesvbaXMqgzJRR5B/tRpy2a7T0s5L8+ehAUj+SaivddtjGDClWD4Tf3rk6K7rV33U8PTA==
+ version "2.44.1"
+ resolved "https://registry.yarnpkg.com/@sprig-technologies/sprig-browser/-/sprig-browser-2.44.1.tgz#9bfa2ac58abe657990dd4486902ecbcde90e8b4a"
+ integrity sha512-bLj7uZn2yK/KZ9e7HwzplYndPcN+DGWZib5FGlZ6Zggygl8mfboky5vnZ4TqZXFTcwjjd/vBA1ywDahXyimoUA==
-"@standard-schema/spec@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c"
- integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==
+"@standard-schema/spec@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8"
+ integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==
"@standard-schema/utils@^0.3.0":
version "0.3.0"
@@ -3998,84 +3999,96 @@
"@svgr/plugin-svgo" "^5.5.0"
loader-utils "^2.0.0"
-"@swc/core-darwin-arm64@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.3.tgz#bd0bd3ab7730e3ffa64cf200c0ed7c572cbaba97"
- integrity sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==
-
-"@swc/core-darwin-x64@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.3.tgz#502b1e1c680df6b962265ca81a0c1a23e6ff070f"
- integrity sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==
-
-"@swc/core-linux-arm-gnueabihf@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.3.tgz#e32cc6a2e06a75060d6f598ba2ca6f96c5c0cc43"
- integrity sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==
-
-"@swc/core-linux-arm64-gnu@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.3.tgz#9b9861bc44059e393d4baf98b3cd3d6c4ea6f521"
- integrity sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==
-
-"@swc/core-linux-arm64-musl@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.3.tgz#f6388743e5a159018bd468e8f710940b2614384b"
- integrity sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==
-
-"@swc/core-linux-x64-gnu@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.3.tgz#15fea551c7a3aeb1bdc3ad5c652d73c9321ddba8"
- integrity sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==
-
-"@swc/core-linux-x64-musl@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.3.tgz#d3f17bab4ffcadbb47f135e6a14d6f3e401af289"
- integrity sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==
-
-"@swc/core-win32-arm64-msvc@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.3.tgz#9da386df7fed00b3473bcf4281ff3fcd14726d2c"
- integrity sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==
-
-"@swc/core-win32-ia32-msvc@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.3.tgz#c398d4f0f10ffec2151a79733ee1ce86a945a1ea"
- integrity sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==
-
-"@swc/core-win32-x64-msvc@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.3.tgz#715596b034a654c82b03ef734a9b44c29bcd3a68"
- integrity sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==
+"@swc/core-darwin-arm64@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.33.tgz#d84134fb80417d41128739f0b9014542e3ed9dd3"
+ integrity sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==
+
+"@swc/core-darwin-x64@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.33.tgz#0badb9834071f1c6005986571d4a96359c1d7cd0"
+ integrity sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==
+
+"@swc/core-linux-arm-gnueabihf@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.33.tgz#b7577a825b59d98b6a9a5c991d842046efe1c34a"
+ integrity sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==
+
+"@swc/core-linux-arm64-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.33.tgz#304c48321494a18c67b2913c273b08674ee70d8c"
+ integrity sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==
+
+"@swc/core-linux-arm64-musl@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.33.tgz#d116cbc04ccb4f4ee810da6bca79d4423605dbcd"
+ integrity sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==
+
+"@swc/core-linux-ppc64-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.33.tgz#f5354dba36db9414305bab344c817d57b8b457c2"
+ integrity sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==
+
+"@swc/core-linux-s390x-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.33.tgz#016df9f4c9d7fd65b85ca9c558c5aec341f06da0"
+ integrity sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==
+
+"@swc/core-linux-x64-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.33.tgz#49f36558ede072e71999aa37f123367daed2a662"
+ integrity sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==
+
+"@swc/core-linux-x64-musl@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.33.tgz#b096665f5cfeee2612325f301da5c1590b10d8f3"
+ integrity sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==
+
+"@swc/core-win32-arm64-msvc@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.33.tgz#f3101263a0dbaa173ec47638c9719d0b89838bd2"
+ integrity sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==
+
+"@swc/core-win32-ia32-msvc@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.33.tgz#eb981ef5613d42c9220559bdb0c8bc58cf6c3eb9"
+ integrity sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==
+
+"@swc/core-win32-x64-msvc@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.33.tgz#a2fed9956933027ceb368857bac4bb4ee203d47c"
+ integrity sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==
"@swc/core@^1.3.82":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.3.tgz#2d0a5c4ac4c180c3dbf2f6d5d958b9fcbaa9755f"
- integrity sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.33.tgz#2a6571c8aca961925f14beae52b3f43c18370fc6"
+ integrity sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==
dependencies:
"@swc/counter" "^0.1.3"
- "@swc/types" "^0.1.25"
+ "@swc/types" "^0.1.26"
optionalDependencies:
- "@swc/core-darwin-arm64" "1.15.3"
- "@swc/core-darwin-x64" "1.15.3"
- "@swc/core-linux-arm-gnueabihf" "1.15.3"
- "@swc/core-linux-arm64-gnu" "1.15.3"
- "@swc/core-linux-arm64-musl" "1.15.3"
- "@swc/core-linux-x64-gnu" "1.15.3"
- "@swc/core-linux-x64-musl" "1.15.3"
- "@swc/core-win32-arm64-msvc" "1.15.3"
- "@swc/core-win32-ia32-msvc" "1.15.3"
- "@swc/core-win32-x64-msvc" "1.15.3"
+ "@swc/core-darwin-arm64" "1.15.33"
+ "@swc/core-darwin-x64" "1.15.33"
+ "@swc/core-linux-arm-gnueabihf" "1.15.33"
+ "@swc/core-linux-arm64-gnu" "1.15.33"
+ "@swc/core-linux-arm64-musl" "1.15.33"
+ "@swc/core-linux-ppc64-gnu" "1.15.33"
+ "@swc/core-linux-s390x-gnu" "1.15.33"
+ "@swc/core-linux-x64-gnu" "1.15.33"
+ "@swc/core-linux-x64-musl" "1.15.33"
+ "@swc/core-win32-arm64-msvc" "1.15.33"
+ "@swc/core-win32-ia32-msvc" "1.15.33"
+ "@swc/core-win32-x64-msvc" "1.15.33"
"@swc/counter@^0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
-"@swc/types@^0.1.25":
- version "0.1.25"
- resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078"
- integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==
+"@swc/types@^0.1.26":
+ version "0.1.26"
+ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.26.tgz#2a976a1870caef1992316dda1464150ee36968b5"
+ integrity sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==
dependencies:
"@swc/counter" "^0.1.3"
@@ -4150,6 +4163,14 @@
dependencies:
prop-types "^15.6.2"
+"@tokenizer/inflate@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@tokenizer/inflate/-/inflate-0.4.1.tgz#fa6cdb8366151b3cc8426bf9755c1ea03a2fba08"
+ integrity sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==
+ dependencies:
+ debug "^4.4.3"
+ token-types "^6.1.1"
+
"@tokenizer/token@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
@@ -4160,11 +4181,6 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
-"@trysound/sax@0.2.0":
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
- integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
-
"@tsconfig/node10@^1.0.7":
version "1.0.12"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4"
@@ -4186,9 +4202,9 @@
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
"@tybys/wasm-util@^0.10.0":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414"
- integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==
+ version "0.10.2"
+ resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz#12b3a1b33db1f9cad4ddff1f604ab7dd00bf464e"
+ integrity sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==
dependencies:
tslib "^2.4.0"
@@ -4292,9 +4308,9 @@
"@types/node" "*"
"@types/debug@^4.0.0":
- version "4.1.12"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
- integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
+ version "4.1.13"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7"
+ integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==
dependencies:
"@types/ms" "*"
@@ -4365,9 +4381,9 @@
"@types/json-schema" "*"
"@types/estree@*", "@types/estree@^1.0.8":
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
- integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24"
+ integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==
"@types/estree@0.0.39":
version "0.0.39"
@@ -4380,9 +4396,9 @@
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz#74f47555b3d804b54cb7030e6f9aa0c7485cfc5b"
- integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa"
+ integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -4390,9 +4406,9 @@
"@types/send" "*"
"@types/express-serve-static-core@^4.17.33":
- version "4.19.7"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10"
- integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==
+ version "4.19.8"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f"
+ integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -4467,9 +4483,9 @@
integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==
"@types/http-cache-semantics@*":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
- integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3"
+ integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==
"@types/http-errors@*":
version "2.0.5"
@@ -4546,9 +4562,9 @@
integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==
"@types/lodash@^4.14.167", "@types/lodash@^4.17.21":
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.21.tgz#b806831543d696b14f8112db600ea9d3a1df6ea4"
- integrity sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==
+ version "4.17.24"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.24.tgz#4ae334fc62c0e915ca8ed8e35dcc6d4eeb29215f"
+ integrity sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==
"@types/markdown-it@^12.2.3":
version "12.2.3"
@@ -4618,11 +4634,11 @@
"@types/node" "*"
"@types/node@*":
- version "25.0.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.0.tgz#c0e0022c3c7b41635c49322e6b3a0279fffa7d62"
- integrity sha512-rl78HwuZlaDIUSeUKkmogkhebA+8K1Hy7tddZuJ3D0xV8pZSfsYGTsliGUol1JPzu9EKnTxPC4L1fiWouStRew==
+ version "25.8.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-25.8.0.tgz#d13033397d1c186876bed4c9b9d7f3f962097eb3"
+ integrity sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==
dependencies:
- undici-types "~7.16.0"
+ undici-types ">=7.24.0 <7.24.7"
"@types/node@^18.0.0", "@types/node@^18.19.130":
version "18.19.130"
@@ -4667,9 +4683,9 @@
integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==
"@types/qs@*", "@types/qs@^6.9.5":
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5"
- integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==
+ version "6.15.1"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.1.tgz#8606884272c63f0db96986bd3548650d8a9388bf"
+ integrity sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==
"@types/range-parser@*":
version "1.2.7"
@@ -4792,11 +4808,11 @@
integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
"@types/sanitize-html@^2.16.0":
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.16.0.tgz#860d72c1ba8a5d044946f37559cc359c0a13b24e"
- integrity sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==
+ version "2.16.1"
+ resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.16.1.tgz#27b9ac6cc29838f7a048bfec0113e8ad00918d0a"
+ integrity sha512-n9wjs8bCOTyN/ynwD8s/nTcTreIHB1vf31vhLMGqUPNHaweKC4/fAl4Dj+hUlCTKYgm4P3k83fmiFfzkZ6sgMA==
dependencies:
- htmlparser2 "^8.0.0"
+ htmlparser2 "^10.1"
"@types/semver@^7.3.12", "@types/semver@^7.3.4":
version "7.7.1"
@@ -5040,10 +5056,10 @@
"@typescript-eslint/types" "5.62.0"
eslint-visitor-keys "^3.3.0"
-"@uiw/codemirror-extensions-basic-setup@4.25.8":
- version "4.25.8"
- resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.8.tgz#a3848e6e8ea13cec56cfe698e39701d4210ac0f7"
- integrity sha512-9Rr+liiBmK4xzZHszL+twNRJApthqmITBwDP3emNTtTrkBFN4gHlqfp+nodKmoVt1+bUH1qQCtyqt+7dbDTHiw==
+"@uiw/codemirror-extensions-basic-setup@4.25.9":
+ version "4.25.9"
+ resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.9.tgz#67e584f437ea40eb2fbbc29a1b489d451c6164e2"
+ integrity sha512-QFAqr+pu6lDmNpAlecODcF49TlsrZ0bj15zPzfhiqSDl+Um3EsDLFLppixC7kFLn+rdDM2LTvVjn5CPvefpRgw==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
"@codemirror/commands" "^6.0.0"
@@ -5054,21 +5070,21 @@
"@codemirror/view" "^6.0.0"
"@uiw/react-codemirror@^4.25.8":
- version "4.25.8"
- resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.25.8.tgz#40e8ab9df1955052365520a785372d9097d5924b"
- integrity sha512-A0aLOuJZm2yJ+U9GlMFwxwFciztjd5LhcAG4SMqFxdD58wH+sCQXuY4UU5J2hqgS390qAlShtUgREvJPUonbuQ==
+ version "4.25.9"
+ resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.25.9.tgz#f0c1f7c9b28c696dcb339e074fe8aa02912214c8"
+ integrity sha512-HftqCBUYShAOH0pGi1CHP8vfm5L8fQ3+0j0VI6lQD6QpK+UBu3J7nxfEN5O/BXMilMNf9ZyFJRvRcuMMOLHMng==
dependencies:
"@babel/runtime" "^7.18.6"
"@codemirror/commands" "^6.1.0"
"@codemirror/state" "^6.1.1"
"@codemirror/theme-one-dark" "^6.0.0"
- "@uiw/codemirror-extensions-basic-setup" "4.25.8"
+ "@uiw/codemirror-extensions-basic-setup" "4.25.9"
codemirror "^6.0.0"
"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8"
- integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.1.tgz#0e8f34854df7966b09304a18e808b23997bb9fc1"
+ integrity sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==
"@unrs/resolver-binding-android-arm-eabi@1.11.1":
version "1.11.1"
@@ -5390,14 +5406,7 @@ abab@^2.0.3, abab@^2.0.5, abab@^2.0.6:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
-abort-controller@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
- integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
- dependencies:
- event-target-shim "^5.0.0"
-
-accepts@~1.3.4, accepts@~1.3.8:
+accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
@@ -5429,9 +5438,9 @@ acorn-walk@^7.1.1, acorn-walk@^7.2.0:
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1:
- version "8.3.4"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7"
- integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==
+ version "8.3.5"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496"
+ integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==
dependencies:
acorn "^8.11.0"
@@ -5440,10 +5449,10 @@ acorn@^7.1.1, acorn@^7.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.9.0:
- version "8.15.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
- integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
+acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.16.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.9.0:
+ version "8.16.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
+ integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
address@^1.0.1, address@^1.1.2:
version "1.2.2"
@@ -5505,20 +5514,20 @@ ajv-keywords@^5.1.0:
dependencies:
fast-deep-equal "^3.1.3"
-ajv@8.12.0:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ajv@8.18.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc"
+ integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==
dependencies:
- fast-deep-equal "^3.1.1"
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
- uri-js "^4.2.2"
ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.3:
- version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492"
+ integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
@@ -5526,9 +5535,9 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.3:
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0:
- version "8.17.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
- integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ version "8.20.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9"
+ integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==
dependencies:
fast-deep-equal "^3.1.3"
fast-uri "^3.0.1"
@@ -5581,7 +5590,7 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-ansi-regex@^6.0.1:
+ansi-regex@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1"
integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==
@@ -5895,14 +5904,13 @@ auto-css-modules-webpack-plugin@^1.1.1:
acorn-walk "^8.0.2"
autoprefixer@^10.4.12, autoprefixer@^10.4.13, autoprefixer@^10.4.22:
- version "10.4.22"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.22.tgz#90b27ab55ec0cf0684210d1f056f7d65dac55f16"
- integrity sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==
+ version "10.5.0"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.0.tgz#33d87e443430f020a0f85319d6ff1593cb291be9"
+ integrity sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==
dependencies:
- browserslist "^4.27.0"
- caniuse-lite "^1.0.30001754"
+ browserslist "^4.28.2"
+ caniuse-lite "^1.0.30001787"
fraction.js "^5.3.4"
- normalize-range "^0.1.2"
picocolors "^1.1.1"
postcss-value-parser "^4.2.0"
@@ -5914,17 +5922,18 @@ available-typed-arrays@^1.0.7:
possible-typed-array-names "^1.0.0"
axe-core@^4.10.0:
- version "4.11.0"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.0.tgz#16f74d6482e343ff263d4f4503829e9ee91a86b6"
- integrity sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==
+ version "4.11.4"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.4.tgz#5b535e381ff1e61ffdd615e5483d16186d3b46a5"
+ integrity sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==
-axios@*, axios@^1.13.2, axios@^1.15.0, axios@^1.7.4:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.0.tgz#0fcee91ef03d386514474904b27863b2c683bf4f"
- integrity sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==
+axios@*, axios@^1.13.5, axios@^1.15.0, axios@^1.7.4:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.16.1.tgz#517e29291d19d6e8cf919ff264f4fe157261ba12"
+ integrity sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==
dependencies:
- follow-redirects "^1.15.11"
+ follow-redirects "^1.16.0"
form-data "^4.0.5"
+ https-proxy-agent "^5.0.1"
proxy-from-env "^2.1.0"
axobject-query@^4.1.0:
@@ -6068,13 +6077,13 @@ babel-plugin-named-exports-order@^0.0.2:
resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09"
integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==
-babel-plugin-polyfill-corejs2@^0.4.14:
- version "0.4.14"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f"
- integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==
+babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15:
+ version "0.4.17"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91"
+ integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==
dependencies:
- "@babel/compat-data" "^7.27.7"
- "@babel/helper-define-polyfill-provider" "^0.6.5"
+ "@babel/compat-data" "^7.28.6"
+ "@babel/helper-define-polyfill-provider" "^0.6.8"
semver "^6.3.1"
babel-plugin-polyfill-corejs3@^0.13.0:
@@ -6085,12 +6094,20 @@ babel-plugin-polyfill-corejs3@^0.13.0:
"@babel/helper-define-polyfill-provider" "^0.6.5"
core-js-compat "^3.43.0"
-babel-plugin-polyfill-regenerator@^0.6.5:
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5"
- integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==
+babel-plugin-polyfill-corejs3@^0.14.0:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587"
+ integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.5"
+ "@babel/helper-define-polyfill-provider" "^0.6.8"
+ core-js-compat "^3.48.0"
+
+babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6:
+ version "0.6.8"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721"
+ integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.6.8"
babel-plugin-react-css-modules@^5.2.6:
version "5.2.6"
@@ -6196,6 +6213,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+balanced-match@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a"
+ integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
+
base64-arraybuffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
@@ -6206,10 +6228,10 @@ base64-js@^1.3.1:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-baseline-browser-mapping@^2.9.0:
- version "2.9.6"
- resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz#82de0f7ee5860df86d60daf0d9524ae7227eeee7"
- integrity sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==
+baseline-browser-mapping@^2.10.12:
+ version "2.10.30"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.30.tgz#58915c74388b05f3b3504026194ea9fa98f6e6b6"
+ integrity sha512-xjOFN16Ha1+Rz4nFYKqHU/LSB+gx/Vi3yQLX7r7sAW+Wa+8hhF2h4pvqTrTMc8+WcDBEunnUurr46Jvv0jk3Vg==
batch@0.6.1:
version "0.6.1"
@@ -6263,10 +6285,10 @@ bluebird@3.7.2, bluebird@^3.7.2:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-body-parser@~1.20.3:
- version "1.20.4"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f"
- integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==
+body-parser@~1.20.5:
+ version "1.20.5"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.5.tgz#303c8c34423d1d6fa799bc764e93c1e4dc6ebf64"
+ integrity sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==
dependencies:
bytes "~3.1.2"
content-type "~1.0.5"
@@ -6276,7 +6298,7 @@ body-parser@~1.20.3:
http-errors "~2.0.1"
iconv-lite "~0.4.24"
on-finished "~2.4.1"
- qs "~6.14.0"
+ qs "~6.15.1"
raw-body "~2.5.3"
type-is "~1.6.18"
unpipe "~1.0.0"
@@ -6321,20 +6343,27 @@ bplist-parser@^0.2.0:
big-integer "^1.6.44"
brace-expansion@^1.1.7:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
- integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.14.tgz#d9de602370d91347cd9ddad1224d4fd701eb348b"
+ integrity sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
-brace-expansion@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
- integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
+brace-expansion@^2.0.1, brace-expansion@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae"
+ integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==
dependencies:
balanced-match "^1.0.0"
+brace-expansion@^5.0.5:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.6.tgz#ec68fe0a641a29d8711579caf641d05bae1f2285"
+ integrity sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==
+ dependencies:
+ balanced-match "^4.0.2"
+
braces@^3.0.2, braces@^3.0.3, braces@~3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
@@ -6364,16 +6393,16 @@ browserify-zlib@^0.1.4:
dependencies:
pako "~0.2.0"
-browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0, browserslist@^4.28.0:
- version "4.28.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
- integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
+browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.2:
+ version "4.28.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2"
+ integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==
dependencies:
- baseline-browser-mapping "^2.9.0"
- caniuse-lite "^1.0.30001759"
- electron-to-chromium "^1.5.263"
- node-releases "^2.0.27"
- update-browserslist-db "^1.2.0"
+ baseline-browser-mapping "^2.10.12"
+ caniuse-lite "^1.0.30001782"
+ electron-to-chromium "^1.5.328"
+ node-releases "^2.0.36"
+ update-browserslist-db "^1.2.3"
bser@2.1.1:
version "2.1.1"
@@ -6400,14 +6429,6 @@ buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-buffer@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
- integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.2.1"
-
builtin-modules@^3.1.0, builtin-modules@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
@@ -6465,7 +6486,7 @@ caching-transform@^4.0.0:
package-hash "^4.0.0"
write-file-atomic "^3.0.0"
-call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
+call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
@@ -6473,14 +6494,14 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-
es-errors "^1.3.0"
function-bind "^1.1.2"
-call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
- integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8, call-bind@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.9.tgz#39a644700c80bc7d0ca9102fc6d1d43b2fd7eee7"
+ integrity sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==
dependencies:
- call-bind-apply-helpers "^1.0.0"
- es-define-property "^1.0.0"
- get-intrinsic "^1.2.4"
+ call-bind-apply-helpers "^1.0.2"
+ es-define-property "^1.0.1"
+ get-intrinsic "^1.3.0"
set-function-length "^1.2.2"
call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
@@ -6539,10 +6560,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001754, caniuse-lite@^1.0.30001759:
- version "1.0.30001760"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz#bdd1960fafedf8d5f04ff16e81460506ff9b798f"
- integrity sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782, caniuse-lite@^1.0.30001787:
+ version "1.0.30001793"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz#238887ddf5fcfc8c36d872394d0a78a517312a72"
+ integrity sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==
capital-case@^1.0.4:
version "1.0.4"
@@ -6724,9 +6745,9 @@ ci-info@^3.2.0, ci-info@^3.6.1:
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
ci-info@^4.2.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa"
- integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.4.0.tgz#7d54eff9f54b45b62401c26032696eb59c8bd18c"
+ integrity sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==
citty@^0.1.6:
version "0.1.6"
@@ -6736,11 +6757,9 @@ citty@^0.1.6:
consola "^3.2.3"
city-timezones@^1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/city-timezones/-/city-timezones-1.3.2.tgz#76ead53649ad7fff7bf8512bc2c217054d966f36"
- integrity sha512-XztdL/2EWpfmgRIOzrKVOWFp6VdmaD9FNTZPINlez1etIn0mMNn01RMmSfOp6LUP/h1M2ZLX80N1O+WKwhzC+w==
- dependencies:
- lodash "^4.17.21"
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/city-timezones/-/city-timezones-1.3.4.tgz#a8c9aa1c7630ed99a2acee33640a205e1c230433"
+ integrity sha512-yLmtCxU4y5HLAw9XGIMcGEXO+R2KH1sb595wEQC/E9BxSDpazCD7v9ZQRySO7367IXWsWqt3z2xFVh3OkZdgEQ==
cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.3:
version "1.4.3"
@@ -6896,9 +6915,9 @@ codemirror-spell-checker@1.1.2:
typo-js "*"
codemirror@^5.65.15:
- version "5.65.20"
- resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.20.tgz#8aa77c2dbfeb2df9b0828bf8e7d64fdd566eeff0"
- integrity sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==
+ version "5.65.21"
+ resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.21.tgz#cacf320606c5450ad3b3da34bb9c666afec21068"
+ integrity sha512-6teYk0bA0nR3QP0ihGMoxuKzpl5W80FpnHpBJpgy66NK3cZv5b/d/HY8PnRvfSsCG1MTfr92u2WUl+wT0E40mQ==
codemirror@^6.0.0:
version "6.0.2"
@@ -7118,9 +7137,9 @@ content-type@~1.0.4, content-type@~1.0.5:
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
contentful-resolve-response@^1.3.12:
- version "1.9.4"
- resolved "https://registry.yarnpkg.com/contentful-resolve-response/-/contentful-resolve-response-1.9.4.tgz#a0206be0218af38db5280894b7fc748cbfeb68d9"
- integrity sha512-8qu2dM2IMoVQhBhp81BVGB9ISantPmPTZ3EELGxuM8e/t+jSe+xmsVk5yHE+a9AYMBKSwgupBnkjGZE4RzFowQ==
+ version "1.9.8"
+ resolved "https://registry.yarnpkg.com/contentful-resolve-response/-/contentful-resolve-response-1.9.8.tgz#9daafd4d2c250558a24fa96dd3a66db903758712"
+ integrity sha512-gudcrg8Z2pt+Gf76miW0ebmamLhoIZkLAadLJPO5EHeSljwnbYDawffAeqiWnd8UR5Zi+cAzcWMEBtUT9GpBpg==
dependencies:
fast-copy "^3.0.2"
@@ -7179,17 +7198,17 @@ cookie@~0.7.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
-core-js-compat@^3.43.0:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3"
- integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==
+core-js-compat@^3.43.0, core-js-compat@^3.48.0:
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6"
+ integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==
dependencies:
- browserslist "^4.28.0"
+ browserslist "^4.28.1"
core-js-pure@^3.23.3:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.47.0.tgz#1104df8a3b6eb9189fcc559b5a65b90f66e7e887"
- integrity sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.49.0.tgz#ff8436b7251a3832f5fdbbe3e10f7f2e58e51fb1"
+ integrity sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==
core-js@^1.0.0:
version "1.2.7"
@@ -7197,9 +7216,9 @@ core-js@^1.0.0:
integrity sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==
core-js@^3.19.2, core-js@^3.6.4:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.47.0.tgz#436ef07650e191afeb84c24481b298bd60eb4a17"
- integrity sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.49.0.tgz#8b4d520ac034311fa21aa616f017ada0e0dbbddd"
+ integrity sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==
core-util-is@~1.0.0:
version "1.0.3"
@@ -7676,6 +7695,11 @@ date-format@4.0.3:
resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873"
integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==
+dayjs@^1.11.7:
+ version "1.11.20"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.20.tgz#88d919fd639dc991415da5f4cb6f1b6650811938"
+ integrity sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==
+
debounce@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
@@ -7688,7 +7712,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@4.4.3, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0, debug@^4.4.1:
+debug@4, debug@4.4.3, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0, debug@^4.4.3:
version "4.4.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
@@ -7720,9 +7744,9 @@ decimal.js@^10.2.1:
integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==
decode-named-character-reference@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed"
- integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f"
+ integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==
dependencies:
character-entities "^2.0.0"
@@ -7749,9 +7773,9 @@ dedent@^0.7.0:
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
dedent@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.0.tgz#c1f9445335f0175a96587be245a282ff451446ca"
- integrity sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.2.tgz#34e2264ab538301e27cf7b07bf2369c19baa8dd9"
+ integrity sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==
deep-diff@^0.3.5:
version "0.3.8"
@@ -7903,10 +7927,10 @@ detect-indent@^6.1.0:
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
-detect-libc@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+detect-libc@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
+ integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
detect-newline@^3.0.0:
version "3.1.0"
@@ -7969,14 +7993,14 @@ diff-sequences@^29.6.3:
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
diff@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
- integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.4.tgz#7a6dbfda325f25f07517e9b518f897c08332e07d"
+ integrity sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==
diff@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
- integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.2.tgz#0a4742797281d09cfa699b79ea32d27723623bad"
+ integrity sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==
dir-glob@^3.0.1:
version "3.0.1"
@@ -8094,9 +8118,9 @@ domhandler@^5.0.2, domhandler@^5.0.3:
domelementtype "^2.3.0"
dompurify@^2.5.8:
- version "2.5.8"
- resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.8.tgz#2809d89d7e528dc7a071dea440d7376df676f824"
- integrity sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.9.tgz#80481ec22dfac67285cc274cb51a45c1e9fa9c42"
+ integrity sha512-i6mvVmWN4xo9LrhCOZrDgSs9noW6nOahbrmzjRbPF36YPyj5Ue5lgok0MHDWkG7xzpWFO2OYttXdzM7rJxHvNA==
domutils@^1.7.0:
version "1.7.0"
@@ -8115,7 +8139,7 @@ domutils@^2.5.2, domutils@^2.8.0:
domelementtype "^2.2.0"
domhandler "^4.2.0"
-domutils@^3.0.1:
+domutils@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78"
integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
@@ -8283,10 +8307,10 @@ ejs@^3.1.6, ejs@^3.1.8:
dependencies:
jake "^10.8.5"
-electron-to-chromium@^1.5.263:
- version "1.5.267"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7"
- integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
+electron-to-chromium@^1.5.328:
+ version "1.5.357"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz#fb4ecbf08fe0082b7278d12d1f5da386436575b9"
+ integrity sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==
emittery@^0.10.2:
version "0.10.2"
@@ -8318,11 +8342,6 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
-
encodeurl@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
@@ -8344,20 +8363,20 @@ endent@^2.0.1:
fast-json-parse "^1.0.3"
objectorarray "^1.0.5"
-enhanced-resolve@^5.17.3, enhanced-resolve@^5.7.0:
- version "5.18.3"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
- integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
+enhanced-resolve@^5.20.0, enhanced-resolve@^5.7.0:
+ version "5.21.3"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz#fa7fed23679e9169dfb705b8e201924421c4414a"
+ integrity sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==
dependencies:
graceful-fs "^4.2.4"
- tapable "^2.2.0"
+ tapable "^2.3.3"
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-entities@^4.2.0, entities@^4.4.0:
+entities@^4.2.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
@@ -8367,6 +8386,11 @@ entities@^6.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694"
integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==
+entities@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b"
+ integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==
+
entities@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
@@ -8391,10 +8415,10 @@ error-stack-parser@^2.0.6:
dependencies:
stackframe "^1.3.4"
-es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0:
- version "1.24.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
- integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
+es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.2:
+ version "1.24.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.2.tgz#2dbd38c180735ee983f77585140a2706a963ed9a"
+ integrity sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==
dependencies:
array-buffer-byte-length "^1.0.2"
arraybuffer.prototype.slice "^1.0.4"
@@ -8482,32 +8506,37 @@ es-get-iterator@^1.1.3:
stop-iteration-iterator "^1.0.0"
es-iterator-helpers@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75"
- integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz#8f4ff1f3603cbd09fbdb72c747a679779a65cc7f"
+ integrity sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.3"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
define-properties "^1.2.1"
- es-abstract "^1.23.6"
+ es-abstract "^1.24.2"
es-errors "^1.3.0"
- es-set-tostringtag "^2.0.3"
+ es-set-tostringtag "^2.1.0"
function-bind "^1.1.2"
- get-intrinsic "^1.2.6"
+ get-intrinsic "^1.3.0"
globalthis "^1.0.4"
gopd "^1.2.0"
has-property-descriptors "^1.0.2"
has-proto "^1.2.0"
has-symbols "^1.1.0"
internal-slot "^1.1.0"
- iterator.prototype "^1.1.4"
- safe-array-concat "^1.1.3"
+ iterator.prototype "^1.1.5"
+ math-intrinsics "^1.1.0"
-es-module-lexer@^1.2.1, es-module-lexer@^1.4.1:
+es-module-lexer@^1.4.1:
version "1.7.0"
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a"
integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
+es-module-lexer@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz#1dfcbb5ea3bbfb63f28e1fc3676c3676d1c9624c"
+ integrity sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==
+
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
@@ -8515,7 +8544,7 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
dependencies:
es-errors "^1.3.0"
-es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0:
+es-set-tostringtag@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
@@ -8835,13 +8864,13 @@ eslint-config-react-important-stuff@^3.0.0:
eslint-plugin-react-hooks "^4.0.8"
eslint-import-resolver-node@^0.3.9:
- version "0.3.9"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
- integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
+ version "0.3.10"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz#84ce3005abfc300588cf23bbac1aabec1fc6e8c1"
+ integrity sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==
dependencies:
debug "^3.2.7"
- is-core-module "^2.13.0"
- resolve "^1.22.4"
+ is-core-module "^2.16.1"
+ resolve "^2.0.0-next.6"
eslint-import-resolver-typescript@^3.10.1:
version "3.10.1"
@@ -9111,9 +9140,9 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.0, esquery@^1.4.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
- integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d"
+ integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
dependencies:
estraverse "^5.1.0"
@@ -9170,11 +9199,6 @@ event-stream@=3.3.4:
stream-combiner "~0.0.4"
through "~2.3.1"
-event-target-shim@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
- integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
-
eventemitter3@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
@@ -9186,11 +9210,11 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4:
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
eventemitter3@^5.0.0, eventemitter3@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
- integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb"
+ integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==
-events@^3.2.0, events@^3.3.0:
+events@^3.2.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
@@ -9267,16 +9291,16 @@ expect@^29.0.0, expect@^29.7.0:
jest-util "^29.7.0"
expect@^30.0.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-30.2.0.tgz#d4013bed267013c14bc1199cec8aa57cee9b5869"
- integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-30.4.1.tgz#897e0390a0b6c333dbcf3a24dee3ad49553577e0"
+ integrity sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==
dependencies:
- "@jest/expect-utils" "30.2.0"
+ "@jest/expect-utils" "30.4.1"
"@jest/get-type" "30.1.0"
- jest-matcher-utils "30.2.0"
- jest-message-util "30.2.0"
- jest-mock "30.2.0"
- jest-util "30.2.0"
+ jest-matcher-utils "30.4.1"
+ jest-message-util "30.4.1"
+ jest-mock "30.4.1"
+ jest-util "30.4.1"
express-fileupload@^1.5.2:
version "1.5.2"
@@ -9293,13 +9317,13 @@ express-interceptor@^1.2.0:
debug "^2.2.0"
express@^4.17.3, express@^4.22.1:
- version "4.22.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069"
- integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==
+ version "4.22.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.22.2.tgz#c17ae0981e5efc24b22272f0e041c4662503b700"
+ integrity sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "~1.20.3"
+ body-parser "~1.20.5"
content-disposition "~0.5.4"
content-type "~1.0.4"
cookie "~0.7.1"
@@ -9318,7 +9342,7 @@ express@^4.17.3, express@^4.22.1:
parseurl "~1.3.3"
path-to-regexp "~0.1.12"
proxy-addr "~2.0.7"
- qs "~6.14.0"
+ qs "~6.15.1"
range-parser "~1.2.1"
safe-buffer "5.2.1"
send "~0.19.0"
@@ -9393,16 +9417,28 @@ fast-levenshtein@^2.0.6:
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fast-uri@^3.0.1:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa"
- integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.2.tgz#8af3d4fc9d3e71b11572cc2673b514a7d1a8c8ec"
+ integrity sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==
+
+fast-xml-builder@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c"
+ integrity sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==
+ dependencies:
+ path-expression-matcher "^1.5.0"
+ xml-naming "^0.1.0"
-fast-xml-parser@^4.4.1:
- version "4.5.6"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.6.tgz#4ff57d4aca13a2d11aa42ad460495cf00f32b655"
- integrity sha512-Yd4vkROfJf8AuJrDIVMVmYfULKmIJszVsMv7Vo71aocsKgFxpdlpSHXSaInvyYfgw2PRuObQSW2GFpVMUjxu9A==
+fast-xml-parser@^5.3.6:
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz#64d71f0f8d4bf23621dffd762aef7e98c1884fc1"
+ integrity sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==
dependencies:
- strnum "^1.0.5"
+ "@nodable/entities" "^2.1.0"
+ fast-xml-builder "^1.2.0"
+ path-expression-matcher "^1.5.0"
+ strnum "^2.3.0"
+ xml-naming "^0.1.0"
fastest-levenshtein@^1.0.12:
version "1.0.16"
@@ -9415,9 +9451,9 @@ fastparse@^1.1.2:
integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
fastq@^1.6.0:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
- integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675"
+ integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==
dependencies:
reusify "^1.0.4"
@@ -9492,9 +9528,9 @@ fetch-retry@^5.0.2:
integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==
fflate@^0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea"
- integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.3.tgz#bc27d8eb30343d4d512abb03480202ce65d825fc"
+ integrity sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==
file-entry-cache@^6.0.1:
version "6.0.1"
@@ -9526,19 +9562,20 @@ file-system-cache@2.3.0:
fs-extra "11.1.1"
ramda "0.29.0"
-file-type@^16.5.4:
- version "16.5.4"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd"
- integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==
+file-type@^22.0.0:
+ version "22.0.1"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-22.0.1.tgz#0184dbd6b6353bb25eb21a0c413a23885b6d1818"
+ integrity sha512-ww5Mhre0EE+jmBvOXTmXAbEMuZE7uX4a3+oRCQFNj8w++g3ev913N6tXQz0XTXbueQ5TWQfm6BdaViEHHn8bhA==
dependencies:
- readable-web-to-node-stream "^3.0.0"
- strtok3 "^6.2.4"
- token-types "^4.1.1"
+ "@tokenizer/inflate" "^0.4.1"
+ strtok3 "^10.3.5"
+ token-types "^6.1.2"
+ uint8array-extras "^1.5.0"
filelist@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
- integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.6.tgz#1e8870942a7c636c862f7c49b9394937b6a995a3"
+ integrity sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==
dependencies:
minimatch "^5.0.1"
@@ -9548,9 +9585,9 @@ filesize@^8.0.6:
integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==
filestack-js@^3.44.2:
- version "3.44.2"
- resolved "https://registry.yarnpkg.com/filestack-js/-/filestack-js-3.44.2.tgz#e3c01c8c411a85e842ae2cac21b439cd986fe990"
- integrity sha512-/52q66fzisVvl+0/sZ9VqYPsDdHXVJhUwIPlH88Zhv3NGnRaynnoW5PffHNXObtV9wnkAgZGxbsZVZRtKVLzKQ==
+ version "3.51.4"
+ resolved "https://registry.yarnpkg.com/filestack-js/-/filestack-js-3.51.4.tgz#910be7a967ea6249c5da02766b09503d8a650b5e"
+ integrity sha512-zybINn1MItq7MKH1akzvu6SifmT6ssMvUmDy1+mBPr6W/q5I26OEuFKilKHTat5RgbjSZtXMfkhyPjKeVVX6yw==
dependencies:
"@babel/runtime" "^7.8.4"
"@filestack/loader" "^1.0.9"
@@ -9558,8 +9595,8 @@ filestack-js@^3.44.2:
abab "^2.0.6"
debug "^4.3.4"
eventemitter3 "^5.0.0"
- fast-xml-parser "^4.4.1"
- file-type "^16.5.4"
+ fast-xml-parser "^5.3.6"
+ file-type "^22.0.0"
follow-redirects "^1.15.2"
isutf8 "^4.0.0"
jsonschema "^1.4.1"
@@ -9683,9 +9720,9 @@ flatted@^3.2.9:
integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==
flow-parser@0.*:
- version "0.293.0"
- resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.293.0.tgz#1f8d96753e298b86915ae678ec83b874261b36ba"
- integrity sha512-8tEGAcWpCqioajiSqrJr2+JSmkEI2vO/UACFGG378RO106ez9xugVxe9EpXD3aI1Vbf+mEUGhMt0gMpveJwVGA==
+ version "0.314.0"
+ resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.314.0.tgz#bf11bc9db676dd64a4049f55624b58080f850169"
+ integrity sha512-ayvpVFL/wibphkhjaz6PwL/F+Vz9lZB7qwFIHvsFiPQMfKmrqRXp1UyJgxMqyanW6QQDvsB12MLWFCc2cYBOtw==
flux-standard-action@^2.0.3:
version "2.1.2"
@@ -9695,7 +9732,7 @@ flux-standard-action@^2.0.3:
lodash.isplainobject "^4.0.6"
lodash.isstring "^4.0.1"
-follow-redirects@^1.0.0, follow-redirects@^1.15.11, follow-redirects@^1.15.2:
+follow-redirects@^1.0.0, follow-redirects@^1.15.2, follow-redirects@^1.16.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc"
integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==
@@ -9797,7 +9834,7 @@ fraction.js@^5.3.4:
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a"
integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==
-fresh@0.5.2, fresh@~0.5.2:
+fresh@~0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
@@ -9836,9 +9873,9 @@ fs-extra@^10.0.0:
universalify "^2.0.0"
fs-extra@^11.1.0, fs-extra@^11.1.1:
- version "11.3.2"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.2.tgz#c838aeddc6f4a8c74dd15f85e11fe5511bfe02a4"
- integrity sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==
+ version "11.3.5"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.5.tgz#07a44eff40bea53e719909a532f91a23bf0769ff"
+ integrity sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
@@ -9991,9 +10028,9 @@ get-symbol-description@^1.1.0:
get-intrinsic "^1.2.6"
get-tsconfig@^4.10.0:
- version "4.13.0"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7"
- integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.14.0.tgz#985d85c52a9903864280ccc2448d413fbf1efed8"
+ integrity sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==
dependencies:
resolve-pkg-maps "^1.0.0"
@@ -10046,14 +10083,14 @@ glob@^10.0.0:
package-json-from-dist "^1.0.0"
path-scurry "^1.11.1"
-glob@^13.0.0:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.0.tgz#9d9233a4a274fc28ef7adce5508b7ef6237a1be3"
- integrity sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==
+glob@^13.0.3:
+ version "13.0.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d"
+ integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==
dependencies:
- minimatch "^10.1.1"
- minipass "^7.1.2"
- path-scurry "^2.0.0"
+ minimatch "^10.2.2"
+ minipass "^7.1.3"
+ path-scurry "^2.0.2"
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0:
version "7.2.3"
@@ -10259,10 +10296,10 @@ hasha@^5.0.0:
dependencies:
traverse ">=0.2.4"
-hasown@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
- integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+hasown@^2.0.2, hasown@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c"
+ integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==
dependencies:
function-bind "^1.1.2"
@@ -10460,9 +10497,9 @@ html-void-elements@^3.0.0:
integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==
html-webpack-plugin@^5.5.0, html-webpack-plugin@^5.5.4:
- version "5.6.5"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz#d57defb83cabbf29bf56b2d4bf10b67b650066be"
- integrity sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==
+ version "5.6.7"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz#429bab4e12abf3c07e1c608886608e2df2c06b11"
+ integrity sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==
dependencies:
"@types/html-minifier-terser" "^6.0.0"
html-minifier-terser "^6.0.2"
@@ -10478,6 +10515,16 @@ html2canvas@^1.4.1:
css-line-break "^2.1.0"
text-segmentation "^1.0.3"
+htmlparser2@^10.1, htmlparser2@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-10.1.0.tgz#fe3f2e12c73b6e462d4e10395db9c1119e4d6ae4"
+ integrity sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
+ domutils "^3.2.2"
+ entities "^7.0.1"
+
htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@@ -10488,16 +10535,6 @@ htmlparser2@^6.1.0:
domutils "^2.5.2"
entities "^2.0.0"
-htmlparser2@^8.0.0:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21"
- integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==
- dependencies:
- domelementtype "^2.3.0"
- domhandler "^5.0.3"
- domutils "^3.0.1"
- entities "^4.4.0"
-
http-cache-semantics@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5"
@@ -10508,27 +10545,17 @@ http-deceiver@^1.2.7:
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
-http-errors@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
- integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+http-errors@~1.8.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
dependencies:
- depd "2.0.0"
+ depd "~1.1.2"
inherits "2.0.4"
setprototypeof "1.2.0"
- statuses "2.0.1"
+ statuses ">= 1.5.0 < 2"
toidentifier "1.0.1"
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
http-errors@~2.0.0, http-errors@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b"
@@ -10590,7 +10617,7 @@ https-proxy-agent@^4.0.0:
agent-base "5"
debug "4"
-https-proxy-agent@^5.0.0:
+https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@@ -10681,10 +10708,10 @@ immer@^9.0.7:
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176"
integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
-immutable@*, immutable@^5.0.2:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f"
- integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==
+immutable@*, immutable@^5.1.5:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165"
+ integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==
immutable@~3.7.4:
version "3.7.6"
@@ -10692,9 +10719,9 @@ immutable@~3.7.4:
integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==
immutable@~3.8.2:
- version "3.8.2"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
- integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.3.tgz#0a8d2494a94d4b2d4f0e99986e74dd25d1e9a859"
+ integrity sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==
import-fresh@^3.1.0, import-fresh@^3.2.1:
version "3.3.1"
@@ -10735,11 +10762,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-
ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
@@ -10777,9 +10799,9 @@ ipaddr.js@1.9.1:
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc"
- integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.4.0.tgz#038e9ceaf8219efc5bb76347b7eb787875d5095b"
+ integrity sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==
is-absolute-url@^3.0.0:
version "3.0.3"
@@ -10865,12 +10887,12 @@ is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.13.0, is-core-module@^2.16.1:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
- integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
+is-core-module@^2.16.1, is-core-module@^2.16.2:
+ version "2.16.2"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.2.tgz#3e07450a8080ebce3fbf0cac494f4d2ab324e082"
+ integrity sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==
dependencies:
- hasown "^2.0.2"
+ hasown "^2.0.3"
is-data-view@^1.0.1, is-data-view@^1.0.2:
version "1.0.2"
@@ -11265,7 +11287,7 @@ isutf8@^4.0.0:
resolved "https://registry.yarnpkg.com/isutf8/-/isutf8-4.0.1.tgz#046799bca926e9438c650def6ba94a8d9871da90"
integrity sha512-1pk2/2pE+G48eETnp4uOLxQ9WUCxD7oVauYwhFEAGREJPDxEO7iX9qstylrCcx3lNWa1RCS2DxGTxrHdWqS7/w==
-iterator.prototype@^1.1.4:
+iterator.prototype@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39"
integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==
@@ -11457,15 +11479,15 @@ jest-config@^29.7.0:
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825"
- integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==
+jest-diff@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.4.1.tgz#26691c73975768409af4a66b2754cea3182aa2dc"
+ integrity sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==
dependencies:
- "@jest/diff-sequences" "30.0.1"
+ "@jest/diff-sequences" "30.4.0"
"@jest/get-type" "30.1.0"
chalk "^4.1.2"
- pretty-format "30.2.0"
+ pretty-format "30.4.1"
jest-diff@^27.5.1:
version "27.5.1"
@@ -11648,15 +11670,15 @@ jest-leak-detector@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
-jest-matcher-utils@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz#69a0d4c271066559ec8b0d8174829adc3f23a783"
- integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==
+jest-matcher-utils@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz#3fee8c89dbd8fc6e60eb590def9897e18f110ec4"
+ integrity sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==
dependencies:
"@jest/get-type" "30.1.0"
chalk "^4.1.2"
- jest-diff "30.2.0"
- pretty-format "30.2.0"
+ jest-diff "30.4.1"
+ pretty-format "30.4.1"
jest-matcher-utils@^27.5.1:
version "27.5.1"
@@ -11678,18 +11700,19 @@ jest-matcher-utils@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
-jest-message-util@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.2.0.tgz#fc97bf90d11f118b31e6131e2b67fc4f39f92152"
- integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==
+jest-message-util@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.4.1.tgz#40f6bfa5f564363edcba7ce0ca64277fd2ad6af7"
+ integrity sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==
dependencies:
"@babel/code-frame" "^7.27.1"
- "@jest/types" "30.2.0"
+ "@jest/types" "30.4.1"
"@types/stack-utils" "^2.0.3"
chalk "^4.1.2"
graceful-fs "^4.2.11"
- micromatch "^4.0.8"
- pretty-format "30.2.0"
+ jest-util "30.4.1"
+ picomatch "^4.0.3"
+ pretty-format "30.4.1"
slash "^3.0.0"
stack-utils "^2.0.6"
@@ -11738,14 +11761,14 @@ jest-message-util@^29.7.0:
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.2.0.tgz#69f991614eeb4060189459d3584f710845bff45e"
- integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==
+jest-mock@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.4.1.tgz#5e11a05d7719a1e3c7bba6348b70ff4e1bc5ea68"
+ integrity sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==
dependencies:
- "@jest/types" "30.2.0"
+ "@jest/types" "30.4.1"
"@types/node" "*"
- jest-util "30.2.0"
+ jest-util "30.4.1"
jest-mock@^27.0.6, jest-mock@^27.5.1:
version "27.5.1"
@@ -11769,10 +11792,10 @@ jest-pnp-resolver@^1.2.2:
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
-jest-regex-util@30.0.1:
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b"
- integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==
+jest-regex-util@30.4.0:
+ version "30.4.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.4.0.tgz#f75ccc43857633df2563a03588b5cb45c7c2941b"
+ integrity sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==
jest-regex-util@^27.5.1:
version "27.5.1"
@@ -12009,17 +12032,17 @@ jest-snapshot@^29.7.0:
pretty-format "^29.7.0"
semver "^7.5.3"
-jest-util@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.2.0.tgz#5142adbcad6f4e53c2776c067a4db3c14f913705"
- integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==
+jest-util@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.4.1.tgz#979c9d014fdd12bb95d3dcde0192e1a9e0bc93d6"
+ integrity sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==
dependencies:
- "@jest/types" "30.2.0"
+ "@jest/types" "30.4.1"
"@types/node" "*"
chalk "^4.1.2"
ci-info "^4.2.0"
graceful-fs "^4.2.11"
- picomatch "^4.0.2"
+ picomatch "^4.0.3"
jest-util@^27.5.1:
version "27.5.1"
@@ -12196,10 +12219,10 @@ jiti@^1.21.7:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9"
integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==
-joi@^18.0.1:
- version "18.0.2"
- resolved "https://registry.yarnpkg.com/joi/-/joi-18.0.2.tgz#30ced6aed00a7848cc11f92859515258301dc3a4"
- integrity sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==
+joi@^18.0.2:
+ version "18.2.1"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-18.2.1.tgz#a022e39496e25b010a6d4649975c160a4315bd79"
+ integrity sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ==
dependencies:
"@hapi/address" "^5.1.1"
"@hapi/formula" "^3.0.2"
@@ -12207,7 +12230,7 @@ joi@^18.0.1:
"@hapi/pinpoint" "^2.0.1"
"@hapi/tlds" "^1.1.1"
"@hapi/topo" "^6.0.2"
- "@standard-schema/spec" "^1.0.0"
+ "@standard-schema/spec" "^1.1.0"
joycon@^3.1.1:
version "3.1.1"
@@ -12313,7 +12336,7 @@ json-buffer@3.0.1:
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
+json-parse-even-better-errors@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -12328,11 +12351,6 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-json-schema@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
- integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
-
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
@@ -12356,9 +12374,9 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3:
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
jsonfile@^6.0.1:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62"
- integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.1.tgz#b6e31717f22cc37330b081ce0051ed5de53af2f6"
+ integrity sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==
dependencies:
universalify "^2.0.0"
optionalDependencies:
@@ -12373,7 +12391,7 @@ jsonpath@^1.1.1:
static-eval "2.1.1"
underscore "1.13.6"
-jsonpointer@^5.0.0:
+jsonpointer@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559"
integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
@@ -12448,13 +12466,20 @@ language-tags@^1.0.9:
language-subtag-registry "^0.3.20"
launch-editor@^2.6.0:
- version "2.12.0"
- resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.12.0.tgz#cc740f4e0263a6b62ead2485f9896e545321f817"
- integrity sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==
+ version "2.13.2"
+ resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.2.tgz#41d51baaf8afb393224b89bd2bcb4e02f2306405"
+ integrity sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==
dependencies:
picocolors "^1.1.1"
shell-quote "^1.8.3"
+launder@^1.7.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/launder/-/launder-1.7.1.tgz#ef7155ab0c3ddec2323089c961d2e9a249aa5b0d"
+ integrity sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==
+ dependencies:
+ dayjs "^1.11.7"
+
lazy-ass@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
@@ -12538,9 +12563,9 @@ load-tsconfig@^0.2.0:
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
loader-runner@^4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3"
- integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.2.tgz#9913d3a15971f8f635915e601fb5c9d495d918e9"
+ integrity sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==
loader-utils@^1.1.0, loader-utils@^1.2.3:
version "1.4.2"
@@ -12710,7 +12735,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
-lodash@^4.0.1, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.18.1, lodash@^4.2.1, lodash@^4.7.0:
+lodash@^4.0.1, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.17.5, lodash@^4.18.1, lodash@^4.2.1, lodash@^4.7.0:
version "4.18.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c"
integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==
@@ -12764,9 +12789,9 @@ lru-cache@^10.2.0:
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
lru-cache@^11.0.0:
- version "11.2.4"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d"
- integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==
+ version "11.4.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.4.0.tgz#87a577bfa71f7c94dfd71692874b859d1ca41a28"
+ integrity sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==
lru-cache@^5.1.1:
version "5.1.1"
@@ -12926,9 +12951,9 @@ mdast-util-from-markdown@^1.0.0:
uvu "^0.5.0"
mdast-util-from-markdown@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a"
- integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz#c95822b91aab75f18a4cbe8b2f51b873ed2cf0c7"
+ integrity sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==
dependencies:
"@types/mdast" "^4.0.0"
"@types/unist" "^3.0.0"
@@ -13645,7 +13670,7 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-"mime-db@>= 1.43.0 < 2":
+"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0:
version "1.54.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
@@ -13662,7 +13687,7 @@ mime-types@2.1.18:
dependencies:
mime-db "~1.33.0"
-mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -13712,9 +13737,9 @@ min-indent@^1.0.0:
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
mini-css-extract-plugin@^2.4.5:
- version "2.9.4"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz#cafa1a42f8c71357f49cd1566810d74ff1cb0200"
- integrity sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==
+ version "2.10.2"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz#5c85ec9450c05d26e32531b465a15a08c3a57253"
+ integrity sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==
dependencies:
schema-utils "^4.0.0"
tapable "^2.2.1"
@@ -13724,33 +13749,33 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimatch@3.1.2, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+minimatch@3.1.5, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e"
+ integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==
dependencies:
brace-expansion "^1.1.7"
-minimatch@^10.1.1:
- version "10.1.1"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55"
- integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==
+minimatch@^10.2.2:
+ version "10.2.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1"
+ integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==
dependencies:
- "@isaacs/brace-expansion" "^5.0.0"
+ brace-expansion "^5.0.5"
minimatch@^5.0.1:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
- integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+ version "5.1.9"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.9.tgz#1293ef15db0098b394540e8f9f744f9fda8dee4b"
+ integrity sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==
dependencies:
brace-expansion "^2.0.1"
minimatch@^9.0.4:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
- integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ version "9.0.9"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e"
+ integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==
dependencies:
- brace-expansion "^2.0.1"
+ brace-expansion "^2.0.2"
minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
@@ -13769,10 +13794,10 @@ minipass@^5.0.0:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
- integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2, minipass@^7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b"
+ integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==
minizlib@^2.1.1:
version "2.1.2"
@@ -13800,14 +13825,14 @@ mkdirp@^1.0.3:
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mlly@^1.7.4:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.8.0.tgz#e074612b938af8eba1eaf43299cbc89cb72d824e"
- integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.8.2.tgz#e7f7919a82d13b174405613117249a3f449d78bb"
+ integrity sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==
dependencies:
- acorn "^8.15.0"
+ acorn "^8.16.0"
pathe "^2.0.3"
pkg-types "^1.3.1"
- ufo "^1.6.1"
+ ufo "^1.6.3"
moment-duration-format@^2.3.2:
version "2.3.2"
@@ -13815,9 +13840,9 @@ moment-duration-format@^2.3.2:
integrity sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==
moment-timezone@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.6.0.tgz#c5a6519171f31a64739ea75d33f5c136c08ff608"
- integrity sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q==
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.6.2.tgz#a704cca03ee502f0df6edd42efcdcc61ee03190e"
+ integrity sha512-lDsQv8FoGdBUdf0+TjGsq2orxKuXdwFlQ6Zw6TX3xIcTwTfEpCLyKqvEauvCHJ8iu3KBV8+uPhlv70YsNGdUBQ==
dependencies:
moment "^2.29.4"
@@ -13874,9 +13899,9 @@ mz@^2.7.0:
thenify-all "^1.0.0"
nanoid@^3.3.11:
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
- integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
+ version "3.3.12"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05"
+ integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==
napi-postinstall@^0.3.0:
version "0.3.4"
@@ -13943,6 +13968,16 @@ node-dir@^0.1.17:
dependencies:
minimatch "^3.0.2"
+node-exports-info@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13"
+ integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==
+ dependencies:
+ array.prototype.flatmap "^1.3.3"
+ es-errors "^1.3.0"
+ object.entries "^1.1.9"
+ semver "^6.3.1"
+
node-fetch-native@^1.6.6:
version "1.6.7"
resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz#9d09ca63066cc48423211ed4caf5d70075d76a71"
@@ -13972,10 +14007,10 @@ node-preload@^0.2.1:
dependencies:
process-on-spawn "^1.0.0"
-node-releases@^2.0.27:
- version "2.0.27"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
- integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
+node-releases@^2.0.36:
+ version "2.0.44"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.44.tgz#212c9b983f5bb70d311dd68c27d55dd0e65d1ca7"
+ integrity sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==
normalize-package-data@^2.5.0:
version "2.5.0"
@@ -13992,11 +14027,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-
normalize-url@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
@@ -14175,7 +14205,7 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-on-finished@2.4.1, on-finished@~2.4.1:
+on-finished@~2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
@@ -14426,7 +14456,7 @@ parse5@^7.0.0:
dependencies:
entities "^6.0.0"
-parseurl@~1.3.2, parseurl@~1.3.3:
+parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
@@ -14467,6 +14497,11 @@ path-exists@^5.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+path-expression-matcher@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a"
+ integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -14505,10 +14540,10 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-path-scurry@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.1.tgz#4b6572376cfd8b811fca9cd1f5c24b3cbac0fe10"
- integrity sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==
+path-scurry@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85"
+ integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==
dependencies:
lru-cache "^11.0.0"
minipass "^7.1.2"
@@ -14519,9 +14554,9 @@ path-to-regexp@3.3.0:
integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==
path-to-regexp@~0.1.12:
- version "0.1.12"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
- integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d"
+ integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==
path-type@^4.0.0:
version "4.0.0"
@@ -14540,11 +14575,6 @@ pause-stream@0.0.11:
dependencies:
through "~2.3"
-peek-readable@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
- integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
-
peek-stream@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67"
@@ -14575,19 +14605,19 @@ picocolors@^1.0.0, picocolors@^1.1.1:
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601"
+ integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==
picomatch@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516"
- integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.2.tgz#8f543c114ddc037eab6b10fbd5a66cc8a51a02bc"
+ integrity sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==
-picomatch@^4.0.2, picomatch@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
- integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
+picomatch@^4.0.3, picomatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589"
+ integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==
pidtree@0.6.0:
version "0.6.0"
@@ -15374,9 +15404,9 @@ postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.3
source-map "^0.6.1"
postcss@^8.2.14, postcss@^8.2.7, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47:
- version "8.5.6"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
- integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
+ version "8.5.14"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c"
+ integrity sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==
dependencies:
nanoid "^3.3.11"
picocolors "^1.1.1"
@@ -15405,14 +15435,15 @@ pretty-error@^4.0.0:
lodash "^4.17.20"
renderkid "^3.0.0"
-pretty-format@30.2.0, pretty-format@^30.0.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe"
- integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==
+pretty-format@30.4.1, pretty-format@^30.0.0:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.4.1.tgz#0911652e92e1e91f475e3e6a16e628e50649ea69"
+ integrity sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==
dependencies:
- "@jest/schemas" "30.0.5"
+ "@jest/schemas" "30.4.1"
ansi-styles "^5.2.0"
- react-is "^18.3.1"
+ react-is-18 "npm:react-is@^18.3.1"
+ react-is-19 "npm:react-is@^19.2.5"
pretty-format@^27.0.2, pretty-format@^27.5.1:
version "27.5.1"
@@ -15569,9 +15600,9 @@ pump@^2.0.0:
once "^1.3.1"
pump@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d"
- integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c"
+ integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
@@ -15626,10 +15657,10 @@ qrcode.react@^3.2.0:
resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.2.0.tgz#97daabd4ff641a3f3c678f87be106ebc55f9cd07"
integrity sha512-YietHHltOHA4+l5na1srdaMx4sVSOjV9tamHs+mwiLWAMr6QVACRUw1Neax5CptFILcNoITctJY0Ipyn5enQ8g==
-qs@^6.10.0, qs@^6.11.2, qs@^6.12.3, qs@^6.14.0, qs@~6.14.0:
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
- integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
+qs@^6.10.0, qs@^6.11.2, qs@^6.12.3, qs@^6.14.0, qs@~6.15.1:
+ version "6.15.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9"
+ integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==
dependencies:
side-channel "^1.1.0"
@@ -15743,9 +15774,9 @@ react-color@^2.19.3:
tinycolor2 "^1.4.1"
react-colorful@^5.1.2:
- version "5.6.1"
- resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b"
- integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.7.0.tgz#82c0f31311606161ed13423979067c865e4a7877"
+ integrity sha512-fuesYIemttah97XmsIHmz4OORDHiSFzyc9HMAIrCHJou2jaRQmL8cFJ76K4zQhhj8jzwOBlOi4BaGTjjOZCfTg==
react-contenteditable@^3.3.7:
version "3.3.7"
@@ -15888,9 +15919,9 @@ react-helmet@^6.1.0:
react-side-effect "^2.1.0"
react-hook-form@^7.68.0:
- version "7.68.0"
- resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.68.0.tgz#733c6871fa4ec5e5bfb13e7650a3a912eafe1721"
- integrity sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==
+ version "7.76.0"
+ resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.76.0.tgz#b58036cabfac756500115a5a6bebc53a8314f05f"
+ integrity sha512-eKtLGgFeSgkHqQD8J59AMZ9a4uD1D83iSIzt4YlTGD7liDen5rrjcUO1rVIGd9yC1gofryjtHbv+4ny4hkLWlw==
react-hot-loader@^4.13.1:
version "4.13.1"
@@ -15906,6 +15937,16 @@ react-hot-loader@^4.13.1:
shallowequal "^1.1.0"
source-map "^0.7.3"
+"react-is-18@npm:react-is@^18.3.1":
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
+ integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
+
+"react-is-19@npm:react-is@^19.2.5":
+ version "19.2.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.6.tgz#aeee6159b159eb7f520d672cffcc69e7052d288f"
+ integrity sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==
+
react-is@18.1.0:
version "18.1.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67"
@@ -15921,7 +15962,7 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-is@^18.0.0, react-is@^18.3.1:
+react-is@^18.0.0:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
@@ -15996,9 +16037,9 @@ react-redux@^8.1.3:
use-sync-external-store "^1.0.0"
react-redux@^9.2.0:
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5"
- integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==
+ version "9.3.0"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.3.0.tgz#a30113bb6d95c0a715d54dda4308d450fca6ce09"
+ integrity sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==
dependencies:
"@types/use-sync-external-store" "^0.0.6"
use-sync-external-store "^1.4.0"
@@ -16052,19 +16093,19 @@ react-responsive@^9.0.2:
shallow-equal "^1.2.1"
react-router-dom@^6.30.2:
- version "6.30.2"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.30.2.tgz#ee8c161bce4890d34484b552f8510f9af0e22b01"
- integrity sha512-l2OwHn3UUnEVUqc6/1VMmR1cvZryZ3j3NzapC2eUXO1dB0sYp5mvwdjiXhpUbRb21eFow3qSxpP8Yv6oAU824Q==
+ version "6.30.3"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.30.3.tgz#42ae6dc4c7158bfb0b935f162b9621b29dddf740"
+ integrity sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==
dependencies:
- "@remix-run/router" "1.23.1"
- react-router "6.30.2"
+ "@remix-run/router" "1.23.2"
+ react-router "6.30.3"
-react-router@6.30.2:
- version "6.30.2"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.30.2.tgz#c78a3b40f7011f49a373b1df89492e7d4ec12359"
- integrity sha512-H2Bm38Zu1bm8KUE5NVWRMzuIyAV8p/JrOaBJAwVmp37AXG72+CZJlEBw6pdn9i5TBgLMhNDgijS4ZlblpHyWTA==
+react-router@6.30.3:
+ version "6.30.3"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.30.3.tgz#994b3ccdbe0e81fe84d4f998100f62584dfbf1cf"
+ integrity sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==
dependencies:
- "@remix-run/router" "1.23.1"
+ "@remix-run/router" "1.23.2"
react-scripts@5.0.1:
version "5.0.1"
@@ -16187,9 +16228,9 @@ react-transition-group@^4.3.0:
prop-types "^15.6.2"
react@*:
- version "19.2.1"
- resolved "https://registry.yarnpkg.com/react/-/react-19.2.1.tgz#8600fa205e58e2e807f6ef431c9f6492591a2700"
- integrity sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==
+ version "19.2.6"
+ resolved "https://registry.yarnpkg.com/react/-/react-19.2.6.tgz#3dadb8e12b2a7934c1d5317973e5dce1301f9a4d"
+ integrity sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==
react@^18.3.1:
version "18.3.1"
@@ -16253,24 +16294,6 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readable-stream@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91"
- integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==
- dependencies:
- abort-controller "^3.0.0"
- buffer "^6.0.3"
- events "^3.3.0"
- process "^0.11.10"
- string_decoder "^1.3.0"
-
-readable-web-to-node-stream@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz#392ba37707af5bf62d725c36c1b5d6ef4119eefc"
- integrity sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==
- dependencies:
- readable-stream "^4.7.0"
-
readdirp@^4.0.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d"
@@ -16465,9 +16488,9 @@ regjsgen@^0.8.0:
integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==
regjsparser@^0.13.0:
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.0.tgz#01f8351335cf7898d43686bc74d2dd71c847ecc0"
- integrity sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.1.tgz#0593cbacb27527927692030928ae4d3b878d6f8d"
+ integrity sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==
dependencies:
jsesc "~3.1.0"
@@ -16719,21 +16742,25 @@ resolve.exports@^2.0.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f"
integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==
-resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.10, resolve@^1.22.4, resolve@^1.22.8, resolve@^1.9.0:
- version "1.22.11"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262"
- integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
+resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.11, resolve@^1.22.8, resolve@^1.9.0:
+ version "1.22.12"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f"
+ integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==
dependencies:
+ es-errors "^1.3.0"
is-core-module "^2.16.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^2.0.0-next.4, resolve@^2.0.0-next.5:
- version "2.0.0-next.5"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c"
- integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
+resolve@^2.0.0-next.4, resolve@^2.0.0-next.5, resolve@^2.0.0-next.6:
+ version "2.0.0-next.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.7.tgz#ba3b035d4b1ee7c522426eee73cabcb0fd5515dd"
+ integrity sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==
dependencies:
- is-core-module "^2.13.0"
+ es-errors "^1.3.0"
+ is-core-module "^2.16.2"
+ node-exports-info "^1.6.0"
+ object-keys "^1.1.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -16803,11 +16830,11 @@ rimraf@^3.0.0, rimraf@^3.0.2:
glob "^7.1.3"
rimraf@^6.1.2:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.2.tgz#9a0f3cea2ab853e81291127422116ecf2a86ae89"
- integrity sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.3.tgz#afbee236b3bd2be331d4e7ce4493bac1718981af"
+ integrity sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==
dependencies:
- glob "^13.0.0"
+ glob "^13.0.3"
package-json-from-dist "^1.0.1"
rimraf@~2.6.2:
@@ -16856,13 +16883,13 @@ sade@^1.7.3:
mri "^1.1.0"
safe-array-concat@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
- integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.4.tgz#a54cc9b61a57f33b42abad3cbdda3a2b38cc5719"
+ integrity sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.2"
- get-intrinsic "^1.2.6"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
+ get-intrinsic "^1.3.0"
has-symbols "^1.1.0"
isarray "^2.0.5"
@@ -16906,14 +16933,15 @@ safe-regex@^2.1.1:
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sanitize-html@^2.17.0:
- version "2.17.0"
- resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.0.tgz#a8f66420a6be981d8fe412e3397cc753782598e4"
- integrity sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==
+ version "2.17.4"
+ resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.4.tgz#7db8b73b0024ccf543978c2a44da8223c4740cb1"
+ integrity sha512-2HW7v2ol/uAM7sX4hbD8Z59OGWmAPrvjL8E71UWlBcj6m+kcF6ilQBLny+cIgY214QJeJT5tQuxKKqX0SQqjGQ==
dependencies:
deepmerge "^4.2.2"
escape-string-regexp "^4.0.0"
- htmlparser2 "^8.0.0"
+ htmlparser2 "^10.1.0"
is-plain-object "^5.0.0"
+ launder "^1.7.1"
parse-srcset "^1.0.2"
postcss "^8.3.11"
@@ -16938,16 +16966,21 @@ sass-loader@^13.3.3:
neo-async "^2.6.2"
sass@^1.95.0:
- version "1.96.0"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.96.0.tgz#dca45b6b08ae829500f448124afc7c15150bbb34"
- integrity sha512-8u4xqqUeugGNCYwr9ARNtQKTOj4KmYiJAVKXf2CTIivTCR51j96htbMKWDru8H5SaQWpyVgTfOF8Ylyf5pun1Q==
+ version "1.99.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.99.0.tgz#ff9d1594da4886249dfaafabbeea2dea2dc74b26"
+ integrity sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==
dependencies:
chokidar "^4.0.0"
- immutable "^5.0.2"
+ immutable "^5.1.5"
source-map-js ">=0.6.2 <2.0.0"
optionalDependencies:
"@parcel/watcher" "^2.4.1"
+sax@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b"
+ integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==
+
sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -17028,33 +17061,14 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.7.1:
- version "7.7.3"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
- integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
+ version "7.8.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.0.tgz#ed0661039fcbcda2ce71f01fa6adbefaa77040df"
+ integrity sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==
-send@0.19.0:
- version "0.19.0"
- resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
- integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
- 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"
-
-send@~0.19.0:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.19.1.tgz#1c2563b2ee4fe510b806b21ec46f355005a369f9"
- integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==
+send@~0.19.0, send@~0.19.1:
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29"
+ integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==
dependencies:
debug "2.6.9"
depd "2.0.0"
@@ -17062,13 +17076,13 @@ send@~0.19.0:
encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
- fresh "0.5.2"
- http-errors "2.0.0"
+ fresh "~0.5.2"
+ http-errors "~2.0.1"
mime "1.6.0"
ms "2.1.3"
- on-finished "2.4.1"
+ on-finished "~2.4.1"
range-parser "~1.2.1"
- statuses "2.0.1"
+ statuses "~2.0.2"
sentence-case@^3.0.4:
version "3.0.4"
@@ -17094,56 +17108,56 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
-serialize-javascript@^6.0.0, serialize-javascript@^6.0.2:
+serialize-javascript@^6.0.0:
version "6.0.2"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
dependencies:
randombytes "^2.1.0"
-serve-handler@6.1.6:
- version "6.1.6"
- resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.6.tgz#50803c1d3e947cd4a341d617f8209b22bd76cfa1"
- integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==
+serve-handler@6.1.7:
+ version "6.1.7"
+ resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.7.tgz#e9bb864e87ee71e8dab874cde44d146b77e3fb78"
+ integrity sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==
dependencies:
bytes "3.0.0"
content-disposition "0.5.2"
mime-types "2.1.18"
- minimatch "3.1.2"
+ minimatch "3.1.5"
path-is-inside "1.0.2"
path-to-regexp "3.3.0"
range-parser "1.2.0"
serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb"
+ integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==
dependencies:
- accepts "~1.3.4"
+ accepts "~1.3.8"
batch "0.6.1"
debug "2.6.9"
escape-html "~1.0.3"
- http-errors "~1.6.2"
- mime-types "~2.1.17"
- parseurl "~1.3.2"
+ http-errors "~1.8.0"
+ mime-types "~2.1.35"
+ parseurl "~1.3.3"
serve-static@~1.16.2:
- version "1.16.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
- integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
+ version "1.16.3"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9"
+ integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==
dependencies:
encodeurl "~2.0.0"
escape-html "~1.0.3"
parseurl "~1.3.3"
- send "0.19.0"
+ send "~0.19.1"
serve@^14.2.5:
- version "14.2.5"
- resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.5.tgz#569e333b99a484b3a6d25acce4a569c8c4f96373"
- integrity sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==
+ version "14.2.6"
+ resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.6.tgz#b5e520dfda9b1ed3b824a8e8d4fd6f69e4c6944c"
+ integrity sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==
dependencies:
"@zeit/schemas" "2.36.0"
- ajv "8.12.0"
+ ajv "8.18.0"
arg "5.0.2"
boxen "7.0.0"
chalk "5.0.1"
@@ -17151,7 +17165,7 @@ serve@^14.2.5:
clipboardy "3.0.0"
compression "1.8.1"
is-port-reachable "4.0.0"
- serve-handler "6.1.6"
+ serve-handler "6.1.7"
update-check "1.5.4"
set-blocking@^2.0.0:
@@ -17195,11 +17209,6 @@ setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
setprototypeof@1.2.0, setprototypeof@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
@@ -17252,12 +17261,12 @@ shell-quote@^1.7.3, shell-quote@^1.8.3:
integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==
side-channel-list@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
- integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127"
+ integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==
dependencies:
es-errors "^1.3.0"
- object-inspect "^1.13.3"
+ object-inspect "^1.13.4"
side-channel-map@^1.0.1:
version "1.0.1"
@@ -17482,9 +17491,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.22"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz#abf5a08a6f5d7279559b669f47f0a43e8f3464ef"
- integrity sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==
+ version "3.0.23"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz#b069e687b1291a32f126893ed76a27a745ee2133"
+ integrity sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==
spdy-transport@^3.0.0:
version "3.0.0"
@@ -17549,9 +17558,9 @@ standalone-single-spa-webpack-plugin@^4.0.0:
integrity sha512-Gp6feJ5nNeHDayevTMmwDDi51wQxVPLV56Cwn4QrN0nAkveeTbGnJu7tObpO0lq7wUxhEjgmdwdwE9woyiCxbQ==
start-server-and-test@^2.1.3:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-2.1.3.tgz#1f8f8f2666131c502a7f8be69cf35418dde3f719"
- integrity sha512-k4EcbNjeg0odaDkAMlIeDVDByqX9PIgL4tivgP2tES6Zd8o+4pTq/HgbWCyA3VHIoZopB+wGnNPKYGGSByNriQ==
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-2.1.5.tgz#15eaa6c152dedccff942ad8e442311bf459f1430"
+ integrity sha512-A/SbXpgXE25ScSkpLLqvGvVZT0ykN6+AzS8tVqMBCTxbJy2Nwuen59opT+afalK5aS+AuQmZs0EsLwjnuDN+/g==
dependencies:
arg "^5.0.2"
bluebird "3.7.2"
@@ -17560,7 +17569,7 @@ start-server-and-test@^2.1.3:
execa "5.1.1"
lazy-ass "1.6.0"
ps-tree "1.2.0"
- wait-on "9.0.3"
+ wait-on "9.0.4"
static-eval@2.1.1:
version "2.1.1"
@@ -17569,12 +17578,7 @@ static-eval@2.1.1:
dependencies:
escodegen "^2.1.0"
-statuses@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
- integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.5.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
@@ -17738,7 +17742,7 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-string_decoder@^1.1.1, string_decoder@^1.3.0:
+string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
@@ -17791,11 +17795,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
ansi-regex "^5.0.1"
strip-ansi@^7.0.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba"
- integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3"
+ integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==
dependencies:
- ansi-regex "^6.0.1"
+ ansi-regex "^6.2.2"
strip-bom@^3.0.0:
version "3.0.0"
@@ -17844,18 +17848,17 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-strnum@^1.0.5:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4"
- integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
+strnum@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.3.0.tgz#81bfbfef53db8c3217ea62a98c026886ec4a2761"
+ integrity sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==
-strtok3@^6.2.4:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0"
- integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==
+strtok3@^10.3.5:
+ version "10.3.5"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-10.3.5.tgz#7213285da0dc3dec0fc8ce5df4b8b7a733f14360"
+ integrity sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==
dependencies:
"@tokenizer/token" "^0.3.0"
- peek-readable "^4.1.0"
style-loader@^3.2.1, style-loader@^3.3.1, style-loader@^3.3.4:
version "3.3.4"
@@ -18049,22 +18052,22 @@ svgo@^1.2.2:
util.promisify "~1.0.0"
svgo@^2.7.0, svgo@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
- integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.2.tgz#8e99b7ba5ac9ed7e3a446063865f61e03223fe6b"
+ integrity sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==
dependencies:
- "@trysound/sax" "0.2.0"
commander "^7.2.0"
css-select "^4.1.3"
css-tree "^1.1.3"
csso "^4.2.0"
picocolors "^1.0.0"
+ sax "^1.5.0"
stable "^0.1.8"
swc-loader@^0.2.3:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8"
- integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.7.tgz#2d1611ab314c5d8342d74aa5e5901b3fbf490de2"
+ integrity sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==
dependencies:
"@swc/counter" "^0.1.3"
@@ -18126,10 +18129,10 @@ tapable@^1.0.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-tapable@^2.0.0, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6"
- integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==
+tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160"
+ integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==
tar-fs@^2.1.1:
version "2.1.4"
@@ -18218,21 +18221,20 @@ terminal-link@^2.0.0:
ansi-escapes "^4.2.1"
supports-hyperlinks "^2.0.0"
-terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.11:
- version "5.3.15"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.15.tgz#0a26860b765eaffa8e840170aabc5b3a3f6f6bb9"
- integrity sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==
+terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.17:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz#8e7caad248183ab9e91ff08a83b0fc9f0439c3c3"
+ integrity sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==
dependencies:
"@jridgewell/trace-mapping" "^0.3.25"
jest-worker "^27.4.5"
schema-utils "^4.3.0"
- serialize-javascript "^6.0.2"
terser "^5.31.1"
terser@^5.0.0, terser@^5.10.0, terser@^5.31.1:
- version "5.44.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.1.tgz#e391e92175c299b8c284ad6ded609e37303b0a9c"
- integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==
+ version "5.47.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.47.1.tgz#99b298e51bc41214304847de1429ec92fd1f7648"
+ integrity sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.15.0"
@@ -18318,17 +18320,17 @@ tinyexec@^0.3.2:
integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==
tinyglobby@^0.2.11, tinyglobby@^0.2.13:
- version "0.2.15"
- resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2"
- integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6"
+ integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==
dependencies:
fdir "^6.5.0"
- picomatch "^4.0.3"
+ picomatch "^4.0.4"
tinymce@^7.9.1:
- version "7.9.1"
- resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-7.9.1.tgz#1b18bad9cb7a3b4b12e3e5a7f29fc7daad0713d7"
- integrity sha512-zaOHwmiP1EqTeLRXAvVriDb00JYnfEjWGPdKEuac7MiZJ5aiDMZ4Unc98Gmajn+PBljOmO1GKV6G0KwWn3+k8A==
+ version "7.9.2"
+ resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-7.9.2.tgz#d47db80fade57da2d54c4a086675d3570c65ce0a"
+ integrity sha512-zS2gn2CPQmZhUqLzkhwYH+WGsx/DIRY/mS18RVzsIcuQg2lN2uzaqoHSJU6DdMUpvXBtBFnLNpumC3QrDwLBzA==
tmpl@1.0.5:
version "1.0.5"
@@ -18362,20 +18364,21 @@ to-space-case@^1.0.0:
to-no-case "^1.0.0"
tocbot@^4.20.1:
- version "4.36.4"
- resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.36.4.tgz#5f82976a2455e5abff44bdff84c89443dc23180f"
- integrity sha512-ffznkKnZ1NdghwR1y8hN6W7kjn4FwcXq32Z1mn35gA7jd8dt2cTVAwL3d0BXXZGPu0Hd0evverUvcYAb/7vn0g==
+ version "4.36.8"
+ resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.36.8.tgz#b6e2e64399f64b65365491f1d7c4506d0928a213"
+ integrity sha512-TpN+Z2YP4DTboeZ3GkUjzkjmG5NhJhXTVuH9EWQ/F4HgONVje9GZ8eNZE4kk88umV5o7hm3faS+eF/7qYwsP2w==
toidentifier@1.0.1, toidentifier@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
-token-types@^4.1.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753"
- integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==
+token-types@^6.1.1, token-types@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.1.2.tgz#18d0fd59b996d421f9f83914d6101c201bd08129"
+ integrity sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==
dependencies:
+ "@borewit/text-codec" "^0.2.1"
"@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1"
@@ -18686,9 +18689,9 @@ typescript@^4.9.5:
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
typo-js@*:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.3.1.tgz#c80f8c7b292caaa17a507226bf74c1cddf6a29e6"
- integrity sha512-elJkpCL6Z77Ghw0Lv0lGnhBAjSTOQ5FhiVOCfOuxhaoTT2xtLVbqikYItK5HHchzPbHEUFAcjOH669T2ZzeCbg==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.3.2.tgz#03a0e0e20b06fede619ffee16d5f4e3e032b8eb2"
+ integrity sha512-Z1YkJ7IIYNrFeOxAlHUercY4Q2I+PhYD/3VkWpJGy/Oqudy3bFpNcQxnv6Oa9fTSXCHPGz1eDoX1bZYm2Z891A==
ua-parser-js@^0.7.18, ua-parser-js@^0.7.30:
version "0.7.41"
@@ -18700,16 +18703,21 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-ufo@^1.5.4, ufo@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b"
- integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==
+ufo@^1.5.4, ufo@^1.6.3:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.4.tgz#7a8fb875fcc6382d2c7d0b3692738b0500a92467"
+ integrity sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==
uglify-js@^3.1.4:
version "3.19.3"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f"
integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==
+uint8array-extras@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.5.0.tgz#10d2a85213de3ada304fea1c454f635c73839e86"
+ integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==
+
unbox-primitive@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
@@ -18725,16 +18733,16 @@ underscore@1.13.6:
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"
integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
+"undici-types@>=7.24.0 <7.24.7":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91"
+ integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==
+
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-undici-types@~7.16.0:
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46"
- integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==
-
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2"
@@ -18891,9 +18899,9 @@ unist-util-visit@^4.0.0:
unist-util-visit-parents "^5.1.1"
unist-util-visit@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6"
- integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468"
+ integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==
dependencies:
"@types/unist" "^3.0.0"
unist-util-is "^6.0.0"
@@ -18901,7 +18909,7 @@ unist-util-visit@^5.0.0:
"universal-navigation@https://github.com/topcoder-platform/universal-navigation#master":
version "1.0.22"
- resolved "https://github.com/topcoder-platform/universal-navigation#23b4bfc61d81496e517049b67b3ea74cb69251fe"
+ resolved "https://github.com/topcoder-platform/universal-navigation#4e70c755fe8065c50b7702a8a52e2df5b310f7f8"
universalify@^0.2.0:
version "0.2.0"
@@ -18968,10 +18976,10 @@ upath@^1.2.0:
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-update-browserslist-db@^1.2.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz#cfb4358afa08b3d5731a2ecd95eebf4ddef8033e"
- integrity sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==
+update-browserslist-db@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d"
+ integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==
dependencies:
escalade "^3.2.0"
picocolors "^1.1.1"
@@ -19102,9 +19110,9 @@ utrie@^1.0.2:
base64-arraybuffer "^1.0.2"
uuid@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912"
- integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.1.tgz#f6d81d2e1c65d00762e5e29b16c5d2d995e208ad"
+ integrity sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==
uuid@^8.3.2:
version "8.3.2"
@@ -19158,9 +19166,9 @@ validate-npm-package-license@^3.0.1:
spdx-expression-parse "^3.0.0"
validator@^13.0.0:
- version "13.15.23"
- resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.23.tgz#59a874f84e4594588e3409ab1edbe64e96d0c62d"
- integrity sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==
+ version "13.15.35"
+ resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.35.tgz#81cf455c51f15b69d8d340be5914f3fab00dbf7f"
+ integrity sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==
vary@~1.1.2:
version "1.1.2"
@@ -19228,14 +19236,14 @@ w3c-xmlserializer@^2.0.0:
dependencies:
xml-name-validator "^3.0.0"
-wait-on@9.0.3:
- version "9.0.3"
- resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.3.tgz#3ea858db0b854039e6aff5f323885aaef25e32bf"
- integrity sha512-13zBnyYvFDW1rBvWiJ6Av3ymAaq8EDQuvxZnPIw3g04UqGi4TyoIJABmfJ6zrvKo9yeFQExNkOk7idQbDJcuKA==
+wait-on@9.0.4:
+ version "9.0.4"
+ resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.4.tgz#ddf3a44ebd18f380621855d52973069ff2cb5b54"
+ integrity sha512-k8qrgfwrPVJXTeFY8tl6BxVHiclK11u72DVKhpybHfUL/K6KM4bdyK9EhIVYGytB5MJe/3lq4Tf0hrjM+pvJZQ==
dependencies:
- axios "^1.13.2"
- joi "^18.0.1"
- lodash "^4.17.21"
+ axios "^1.13.5"
+ joi "^18.0.2"
+ lodash "^4.17.23"
minimist "^1.2.8"
rxjs "^7.8.2"
@@ -19253,10 +19261,10 @@ warning@^4.0.2:
dependencies:
loose-envify "^1.0.0"
-watchpack@^2.2.0, watchpack@^2.4.4:
- version "2.4.4"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947"
- integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==
+watchpack@^2.2.0, watchpack@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102"
+ integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -19463,10 +19471,10 @@ webpack-sources@^2.2.0:
source-list-map "^2.0.1"
source-map "^0.6.1"
-webpack-sources@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723"
- integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==
+webpack-sources@^3.3.4:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.4.1.tgz#009d110999ebd9fb3a6fa8d32eec6f84d940e65d"
+ integrity sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==
webpack-virtual-modules@^0.5.0:
version "0.5.0"
@@ -19479,9 +19487,9 @@ webpack-virtual-modules@^0.6.2:
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
webpack@5, webpack@^5.103.0, webpack@^5.64.4:
- version "5.103.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.103.0.tgz#17a7c5a5020d5a3a37c118d002eade5ee2c6f3da"
- integrity sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==
+ version "5.106.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.106.2.tgz#ca8174b4fd80f055cc5a45fcc5577d6db76c8ac5"
+ integrity sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==
dependencies:
"@types/eslint-scope" "^3.7.7"
"@types/estree" "^1.0.8"
@@ -19489,25 +19497,24 @@ webpack@5, webpack@^5.103.0, webpack@^5.64.4:
"@webassemblyjs/ast" "^1.14.1"
"@webassemblyjs/wasm-edit" "^1.14.1"
"@webassemblyjs/wasm-parser" "^1.14.1"
- acorn "^8.15.0"
+ acorn "^8.16.0"
acorn-import-phases "^1.0.3"
- browserslist "^4.26.3"
+ browserslist "^4.28.1"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.17.3"
- es-module-lexer "^1.2.1"
+ enhanced-resolve "^5.20.0"
+ es-module-lexer "^2.0.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.11"
- json-parse-even-better-errors "^2.3.1"
loader-runner "^4.3.1"
- mime-types "^2.1.27"
+ mime-db "^1.54.0"
neo-async "^2.6.2"
schema-utils "^4.3.3"
tapable "^2.3.0"
- terser-webpack-plugin "^5.3.11"
- watchpack "^2.4.4"
- webpack-sources "^3.3.3"
+ terser-webpack-plugin "^5.3.17"
+ watchpack "^2.5.1"
+ webpack-sources "^3.3.4"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
@@ -19612,9 +19619,9 @@ which-module@^2.0.0:
integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.19, which-typed-array@^1.1.2:
- version "1.1.19"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
- integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
+ version "1.1.20"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122"
+ integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==
dependencies:
available-typed-arrays "^1.0.7"
call-bind "^1.0.8"
@@ -19910,15 +19917,20 @@ ws@^7.3.1, ws@^7.4.6:
integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
ws@^8.13.0, ws@^8.2.3:
- version "8.18.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472"
- integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==
+ version "8.20.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.1.tgz#91a9ae2b312ccf98e0a85ec499b48cef45ab0ddb"
+ integrity sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==
xml-name-validator@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+xml-naming@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/xml-naming/-/xml-naming-0.1.0.tgz#8ab7106c5b8d23caa2fabac1cadf17136379fbd8"
+ integrity sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==
+
xmlbuilder@^15.1.1:
version "15.1.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
@@ -19960,9 +19972,9 @@ yaml@2.3.1:
integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
- integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.3.tgz#76e407ed95c42684fb8e14641e5de62fe65bbcb3"
+ integrity sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==
yargs-parser@^18.1.2:
version "18.1.3"
From cb286b12d9dc5bb7a00be80b4b282f582cd25daf Mon Sep 17 00:00:00 2001
From: Kiril Kartunov
Date: Tue, 19 May 2026 09:20:05 +0300
Subject: [PATCH 02/56] AI review templates v1
---
src/apps/admin/src/admin-app.routes.tsx | 10 +
.../AiReviewTemplatesPage.module.scss | 254 ++++++++
.../AiReviewTemplatesPage.tsx | 284 +++++++++
.../CreateTemplateModal.module.scss | 144 +++++
.../review-templates/CreateTemplateModal.tsx | 552 ++++++++++++++++++
.../admin/src/ai/review-templates/index.ts | 1 +
src/apps/admin/src/config/routes.config.ts | 1 +
.../Tab/config/system-admin-tabs-config.ts | 5 +
.../src/lib/services/ai-templates.service.ts | 81 +++
9 files changed, 1332 insertions(+)
create mode 100644 src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss
create mode 100644 src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx
create mode 100644 src/apps/admin/src/ai/review-templates/CreateTemplateModal.module.scss
create mode 100644 src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx
create mode 100644 src/apps/admin/src/ai/review-templates/index.ts
create mode 100644 src/apps/admin/src/lib/services/ai-templates.service.ts
diff --git a/src/apps/admin/src/admin-app.routes.tsx b/src/apps/admin/src/admin-app.routes.tsx
index afd3b1645..1d6da0bd2 100644
--- a/src/apps/admin/src/admin-app.routes.tsx
+++ b/src/apps/admin/src/admin-app.routes.tsx
@@ -7,6 +7,7 @@ import {
} from '~/libs/core'
import {
+ aiReviewTemplatesRouteId,
aiReviewWorkflowsRouteId,
aiRouteId,
billingAccountRouteId,
@@ -180,6 +181,10 @@ const AiReviewWorkflowsPage: LazyLoadedComponent = lazyLoad(
() => import('./ai/review-workflows/AiReviewWorkflowsPage'),
'AiReviewWorkflowsPage',
)
+const AiReviewTemplatesPage: LazyLoadedComponent = lazyLoad(
+ () => import('./ai/review-templates/AiReviewTemplatesPage'),
+ 'AiReviewTemplatesPage',
+)
export const toolTitle: string = ToolTitle.admin
@@ -434,6 +439,11 @@ export const adminRoutes: ReadonlyArray = [
id: 'ai-review-workflows-page',
route: aiReviewWorkflowsRouteId,
},
+ {
+ element: ,
+ id: 'ai-review-templates-page',
+ route: aiReviewTemplatesRouteId,
+ },
],
element: ,
id: aiRouteId,
diff --git a/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss
new file mode 100644
index 000000000..516921717
--- /dev/null
+++ b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss
@@ -0,0 +1,254 @@
+@import '@libs/ui/styles/includes';
+@import '../../lib/styles/includes';
+
+.filtersWrapper {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: $sp-4;
+ padding: $sp-4;
+ background-color: $black-5;
+ border-bottom: 1px solid $black-20;
+}
+
+.filters {
+ display: flex;
+ align-items: center;
+ gap: $sp-4;
+ flex-wrap: nowrap;
+
+ > *:not(button) {
+ min-width: 200px;
+ }
+}
+
+@media (max-width: #{$mobile-max}) {
+ .filtersWrapper {
+ flex-direction: column;
+ align-items: stretch;
+ }
+
+ .filters {
+ flex-direction: column;
+ align-items: stretch;
+
+ > * {
+ min-width: auto;
+ }
+ }
+}
+
+.templatesList {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-3;
+ margin-bottom: $sp-4;
+}
+
+.templateItem {
+ border: 1px solid $black-20;
+ border-radius: $sp-2;
+ overflow: hidden;
+}
+
+.templateHeader {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-2;
+ padding: $sp-3 $sp-4;
+ background-color: $black-5;
+ cursor: pointer;
+ transition: background-color 0.2s ease;
+
+ &:hover {
+ background-color: $black-10;
+ }
+}
+
+.templateHeaderTop {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: $sp-3;
+}
+
+.templateHeaderLeft {
+ display: flex;
+ align-items: center;
+ gap: $sp-2;
+ flex: 1;
+ min-width: 0;
+}
+
+.templateHeaderRight {
+ display: flex;
+ align-items: center;
+ gap: $sp-2;
+ flex-shrink: 0;
+}
+
+.templateDescription {
+ font-size: 13px;
+ color: $black-60;
+ padding-left: 20px;
+ line-height: 1.4;
+}
+
+.expandIcon {
+ font-size: 10px;
+ color: $black-60;
+ width: 12px;
+ flex-shrink: 0;
+}
+
+.templateName {
+ font-weight: 600;
+ font-size: 15px;
+ color: $black-100;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.templateMeta {
+ font-size: 11px;
+ color: $black-60;
+ background-color: $black-10;
+ padding: 3px $sp-2;
+ border-radius: 3px;
+ white-space: nowrap;
+}
+
+.modeBadge {
+ font-size: 10px;
+ font-weight: 600;
+ text-transform: uppercase;
+ color: $tc-white;
+ background-color: $turq-160;
+ padding: 3px $sp-2;
+ border-radius: 3px;
+ white-space: nowrap;
+}
+
+.thresholdBadge {
+ font-size: 11px;
+ font-weight: 500;
+ color: $black-80;
+ background-color: $black-10;
+ padding: 3px $sp-2;
+ border-radius: 3px;
+ white-space: nowrap;
+}
+
+.workflowCount {
+ font-size: 12px;
+ color: $black-60;
+ white-space: nowrap;
+}
+
+.disabledBadge {
+ font-size: 10px;
+ font-weight: 600;
+ text-transform: uppercase;
+ color: $tc-white;
+ background-color: $red-100;
+ padding: 3px $sp-2;
+ border-radius: 3px;
+}
+
+.workflowsTree {
+ padding: $sp-3 $sp-4;
+ background-color: $tc-white;
+ border-top: 1px solid $black-10;
+}
+
+.workflowItem {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: $sp-3;
+ padding: $sp-3;
+ margin-left: $sp-4;
+ cursor: pointer;
+ border-radius: $sp-1;
+ border: 1px solid transparent;
+ transition: all 0.2s ease;
+
+ &:hover {
+ background-color: $black-5;
+ border-color: $black-20;
+ }
+
+ &:not(:last-child) {
+ margin-bottom: $sp-2;
+ }
+}
+
+.workflowLeft {
+ display: flex;
+ align-items: center;
+ gap: $sp-2;
+ flex: 1;
+ min-width: 0;
+}
+
+.workflowRight {
+ display: flex;
+ align-items: center;
+ gap: $sp-3;
+ flex-shrink: 0;
+}
+
+.treeLine {
+ font-family: monospace;
+ color: $black-40;
+ font-size: 14px;
+ flex-shrink: 0;
+}
+
+.workflowNameWrap {
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+ min-width: 0;
+}
+
+.workflowName {
+ font-size: 14px;
+ color: $link-blue-dark;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ &:hover {
+ text-decoration: underline;
+ }
+}
+
+.workflowNameDisabled {
+ font-size: 14px;
+ color: $black-40;
+ text-decoration: line-through;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.workflowHint {
+ font-size: 11px;
+ color: $black-40;
+ font-style: italic;
+}
+
+.workflowWeight {
+ font-size: 13px;
+ font-weight: 600;
+ color: $black-80;
+}
+
+.workflowGating {
+ font-size: 12px;
+ color: $orange-140;
+}
+
+
diff --git a/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx
new file mode 100644
index 000000000..a91b370ec
--- /dev/null
+++ b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx
@@ -0,0 +1,284 @@
+import { ChangeEvent, FC, useCallback, useEffect, useMemo, useState } from 'react'
+
+import { Button, InputSelect, InputSelectOption } from '~/libs/ui'
+
+import { PageWrapper, TableLoading, TableNoRecord } from '../../lib'
+import { TableWrapper } from '../../lib/components/common/TableWrapper'
+import { ChallengeTrack, ChallengeType } from '../../lib/models'
+import { getChallengeTracks, getChallengeTypes } from '../../lib/services/challenge-management.service'
+import { AiWorkflow } from '../../lib/services/ai-workflows.service'
+import {
+ AiReviewTemplate,
+ AiReviewTemplatesFilter,
+ getAiReviewTemplates,
+ TemplateWorkflowItem,
+} from '../../lib/services/ai-templates.service'
+import { WorkflowDetailsModal } from '../review-workflows/WorkflowDetailsModal'
+
+import { CreateTemplateModal } from './CreateTemplateModal'
+import styles from './AiReviewTemplatesPage.module.scss'
+
+interface WorkflowItemProps {
+ item: TemplateWorkflowItem
+ onClick: (workflow: AiWorkflow) => void
+}
+
+const WorkflowItem: FC = (props: WorkflowItemProps) => {
+ const workflow: AiWorkflow = props.item.workflow
+
+ const handleClick = useCallback(() => {
+ props.onClick(workflow)
+ }, [props, workflow])
+
+ return (
+
+
+
└─
+
+
+ {workflow.name}
+
+ {workflow.disabled && (
+ This workflow is disabled
+ )}
+
+
+
+ {props.item.isGating && (
+ Gating
+ )}
+
+ {props.item.weightPercent}
+ %
+
+
+
+ )
+}
+
+interface TemplateItemProps {
+ template: AiReviewTemplate
+ onWorkflowClick: (workflow: AiWorkflow) => void
+}
+
+const TemplateItem: FC = (props: TemplateItemProps) => {
+ const [expanded, setExpanded] = useState(true)
+ const workflows = props.template.workflows || []
+
+ const handleToggleExpand = useCallback(() => {
+ setExpanded(prev => !prev)
+ }, [])
+
+ return (
+
+
+
+
+ {expanded ? '▼' : '▶'}
+
+ {props.template.title || props.template.id}
+
+
+
+
+ {props.template.challengeTrack}
+ {' / '}
+ {props.template.challengeType}
+
+ {props.template.mode}
+
+ Pass:
+ {' '}
+ {props.template.minPassingThreshold}
+ %
+
+
+
+ {props.template.description && (
+
+ {props.template.description}
+
+ )}
+
+ {expanded && workflows.length > 0 && (
+
+ {workflows.map(item => (
+
+ ))}
+
+ )}
+
+ )
+}
+
+export const AiReviewTemplatesPage: FC = () => {
+ const [isLoading, setIsLoading] = useState(true)
+ const [templates, setTemplates] = useState([])
+ const [tracks, setTracks] = useState([])
+ const [types, setTypes] = useState([])
+ const [filter, setFilter] = useState({})
+ const [detailModal, setDetailModal] = useState<{ open: boolean; workflow?: AiWorkflow }>({
+ open: false,
+ })
+ const [createModalOpen, setCreateModalOpen] = useState(false)
+
+ const trackOptions: InputSelectOption[] = useMemo(() => [
+ { label: 'All Tracks', value: '' },
+ ...tracks.map(t => {
+ const trackValue: string = (t as ChallengeTrack & { track?: string }).track || t.name.toUpperCase()
+ return { label: t.name, value: trackValue }
+ }),
+ ], [tracks])
+
+ const typeOptions: InputSelectOption[] = useMemo(() => [
+ { label: 'All Types', value: '' },
+ ...types.map(t => ({ label: t.name, value: t.abbreviation })),
+ ], [types])
+
+ useEffect(() => {
+ getChallengeTracks()
+ .then(setTracks)
+ .catch(() => setTracks([]))
+ getChallengeTypes()
+ .then(setTypes)
+ .catch(() => setTypes([]))
+ }, [])
+
+ const loadTemplates = useCallback((filterParams: AiReviewTemplatesFilter) => {
+ setIsLoading(true)
+ getAiReviewTemplates(filterParams)
+ .then(data => {
+ setTemplates(data || [])
+ })
+ .catch(() => {
+ setTemplates([])
+ })
+ .finally(() => setIsLoading(false))
+ }, [])
+
+ useEffect(() => {
+ loadTemplates(filter)
+ }, [filter, loadTemplates])
+
+ const handleTrackChange = useCallback((event: ChangeEvent) => {
+ setFilter(prev => ({ ...prev, challengeTrack: event.target.value || undefined }))
+ }, [])
+
+ const handleTypeChange = useCallback((event: ChangeEvent) => {
+ setFilter(prev => ({ ...prev, challengeType: event.target.value || undefined }))
+ }, [])
+
+ const handleReset = useCallback(() => {
+ setFilter({})
+ }, [])
+
+ const handleWorkflowClick = useCallback((workflow: AiWorkflow) => {
+ setDetailModal({ open: true, workflow })
+ }, [])
+
+ const handleCloseDetail = useCallback(() => {
+ setDetailModal({ open: false })
+ }, [])
+
+ const handleOpenCreateModal = useCallback(() => {
+ setCreateModalOpen(true)
+ }, [])
+
+ const handleCloseCreateModal = useCallback(() => {
+ setCreateModalOpen(false)
+ }, [])
+
+ const handleTemplateCreated = useCallback(() => {
+ loadTemplates(filter)
+ }, [filter, loadTemplates])
+
+ const hasFilters: boolean = !!filter.challengeTrack || !!filter.challengeType
+
+ return (
+
+
+
+
+
+ {hasFilters && (
+
+ )}
+
+
+
+
+
+
+ {isLoading && }
+
+ {!isLoading && templates.length === 0 && (
+
+ )}
+
+ {!isLoading && templates.length > 0 && (
+
+ {templates.map(template => (
+
+ ))}
+
+ )}
+
+
+
+
+
+
+ )
+}
+
+export default AiReviewTemplatesPage
diff --git a/src/apps/admin/src/ai/review-templates/CreateTemplateModal.module.scss b/src/apps/admin/src/ai/review-templates/CreateTemplateModal.module.scss
new file mode 100644
index 000000000..9b8bddf4a
--- /dev/null
+++ b/src/apps/admin/src/ai/review-templates/CreateTemplateModal.module.scss
@@ -0,0 +1,144 @@
+@import '@libs/ui/styles/includes';
+
+.container {
+ display: flex;
+ flex-direction: column;
+ gap: $sp-4;
+ position: relative;
+}
+
+.loadingContainer {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 200px;
+}
+
+.formGrid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: $sp-4;
+}
+
+.toggles {
+ display: flex;
+ gap: $sp-6;
+}
+
+.toggleItem {
+ display: flex;
+ align-items: center;
+ gap: $sp-2;
+}
+
+.toggleLabel {
+ font-size: 14px;
+ color: $black-80;
+}
+
+.workflowsSection {
+ border: 1px solid $black-20;
+ border-radius: $sp-2;
+ padding: $sp-4;
+}
+
+.workflowsHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: $sp-3;
+
+ h4 {
+ margin: 0;
+ font-size: 15px;
+ font-weight: 600;
+ }
+}
+
+.workflowRow {
+ display: flex;
+ align-items: center;
+ gap: $sp-4;
+ padding: $sp-3;
+ background-color: $black-5;
+ border-radius: $sp-2;
+ margin-bottom: $sp-2;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+}
+
+.workflowSelect {
+ flex: 1;
+ min-width: 250px;
+
+ // Align height with other inputs
+ :global(.input-select-react__control) {
+ min-height: 40px;
+ }
+}
+
+.weightInput {
+ width: 120px;
+ flex-shrink: 0;
+
+ input {
+ height: 40px;
+ }
+}
+
+.removeBtn {
+ background: none;
+ border: none;
+ cursor: pointer;
+ padding: $sp-2;
+ color: $red-100;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
+
+ &:hover {
+ color: $red-140;
+ }
+
+ &:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+ }
+
+ svg {
+ width: 20px;
+ height: 20px;
+ }
+}
+
+.noWorkflows {
+ font-size: 13px;
+ color: $black-60;
+ text-align: center;
+ padding: $sp-4;
+ margin: 0;
+}
+
+.errorText {
+ font-size: 12px;
+ color: $red-100;
+ margin: 0 0 $sp-2;
+}
+
+.actionButtons {
+ display: flex;
+ justify-content: flex-end;
+ gap: $sp-2;
+}
+
+.loadingOverlay {
+ position: absolute;
+ inset: 0;
+ background: rgb(255 255 255 / 80%);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
diff --git a/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx b/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx
new file mode 100644
index 000000000..d7c6dd4eb
--- /dev/null
+++ b/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx
@@ -0,0 +1,552 @@
+import * as yup from 'yup'
+import { FC, useCallback, useEffect, useMemo, useState } from 'react'
+import {
+ Controller,
+ ControllerRenderProps,
+ useFieldArray,
+ useForm,
+ UseFormReturn,
+} from 'react-hook-form'
+import _ from 'lodash'
+
+import {
+ BaseModal,
+ Button,
+ FormToggleSwitch,
+ IconOutline,
+ InputSelect,
+ InputSelectOption,
+ InputSelectReact,
+ InputText,
+ InputTextarea,
+ LoadingSpinner,
+} from '~/libs/ui'
+import { yupResolver } from '@hookform/resolvers/yup'
+
+import { ChallengeTrack, ChallengeType } from '../../lib/models'
+import { getChallengeTracks, getChallengeTypes } from '../../lib/services/challenge-management.service'
+import { AiWorkflow, getAiWorkflows } from '../../lib/services/ai-workflows.service'
+import { createAiReviewTemplate, CreateAiReviewTemplateRequest } from '../../lib/services/ai-templates.service'
+
+import styles from './CreateTemplateModal.module.scss'
+
+interface WorkflowFormItem {
+ isGating: boolean
+ weightPercent: number
+ workflowId: string
+}
+
+interface FormValues {
+ autoFinalize: boolean
+ challengeTrack: string
+ challengeType: string
+ description: string
+ disabled: boolean
+ minPassingThreshold: number
+ mode: string
+ title: string
+ workflows: WorkflowFormItem[]
+}
+
+const MODE_OPTIONS: InputSelectOption[] = [
+ { label: 'AI Gating', value: 'AI_GATING' },
+ { label: 'AI Only', value: 'AI_ONLY' },
+]
+
+const schema = yup.object()
+ .shape({
+ autoFinalize: yup.boolean()
+ .required(),
+ challengeTrack: yup.string()
+ .required('Challenge track is required'),
+ challengeType: yup.string()
+ .required('Challenge type is required'),
+ description: yup.string()
+ .required('Description is required'),
+ disabled: yup.boolean()
+ .required(),
+ minPassingThreshold: yup
+ .number()
+ .required('Passing threshold is required')
+ .min(0, 'Must be at least 0')
+ .max(100, 'Must be at most 100'),
+ mode: yup.string()
+ .required('Mode is required'),
+ title: yup.string()
+ .required('Title is required')
+ .min(3, 'Title must be at least 3 characters'),
+ workflows: yup
+ .array()
+ .of(
+ yup.object()
+ .shape({
+ isGating: yup.boolean()
+ .required(),
+ weightPercent: yup
+ .number()
+ .required('Weight is required')
+ .min(0, 'Must be at least 0')
+ .max(100, 'Must be at most 100'),
+ workflowId: yup.string()
+ .required('Workflow is required'),
+ }),
+ )
+ .min(1, 'At least one workflow is required')
+ .test(
+ 'sum-100',
+ 'Total workflow weights must equal 100%',
+ workflows => {
+ if (!workflows || workflows.length === 0) {
+ return true
+ }
+
+ const sum: number = workflows.reduce(
+ (acc: number, w) => acc + (w?.weightPercent || 0),
+ 0,
+ )
+ return sum === 100
+ },
+ ),
+ })
+
+interface Props {
+ onClose: () => void
+ onCreated: () => void
+ open: boolean
+}
+
+export const CreateTemplateModal: FC = (props: Props) => {
+ const [isSubmitting, setIsSubmitting] = useState(false)
+ const [tracks, setTracks] = useState([])
+ const [types, setTypes] = useState([])
+ const [workflows, setWorkflows] = useState([])
+ const [isLoadingData, setIsLoadingData] = useState(true)
+
+ const {
+ register,
+ handleSubmit,
+ control,
+ formState: { errors, isDirty },
+ reset,
+ watch,
+ }: UseFormReturn = useForm({
+ defaultValues: {
+ autoFinalize: false,
+ challengeTrack: '',
+ challengeType: '',
+ description: '',
+ disabled: false,
+ minPassingThreshold: 70,
+ mode: 'AI_GATING',
+ title: '',
+ workflows: [],
+ },
+ mode: 'all',
+ resolver: yupResolver(schema) as never,
+ })
+
+ const fieldArrayResult = useFieldArray({
+ control,
+ name: 'workflows',
+ })
+ const fields = fieldArrayResult.fields
+ const append = fieldArrayResult.append
+ const remove = fieldArrayResult.remove
+
+ const trackOptions: InputSelectOption[] = useMemo(() => [
+ { label: 'Select track', value: '' },
+ ...tracks.map(t => {
+ const trackValue: string = (t as ChallengeTrack & { track?: string }).track || t.name.toUpperCase()
+ return { label: t.name, value: trackValue }
+ }),
+ ], [tracks])
+
+ const typeOptions: InputSelectOption[] = useMemo(() => [
+ { label: 'Select type', value: '' },
+ ...types.map(t => ({ label: t.name, value: t.abbreviation })),
+ ], [types])
+
+ const workflowOptions: InputSelectOption[] = useMemo(() => workflows
+ .filter(w => !w.disabled)
+ .map(w => ({ label: w.name, value: w.id })), [workflows])
+
+ const watchedWorkflows: WorkflowFormItem[] = watch('workflows') || []
+ const selectedWorkflowIds: string[] = watchedWorkflows.map(
+ (w: WorkflowFormItem) => w.workflowId,
+ )
+
+ const availableWorkflowOptions: InputSelectOption[] = useMemo(
+ () => workflowOptions.filter(o => !selectedWorkflowIds.includes(o.value as string)),
+ [workflowOptions, selectedWorkflowIds],
+ )
+
+ useEffect(() => {
+ if (props.open) {
+ setIsLoadingData(true)
+ Promise.all([
+ getChallengeTracks(),
+ getChallengeTypes(),
+ getAiWorkflows(),
+ ])
+ .then(([tracksData, typesData, workflowsData]) => {
+ setTracks(tracksData || [])
+ setTypes(typesData || [])
+ setWorkflows(workflowsData || [])
+ })
+ .catch(() => {
+ setTracks([])
+ setTypes([])
+ setWorkflows([])
+ })
+ .finally(() => setIsLoadingData(false))
+ }
+ }, [props.open])
+
+ const handleClose = useCallback(() => {
+ if (!isSubmitting) {
+ reset()
+ props.onClose()
+ }
+ }, [isSubmitting, props, reset])
+
+ const handleAddWorkflow = useCallback(() => {
+ append({ isGating: false, weightPercent: 100, workflowId: '' })
+ }, [append])
+
+ const onSubmit = useCallback((data: FormValues) => {
+ setIsSubmitting(true)
+
+ const formula: Record = {}
+ data.workflows.forEach((w: WorkflowFormItem) => {
+ formula[w.workflowId] = w.weightPercent / 100
+ })
+
+ const request: CreateAiReviewTemplateRequest = {
+ autoFinalize: data.autoFinalize,
+ challengeTrack: data.challengeTrack,
+ challengeType: data.challengeType,
+ description: data.description || '',
+ disabled: data.disabled,
+ formula,
+ minPassingThreshold: data.minPassingThreshold,
+ mode: data.mode,
+ title: data.title,
+ workflows: data.workflows.map(w => ({
+ isGating: w.isGating,
+ weightPercent: w.weightPercent,
+ workflowId: w.workflowId,
+ })),
+ }
+
+ createAiReviewTemplate(request)
+ .then(() => {
+ reset()
+ props.onCreated()
+ props.onClose()
+ })
+ .catch(() => {
+ // Error handling done via toast in xhr
+ })
+ .finally(() => setIsSubmitting(false))
+ }, [props, reset])
+
+ return (
+
+ {isLoadingData ? (
+
+
+
+ ) : (
+
+ )}
+
+ )
+}
+
+export default CreateTemplateModal
diff --git a/src/apps/admin/src/ai/review-templates/index.ts b/src/apps/admin/src/ai/review-templates/index.ts
new file mode 100644
index 000000000..7a9332eb1
--- /dev/null
+++ b/src/apps/admin/src/ai/review-templates/index.ts
@@ -0,0 +1 @@
+export { AiReviewTemplatesPage } from './AiReviewTemplatesPage'
diff --git a/src/apps/admin/src/config/routes.config.ts b/src/apps/admin/src/config/routes.config.ts
index 7a25332f8..2940f32cb 100644
--- a/src/apps/admin/src/config/routes.config.ts
+++ b/src/apps/admin/src/config/routes.config.ts
@@ -20,3 +20,4 @@ export const platformRouteId = 'platform'
export const paymentsRouteId = 'payments'
export const aiRouteId = 'ai'
export const aiReviewWorkflowsRouteId = 'review-workflows'
+export const aiReviewTemplatesRouteId = 'review-templates'
diff --git a/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts b/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts
index 55aa8a735..dff10303a 100644
--- a/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts
+++ b/src/apps/admin/src/lib/components/common/Tab/config/system-admin-tabs-config.ts
@@ -3,6 +3,7 @@ import _ from 'lodash'
import { TabsNavItem } from '~/libs/ui'
import { isAdministrator } from '~/apps/admin/src/lib/utils/access'
import {
+ aiReviewTemplatesRouteId,
aiReviewWorkflowsRouteId,
aiRouteId,
billingAccountRouteId,
@@ -91,6 +92,10 @@ export const SystemAdminTabsConfig: TabsNavItem[] = [
id: `${aiRouteId}/${aiReviewWorkflowsRouteId}`,
title: 'AI Review Workflows',
},
+ {
+ id: `${aiRouteId}/${aiReviewTemplatesRouteId}`,
+ title: 'AI Review Templates',
+ },
],
id: aiRouteId,
title: 'AI',
diff --git a/src/apps/admin/src/lib/services/ai-templates.service.ts b/src/apps/admin/src/lib/services/ai-templates.service.ts
new file mode 100644
index 000000000..b7d6cd324
--- /dev/null
+++ b/src/apps/admin/src/lib/services/ai-templates.service.ts
@@ -0,0 +1,81 @@
+import { EnvironmentConfig } from '~/config'
+import { xhrGetAsync, xhrPostAsync } from '~/libs/core'
+
+import { AiWorkflow } from './ai-workflows.service'
+
+export interface TemplateWorkflowItem {
+ id: string
+ workflowId: string
+ weightPercent: number
+ isGating: boolean
+ workflow: AiWorkflow
+}
+
+export interface AiReviewTemplate {
+ id: string
+ title: string
+ description: string
+ challengeTrack: string
+ challengeType: string
+ version: number
+ minPassingThreshold: number
+ mode: string
+ autoFinalize: boolean
+ disabled: boolean
+ createdAt: string
+ updatedAt: string
+ workflows: TemplateWorkflowItem[]
+}
+
+export interface AiReviewTemplatesFilter {
+ challengeTrack?: string
+ challengeType?: string
+}
+
+export async function getAiReviewTemplates(
+ filter?: AiReviewTemplatesFilter,
+): Promise {
+ const params = new URLSearchParams()
+
+ if (filter?.challengeTrack) {
+ params.append('challengeTrack', filter.challengeTrack)
+ }
+
+ if (filter?.challengeType) {
+ params.append('challengeType', filter.challengeType)
+ }
+
+ const query: string = params.toString()
+ const url: string = `${EnvironmentConfig.API.V6}/ai-review/templates${query ? `?${query}` : ''}`
+ const response = await xhrGetAsync(url)
+ return response
+}
+
+export interface CreateTemplateWorkflow {
+ workflowId: string
+ weightPercent: number
+ isGating: boolean
+}
+
+export interface CreateAiReviewTemplateRequest {
+ challengeTrack: string
+ challengeType: string
+ title: string
+ description: string
+ minPassingThreshold: number
+ mode: string
+ autoFinalize: boolean
+ formula?: Record
+ disabled: boolean
+ workflows: CreateTemplateWorkflow[]
+}
+
+export async function createAiReviewTemplate(
+ data: CreateAiReviewTemplateRequest,
+): Promise {
+ const response = await xhrPostAsync(
+ `${EnvironmentConfig.API.V6}/ai-review/templates`,
+ data,
+ )
+ return response
+}
From b37db5534fc6a6a137ecbe82c1e65c6d5f530ee8 Mon Sep 17 00:00:00 2001
From: Harshit Chudasama
Date: Tue, 19 May 2026 12:39:01 +0530
Subject: [PATCH 03/56] Updated Task Description in Payment Details
---
src/apps/wallet-admin/src/lib/models/WinningDetail.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/apps/wallet-admin/src/lib/models/WinningDetail.ts b/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
index 3a5881f22..5a0a2e0c1 100644
--- a/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
+++ b/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
@@ -43,6 +43,7 @@ export interface PaymentTaskDetails {
projectName?: string
paymentApproverHandle?: string
paymentCreatorHandle?: string
+ description?: string
}
export interface WinningPaymentDetails {
From 1f8e3693b1df861b656ed0d7dcd7f0de40adbf38 Mon Sep 17 00:00:00 2001
From: Harshit Chudasama
Date: Tue, 19 May 2026 12:40:10 +0530
Subject: [PATCH 04/56] Updated Task Description in Payment Details
---
.../src/lib/components/payment-view/PaymentView.tsx | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index a597eee66..6bb654d50 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -330,11 +330,14 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
Task Description
- {props.payment.description
- ? props.payment.description.substring(0, 500)
+ {paymentDetails?.taskDetails?.description
+ ? paymentDetails.taskDetails.description
+ .replace(/<[^>]*>/g, '')
+ .substring(0, 500)
: '-'}
+
Project Name
{buildWorkManagerProjectUrl(paymentDetails?.taskDetails) && paymentDetails?.taskDetails?.projectName
From 38763bfa66d0acf4d0980004b4b91ec1c60179b8 Mon Sep 17 00:00:00 2001
From: Harshit Chudasama
Date: Tue, 19 May 2026 12:56:58 +0530
Subject: [PATCH 05/56] Updated Task Description in Payment Details
---
.../src/lib/components/payment-view/PaymentView.tsx | 5 ++---
.../src/lib/components/payment-view/payment-view.utils.ts | 6 ++++++
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index 6bb654d50..3d0696ca9 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -25,6 +25,7 @@ import {
formatOptionalDate,
formatOptionalText,
renderOptionalLinkedText,
+ stripHtml,
} from './payment-view.utils'
import styles from './PaymentView.module.scss'
@@ -331,9 +332,7 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
Task Description
{paymentDetails?.taskDetails?.description
- ? paymentDetails.taskDetails.description
- .replace(/<[^>]*>/g, '')
- .substring(0, 500)
+ ? stripHtml(paymentDetails.taskDetails.description)
: '-'}
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts b/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
index 8c5b25425..04fcb008c 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
@@ -157,3 +157,9 @@ export function formatOptionalDate(
year: 'numeric',
})
}
+
+export function stripHtml(html: string, maxLength: number = 500): string {
+ const div = document.createElement('div')
+ div.innerHTML = html
+ return (div.textContent ?? div.innerText ?? '').substring(0, maxLength)
+}
From 4b640bb65be1e3e3c2f54cc41520635a6a28b88f Mon Sep 17 00:00:00 2001
From: Kiril Kartunov
Date: Tue, 19 May 2026 10:49:43 +0300
Subject: [PATCH 06/56] ai review templates manage
---
.../AiReviewTemplatesPage.module.scss | 102 +++++++++--
.../AiReviewTemplatesPage.tsx | 165 +++++++++++++++---
.../review-templates/CreateTemplateModal.tsx | 120 +++++++++----
.../src/lib/services/ai-templates.service.ts | 21 ++-
4 files changed, 329 insertions(+), 79 deletions(-)
diff --git a/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss
index 516921717..7a2cb919b 100644
--- a/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss
+++ b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.module.scss
@@ -87,6 +87,37 @@
flex-shrink: 0;
}
+.editButton,
+.deleteButton {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 28px;
+ height: 28px;
+ padding: 0;
+ border: none;
+ border-radius: 50%;
+ background-color: transparent;
+ color: $black-40;
+ cursor: pointer;
+ transition: all 0.2s ease;
+
+ svg {
+ width: 16px;
+ height: 16px;
+ }
+}
+
+.editButton:hover {
+ background-color: rgba($blue-110, 0.1);
+ color: $blue-110;
+}
+
+.deleteButton:hover {
+ background-color: rgba($red-100, 0.1);
+ color: $red-100;
+}
+
.templateDescription {
font-size: 13px;
color: $black-60;
@@ -94,6 +125,13 @@
line-height: 1.4;
}
+.templateMetas {
+ display: flex;
+ align-items: center;
+ gap: $sp-2;
+ padding-left: 20px;
+}
+
.expandIcon {
font-size: 10px;
color: $black-60;
@@ -111,33 +149,63 @@
}
.templateMeta {
- font-size: 11px;
- color: $black-60;
- background-color: $black-10;
- padding: 3px $sp-2;
- border-radius: 3px;
+ display: inline-flex;
+ align-items: center;
+ gap: $sp-1;
+ font-size: 12px;
+ font-weight: 500;
+ color: $purple-120;
+ background: linear-gradient(135deg, rgba($purple-25, 0.6), rgba($purple-25, 0.3));
+ border: 1px solid rgba($purple-100, 0.2);
+ padding: 4px $sp-3;
+ border-radius: 16px;
white-space: nowrap;
+
+ &::before {
+ content: '📂';
+ font-size: 11px;
+ }
}
.modeBadge {
- font-size: 10px;
+ display: inline-flex;
+ align-items: center;
+ gap: $sp-1;
+ font-size: 11px;
font-weight: 600;
text-transform: uppercase;
+ letter-spacing: 0.5px;
color: $tc-white;
- background-color: $turq-160;
- padding: 3px $sp-2;
- border-radius: 3px;
+ background: linear-gradient(135deg, $turq-140, $turq-160);
+ padding: 4px $sp-3;
+ border-radius: 16px;
white-space: nowrap;
+ box-shadow: 0 1px 3px rgba($turq-160, 0.3);
+
+ &::before {
+ content: '⚙️';
+ font-size: 10px;
+ }
}
.thresholdBadge {
- font-size: 11px;
- font-weight: 500;
- color: $black-80;
- background-color: $black-10;
- padding: 3px $sp-2;
- border-radius: 3px;
+ display: inline-flex;
+ align-items: center;
+ gap: $sp-1;
+ font-size: 12px;
+ font-weight: 600;
+ color: $green-140;
+ background: linear-gradient(135deg, rgba($green-25, 0.8), rgba($green-25, 0.4));
+ border: 1px solid rgba($green-100, 0.25);
+ padding: 4px $sp-3;
+ border-radius: 16px;
white-space: nowrap;
+
+ &::before {
+ content: '✓';
+ font-size: 11px;
+ font-weight: 700;
+ }
}
.workflowCount {
@@ -152,8 +220,8 @@
text-transform: uppercase;
color: $tc-white;
background-color: $red-100;
- padding: 3px $sp-2;
- border-radius: 3px;
+ padding: 4px $sp-3;
+ border-radius: 16px;
}
.workflowsTree {
diff --git a/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx
index a91b370ec..5159a083b 100644
--- a/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx
+++ b/src/apps/admin/src/ai/review-templates/AiReviewTemplatesPage.tsx
@@ -1,6 +1,6 @@
import { ChangeEvent, FC, useCallback, useEffect, useMemo, useState } from 'react'
-import { Button, InputSelect, InputSelectOption } from '~/libs/ui'
+import { BaseModal, Button, IconOutline, InputSelect, InputSelectOption } from '~/libs/ui'
import { PageWrapper, TableLoading, TableNoRecord } from '../../lib'
import { TableWrapper } from '../../lib/components/common/TableWrapper'
@@ -10,6 +10,7 @@ import { AiWorkflow } from '../../lib/services/ai-workflows.service'
import {
AiReviewTemplate,
AiReviewTemplatesFilter,
+ deleteAiReviewTemplate,
getAiReviewTemplates,
TemplateWorkflowItem,
} from '../../lib/services/ai-templates.service'
@@ -64,6 +65,8 @@ const WorkflowItem: FC = (props: WorkflowItemProps) => {
interface TemplateItemProps {
template: AiReviewTemplate
onWorkflowClick: (workflow: AiWorkflow) => void
+ onEdit: (template: AiReviewTemplate) => void
+ onDelete: (template: AiReviewTemplate) => void
}
const TemplateItem: FC = (props: TemplateItemProps) => {
@@ -74,6 +77,16 @@ const TemplateItem: FC = (props: TemplateItemProps) => {
setExpanded(prev => !prev)
}, [])
+ const handleEditClick = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation()
+ props.onEdit(props.template)
+ }, [props])
+
+ const handleDeleteClick = useCallback((e: React.MouseEvent) => {
+ e.stopPropagation()
+ props.onDelete(props.template)
+ }, [props])
+
return (
= (props: TemplateItemProps) => {
-
- {props.template.challengeTrack}
- {' / '}
- {props.template.challengeType}
-
- {props.template.mode}
-
- Pass:
- {' '}
- {props.template.minPassingThreshold}
- %
-
+ {props.template.disabled && (
+ Disabled
+ )}
+
+
+
+
+
+
{props.template.description && (
@@ -109,6 +129,20 @@ const TemplateItem: FC = (props: TemplateItemProps) => {
{props.template.description}
)}
+
+
+ {props.template.challengeTrack}
+ {' / '}
+ {props.template.challengeType}
+
+ {props.template.mode}
+
+ Pass:
+ {' '}
+ {props.template.minPassingThreshold}
+ %
+
+
{expanded && workflows.length > 0 && (
@@ -135,19 +169,38 @@ export const AiReviewTemplatesPage: FC = () => {
open: false,
})
const [createModalOpen, setCreateModalOpen] = useState(false)
+ const [editTemplate, setEditTemplate] = useState
(undefined)
+ const [deleteModal, setDeleteModal] = useState<{ open: boolean; template?: AiReviewTemplate }>({
+ open: false,
+ })
+ const [isDeleting, setIsDeleting] = useState(false)
- const trackOptions: InputSelectOption[] = useMemo(() => [
- { label: 'All Tracks', value: '' },
- ...tracks.map(t => {
+ const trackOptions: InputSelectOption[] = useMemo(() => {
+ const seen = new Set()
+ const options: InputSelectOption[] = [{ label: 'All Tracks', value: '' }]
+ for (const t of tracks) {
const trackValue: string = (t as ChallengeTrack & { track?: string }).track || t.name.toUpperCase()
- return { label: t.name, value: trackValue }
- }),
- ], [tracks])
-
- const typeOptions: InputSelectOption[] = useMemo(() => [
- { label: 'All Types', value: '' },
- ...types.map(t => ({ label: t.name, value: t.abbreviation })),
- ], [types])
+ if (!seen.has(trackValue)) {
+ seen.add(trackValue)
+ options.push({ label: t.name, value: trackValue })
+ }
+ }
+
+ return options
+ }, [tracks])
+
+ const typeOptions: InputSelectOption[] = useMemo(() => {
+ const seen = new Set()
+ const options: InputSelectOption[] = [{ label: 'All Types', value: '' }]
+ for (const t of types) {
+ if (!seen.has(t.abbreviation)) {
+ seen.add(t.abbreviation)
+ options.push({ label: t.name, value: t.abbreviation })
+ }
+ }
+
+ return options
+ }, [types])
useEffect(() => {
getChallengeTracks()
@@ -195,17 +248,46 @@ export const AiReviewTemplatesPage: FC = () => {
}, [])
const handleOpenCreateModal = useCallback(() => {
+ setEditTemplate(undefined)
setCreateModalOpen(true)
}, [])
const handleCloseCreateModal = useCallback(() => {
setCreateModalOpen(false)
+ setEditTemplate(undefined)
+ }, [])
+
+ const handleEditClick = useCallback((template: AiReviewTemplate) => {
+ setEditTemplate(template)
+ setCreateModalOpen(true)
}, [])
const handleTemplateCreated = useCallback(() => {
loadTemplates(filter)
}, [filter, loadTemplates])
+ const handleDeleteClick = useCallback((template: AiReviewTemplate) => {
+ setDeleteModal({ open: true, template })
+ }, [])
+
+ const handleCloseDeleteModal = useCallback(() => {
+ setDeleteModal({ open: false })
+ }, [])
+
+ const handleConfirmDelete = useCallback(async () => {
+ if (!deleteModal.template) return
+ setIsDeleting(true)
+ try {
+ await deleteAiReviewTemplate(deleteModal.template.id)
+ setDeleteModal({ open: false })
+ loadTemplates(filter)
+ } catch {
+ // Error handling can be added here
+ } finally {
+ setIsDeleting(false)
+ }
+ }, [deleteModal.template, filter, loadTemplates])
+
const hasFilters: boolean = !!filter.challengeTrack || !!filter.challengeType
return (
@@ -260,6 +342,8 @@ export const AiReviewTemplatesPage: FC = () => {
key={template.id}
template={template}
onWorkflowClick={handleWorkflowClick}
+ onEdit={handleEditClick}
+ onDelete={handleDeleteClick}
/>
))}
@@ -276,7 +360,40 @@ export const AiReviewTemplatesPage: FC = () => {
open={createModalOpen}
onClose={handleCloseCreateModal}
onCreated={handleTemplateCreated}
+ template={editTemplate}
/>
+
+
+
+
+ >
+ )}
+ >
+ Are you sure you want to delete the template
+ {' '}
+ "
+ {deleteModal.template?.title || deleteModal.template?.id}
+ "? This action cannot be undone.
+
)
}
diff --git a/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx b/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx
index d7c6dd4eb..1f520c850 100644
--- a/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx
+++ b/src/apps/admin/src/ai/review-templates/CreateTemplateModal.tsx
@@ -7,6 +7,7 @@ import {
useForm,
UseFormReturn,
} from 'react-hook-form'
+import { toast } from 'react-toastify'
import _ from 'lodash'
import {
@@ -26,7 +27,13 @@ import { yupResolver } from '@hookform/resolvers/yup'
import { ChallengeTrack, ChallengeType } from '../../lib/models'
import { getChallengeTracks, getChallengeTypes } from '../../lib/services/challenge-management.service'
import { AiWorkflow, getAiWorkflows } from '../../lib/services/ai-workflows.service'
-import { createAiReviewTemplate, CreateAiReviewTemplateRequest } from '../../lib/services/ai-templates.service'
+import {
+ AiReviewTemplate,
+ createAiReviewTemplate,
+ CreateAiReviewTemplateRequest,
+ updateAiReviewTemplate,
+ UpdateAiReviewTemplateRequest,
+} from '../../lib/services/ai-templates.service'
import styles from './CreateTemplateModal.module.scss'
@@ -113,24 +120,37 @@ interface Props {
onClose: () => void
onCreated: () => void
open: boolean
+ template?: AiReviewTemplate
}
export const CreateTemplateModal: FC = (props: Props) => {
+ const isEditMode = !!props.template
const [isSubmitting, setIsSubmitting] = useState(false)
const [tracks, setTracks] = useState([])
const [types, setTypes] = useState([])
const [workflows, setWorkflows] = useState([])
const [isLoadingData, setIsLoadingData] = useState(true)
- const {
- register,
- handleSubmit,
- control,
- formState: { errors, isDirty },
- reset,
- watch,
- }: UseFormReturn = useForm({
- defaultValues: {
+ const getDefaultValues = useCallback((): FormValues => {
+ if (props.template) {
+ return {
+ autoFinalize: props.template.autoFinalize,
+ challengeTrack: props.template.challengeTrack,
+ challengeType: props.template.challengeType,
+ description: props.template.description || '',
+ disabled: props.template.disabled,
+ minPassingThreshold: props.template.minPassingThreshold,
+ mode: props.template.mode,
+ title: props.template.title,
+ workflows: (props.template.workflows || []).map(w => ({
+ isGating: w.isGating,
+ weightPercent: w.weightPercent,
+ workflowId: w.workflowId,
+ })),
+ }
+ }
+
+ return {
autoFinalize: false,
challengeTrack: '',
challengeType: '',
@@ -140,7 +160,18 @@ export const CreateTemplateModal: FC = (props: Props) => {
mode: 'AI_GATING',
title: '',
workflows: [],
- },
+ }
+ }, [props.template])
+
+ const {
+ register,
+ handleSubmit,
+ control,
+ formState: { errors, isDirty },
+ reset,
+ watch,
+ }: UseFormReturn = useForm({
+ defaultValues: getDefaultValues(),
mode: 'all',
resolver: yupResolver(schema) as never,
})
@@ -182,6 +213,7 @@ export const CreateTemplateModal: FC = (props: Props) => {
useEffect(() => {
if (props.open) {
+ reset(getDefaultValues())
setIsLoadingData(true)
Promise.all([
getChallengeTracks(),
@@ -200,7 +232,7 @@ export const CreateTemplateModal: FC = (props: Props) => {
})
.finally(() => setIsLoadingData(false))
}
- }, [props.open])
+ }, [props.open, props.template, getDefaultValues, reset])
const handleClose = useCallback(() => {
if (!isSubmitting) {
@@ -221,41 +253,55 @@ export const CreateTemplateModal: FC = (props: Props) => {
formula[w.workflowId] = w.weightPercent / 100
})
- const request: CreateAiReviewTemplateRequest = {
- autoFinalize: data.autoFinalize,
- challengeTrack: data.challengeTrack,
- challengeType: data.challengeType,
- description: data.description || '',
- disabled: data.disabled,
- formula,
- minPassingThreshold: data.minPassingThreshold,
- mode: data.mode,
- title: data.title,
- workflows: data.workflows.map(w => ({
- isGating: w.isGating,
- weightPercent: w.weightPercent,
- workflowId: w.workflowId,
- })),
- }
-
- createAiReviewTemplate(request)
+ const workflowsData = data.workflows.map(w => ({
+ isGating: w.isGating,
+ weightPercent: w.weightPercent,
+ workflowId: w.workflowId,
+ }))
+
+ const submitPromise = isEditMode && props.template
+ ? updateAiReviewTemplate(props.template.id, {
+ autoFinalize: data.autoFinalize,
+ description: data.description || '',
+ disabled: data.disabled,
+ formula,
+ minPassingThreshold: data.minPassingThreshold,
+ mode: data.mode,
+ title: data.title,
+ workflows: workflowsData,
+ } as UpdateAiReviewTemplateRequest)
+ : createAiReviewTemplate({
+ autoFinalize: data.autoFinalize,
+ challengeTrack: data.challengeTrack,
+ challengeType: data.challengeType,
+ description: data.description || '',
+ disabled: data.disabled,
+ formula,
+ minPassingThreshold: data.minPassingThreshold,
+ mode: data.mode,
+ title: data.title,
+ workflows: workflowsData,
+ } as CreateAiReviewTemplateRequest)
+
+ submitPromise
.then(() => {
+ toast.success(isEditMode ? 'Template updated successfully' : 'Template created successfully')
reset()
props.onCreated()
props.onClose()
})
- .catch(() => {
- // Error handling done via toast in xhr
+ .catch((error: Error) => {
+ toast.error(error.message || (isEditMode ? 'Failed to update template' : 'Failed to create template'))
})
.finally(() => setIsSubmitting(false))
- }, [props, reset])
+ }, [isEditMode, props, reset])
return (
@@ -297,7 +343,7 @@ export const CreateTemplateModal: FC = (props: Props) => {
onChange={controlProps.field.onChange}
error={_.get(errors, 'challengeTrack.message')}
dirty
- disabled={isSubmitting}
+ disabled={isSubmitting || isEditMode}
tabIndex={0}
/>
)
@@ -319,7 +365,7 @@ export const CreateTemplateModal: FC = (props: Props) => {
onChange={controlProps.field.onChange}
error={_.get(errors, 'challengeType.message')}
dirty
- disabled={isSubmitting}
+ disabled={isSubmitting || isEditMode}
tabIndex={0}
/>
)
@@ -534,7 +580,7 @@ export const CreateTemplateModal: FC = (props: Props) => {
size='lg'
disabled={isSubmitting || !isDirty}
>
- Create Template
+ {isEditMode ? 'Update Template' : 'Create Template'}
diff --git a/src/apps/admin/src/lib/services/ai-templates.service.ts b/src/apps/admin/src/lib/services/ai-templates.service.ts
index b7d6cd324..7c19e24af 100644
--- a/src/apps/admin/src/lib/services/ai-templates.service.ts
+++ b/src/apps/admin/src/lib/services/ai-templates.service.ts
@@ -1,5 +1,5 @@
import { EnvironmentConfig } from '~/config'
-import { xhrGetAsync, xhrPostAsync } from '~/libs/core'
+import { xhrDeleteAsync, xhrGetAsync, xhrPostAsync, xhrPutAsync } from '~/libs/core'
import { AiWorkflow } from './ai-workflows.service'
@@ -79,3 +79,22 @@ export async function createAiReviewTemplate(
)
return response
}
+
+export async function deleteAiReviewTemplate(id: string): Promise {
+ await xhrDeleteAsync(`${EnvironmentConfig.API.V6}/ai-review/templates/${id}`)
+}
+
+export type UpdateAiReviewTemplateRequest = Partial<
+ Omit
+>
+
+export async function updateAiReviewTemplate(
+ id: string,
+ data: UpdateAiReviewTemplateRequest,
+): Promise {
+ const response = await xhrPutAsync(
+ `${EnvironmentConfig.API.V6}/ai-review/templates/${id}`,
+ data,
+ )
+ return response
+}
From ae00dd8336238b6a2be8dc45e36e0070ebbde0d2 Mon Sep 17 00:00:00 2001
From: Vasilica Olariu
Date: Tue, 19 May 2026 11:21:10 +0300
Subject: [PATCH 07/56] PM-4669 - engagement payment cycles
---
.../components/payment-view/PaymentView.tsx | 10 +-
.../src/lib/models/WinningDetail.ts | 2 +
.../wallet-admin/src/lib/services/wallet.ts | 17 ++
.../AcceptApplicationModal.tsx | 91 +++++++---
.../PaymentFormModal/PaymentFormModal.tsx | 159 ++++++++++++------
.../work/src/lib/models/Engagement.model.ts | 4 +
.../lib/schemas/engagement-editor.schema.ts | 9 +-
.../src/lib/services/engagements.service.ts | 21 +++
.../work/src/lib/utils/engagement.utils.ts | 34 +++-
src/apps/work/src/lib/utils/index.ts | 3 +
src/apps/work/src/lib/utils/payment.utils.ts | 61 ++++++-
.../components/AssignmentDetailsModal.tsx | 93 ++++++----
.../components/EngagementEditorForm.tsx | 19 +++
.../components/EngagementPrivateSection.tsx | 14 +-
.../EngagementPaymentPage.tsx | 150 +++++++++++++----
15 files changed, 532 insertions(+), 155 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index a597eee66..7755de7b0 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -264,9 +264,15 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
-
Standard Hours per Week
+
Standard Hours per Day
- {formatOptionalText(paymentDetails?.engagementDetails?.standardHoursPerWeek)}
+ {formatOptionalText(paymentDetails?.engagementDetails?.standardHoursPerDay)}
+
+
+
+
Payment Cycle
+
+ {formatOptionalText(paymentDetails?.engagementDetails?.paymentCycle) || 'WEEKLY'}
diff --git a/src/apps/wallet-admin/src/lib/models/WinningDetail.ts b/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
index 3a5881f22..13992f74b 100644
--- a/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
+++ b/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
@@ -28,7 +28,9 @@ export interface PaymentEngagementDetails {
engagementTitle?: string
billingStartDate?: string
durationMonths?: number
+ paymentCycle?: string
ratePerHour?: string
+ standardHoursPerDay?: number
standardHoursPerWeek?: number
otherRemarks?: string
}
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.ts b/src/apps/wallet-admin/src/lib/services/wallet.ts
index 4f14fb0c4..96f8c21f2 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.ts
@@ -27,9 +27,11 @@ interface EngagementAssignmentContextResponse {
engagementId: string
engagementTitle: string
otherRemarks?: string | null
+ paymentCycle?: string | null
projectId: string
projectName?: string
ratePerHour?: string | null
+ standardHoursPerDay?: number | null
standardHoursPerWeek?: number | null
startDate?: string | null
}
@@ -40,7 +42,9 @@ interface EngagementAssignmentResponse {
memberHandle?: string | null
memberId?: number | string | null
otherRemarks?: string | null
+ paymentCycle?: string | null
ratePerHour?: string | null
+ standardHoursPerDay?: number | string | null
standardHoursPerWeek?: number | string | null
startDate?: string | null
}
@@ -106,6 +110,11 @@ function normalizeOptionalNumber(value: unknown): number | undefined {
function mapAssignmentContextToEngagementDetails(
context: EngagementAssignmentContextResponse,
): PaymentEngagementDetails {
+ const standardHoursPerDay = normalizeOptionalNumber(context.standardHoursPerDay)
+ ?? (normalizeOptionalNumber(context.standardHoursPerWeek) !== undefined
+ ? Number((Number(context.standardHoursPerWeek) / 5).toFixed(2))
+ : undefined)
+
return {
assignmentId: normalizeOptionalString(context.assignmentId),
billingStartDate: normalizeOptionalString(context.startDate),
@@ -113,9 +122,11 @@ function mapAssignmentContextToEngagementDetails(
engagementId: normalizeOptionalString(context.engagementId),
engagementTitle: normalizeOptionalString(context.engagementTitle),
otherRemarks: normalizeOptionalString(context.otherRemarks),
+ paymentCycle: normalizeOptionalString(context.paymentCycle) || 'WEEKLY',
projectId: normalizeOptionalString(context.projectId),
projectName: normalizeOptionalString(context.projectName),
ratePerHour: normalizeOptionalString(context.ratePerHour),
+ standardHoursPerDay,
standardHoursPerWeek: normalizeOptionalNumber(context.standardHoursPerWeek),
}
}
@@ -198,6 +209,10 @@ function buildEngagementDetailsFromEngagement(
}
const assignment = findMatchingEngagementAssignment(engagement.assignments, winning)
+ const standardHoursPerDay = normalizeOptionalNumber(assignment?.standardHoursPerDay)
+ ?? (normalizeOptionalNumber(assignment?.standardHoursPerWeek) !== undefined
+ ? Number((Number(assignment?.standardHoursPerWeek) / 5).toFixed(2))
+ : undefined)
return {
assignmentId: normalizeOptionalString(assignment?.id) || normalizeOptionalString(winning.assignmentId),
@@ -206,6 +221,7 @@ function buildEngagementDetailsFromEngagement(
engagementId,
engagementTitle: normalizeOptionalString(engagement.title),
otherRemarks: normalizeOptionalString(assignment?.otherRemarks),
+ paymentCycle: normalizeOptionalString(assignment?.paymentCycle) || 'WEEKLY',
projectId:
normalizeOptionalString(engagement.projectId)
|| normalizeOptionalString(engagement.project?.id),
@@ -213,6 +229,7 @@ function buildEngagementDetailsFromEngagement(
normalizeOptionalString(engagement.projectName)
|| normalizeOptionalString(engagement.project?.name),
ratePerHour: normalizeOptionalString(assignment?.ratePerHour),
+ standardHoursPerDay,
standardHoursPerWeek: normalizeOptionalNumber(assignment?.standardHoursPerWeek),
}
}
diff --git a/src/apps/work/src/lib/components/AcceptApplicationModal/AcceptApplicationModal.tsx b/src/apps/work/src/lib/components/AcceptApplicationModal/AcceptApplicationModal.tsx
index b5f76f83c..b1496262e 100644
--- a/src/apps/work/src/lib/components/AcceptApplicationModal/AcceptApplicationModal.tsx
+++ b/src/apps/work/src/lib/components/AcceptApplicationModal/AcceptApplicationModal.tsx
@@ -33,8 +33,10 @@ export interface AcceptApplicationFormData {
agreementRate: string
durationMonths: number
otherRemarks?: string
+ paymentCycle: string
ratePerHour: string
startDate: string
+ standardHoursPerDay: number
standardHoursPerWeek: number
}
@@ -48,9 +50,10 @@ interface AcceptApplicationModalProps {
interface ValidationErrors {
durationMonths?: string
+ paymentCycle?: string
ratePerHour?: string
startDate?: string
- standardHoursPerWeek?: string
+ standardHoursPerDay?: string
}
const AcceptApplicationModal: FC
= (
@@ -59,9 +62,10 @@ const AcceptApplicationModal: FC = (
const [durationMonths, setDurationMonths] = useState('')
const [errors, setErrors] = useState({})
const [otherRemarks, setOtherRemarks] = useState('')
+ const [paymentCycle, setPaymentCycle] = useState('WEEKLY')
const [ratePerHour, setRatePerHour] = useState('')
const [startDate, setStartDate] = useState()
- const [standardHoursPerWeek, setStandardHoursPerWeek] = useState('')
+ const [standardHoursPerDay, setStandardHoursPerDay] = useState('')
const isSubmitting = props.isSubmitting === true
@@ -72,17 +76,29 @@ const AcceptApplicationModal: FC = (
[],
)
const agreementRate = useMemo(
- () => calculateAssignmentRatePerWeek(ratePerHour, standardHoursPerWeek),
- [ratePerHour, standardHoursPerWeek],
+ () => {
+ const parsedStandardHoursPerDay = toPositiveNumberWithMaxDecimalPlaces(
+ standardHoursPerDay,
+ 2,
+ )
+
+ if (parsedStandardHoursPerDay === undefined) {
+ return ''
+ }
+
+ return calculateAssignmentRatePerWeek(ratePerHour, parsedStandardHoursPerDay * 5)
+ },
+ [ratePerHour, standardHoursPerDay],
)
const resetState = useCallback((): void => {
setDurationMonths('')
setErrors({})
setOtherRemarks('')
+ setPaymentCycle('WEEKLY')
setRatePerHour('')
setStartDate(undefined)
- setStandardHoursPerWeek('')
+ setStandardHoursPerDay('')
}, [])
const handleCancel = useCallback((): void => {
@@ -94,10 +110,13 @@ const AcceptApplicationModal: FC = (
const nextErrors: ValidationErrors = {}
const parsedDurationMonths = toPositiveInteger(durationMonths)
const parsedRatePerHour = toPositiveNumber(ratePerHour)
- const parsedStandardHoursPerWeek = toPositiveNumberWithMaxDecimalPlaces(
- standardHoursPerWeek,
+ const parsedStandardHoursPerDay = toPositiveNumberWithMaxDecimalPlaces(
+ standardHoursPerDay,
2,
)
+ const normalizedPaymentCycle = String(paymentCycle || 'WEEKLY')
+ .trim()
+ .toUpperCase()
if (!startDate) {
nextErrors.startDate = 'Billing start date is required.'
@@ -111,11 +130,15 @@ const AcceptApplicationModal: FC = (
nextErrors.ratePerHour = 'Rate per hour must be a positive number.'
}
- if (parsedStandardHoursPerWeek === undefined) {
- nextErrors.standardHoursPerWeek = 'Standard hours per week must be a '
+ if (parsedStandardHoursPerDay === undefined) {
+ nextErrors.standardHoursPerDay = 'Standard hours per day must be a '
+ 'positive number with up to 2 decimal places.'
}
+ if (!['WEEKLY', 'FORTNIGHTLY', 'MONTHLY'].includes(normalizedPaymentCycle)) {
+ nextErrors.paymentCycle = 'Payment cycle must be Weekly, Fortnightly, or Monthly.'
+ }
+
if (Object.keys(nextErrors).length > 0) {
setErrors(nextErrors)
return
@@ -125,7 +148,7 @@ const AcceptApplicationModal: FC = (
!startDate
|| parsedDurationMonths === undefined
|| parsedRatePerHour === undefined
- || parsedStandardHoursPerWeek === undefined
+ || parsedStandardHoursPerDay === undefined
) {
return
}
@@ -134,8 +157,10 @@ const AcceptApplicationModal: FC = (
agreementRate,
durationMonths: parsedDurationMonths,
otherRemarks: otherRemarks.trim() || undefined,
+ paymentCycle: normalizedPaymentCycle,
ratePerHour: parsedRatePerHour.toString(),
- standardHoursPerWeek: parsedStandardHoursPerWeek,
+ standardHoursPerDay: parsedStandardHoursPerDay,
+ standardHoursPerWeek: Number((parsedStandardHoursPerDay * 5).toFixed(2)),
startDate: serializeTentativeAssignmentDate(startDate),
})
@@ -144,10 +169,11 @@ const AcceptApplicationModal: FC = (
agreementRate,
durationMonths,
otherRemarks,
+ paymentCycle,
props,
ratePerHour,
resetState,
- standardHoursPerWeek,
+ standardHoursPerDay,
startDate,
])
@@ -257,43 +283,52 @@ const AcceptApplicationModal: FC = (
- Standard hours per week *
+ Standard hours per day *
{
- setStandardHoursPerWeek(
+ setStandardHoursPerDay(
sanitizePositiveNumericInput(event.target.value, 2),
)
setErrors(previous => ({
...previous,
- standardHoursPerWeek: undefined,
+ standardHoursPerDay: undefined,
}))
}}
pattern='[0-9.]*'
type='text'
- value={standardHoursPerWeek}
+ value={standardHoursPerDay}
/>
- {errors.standardHoursPerWeek
- ?
{errors.standardHoursPerWeek}
+ {errors.standardHoursPerDay
+ ?
{errors.standardHoursPerDay}
: undefined}
-
- Assignment rate per week *
+
+ Payment cycle *
-
- {!agreementRate
- ? Assignment rate is calculated after entering hourly details.
+ onChange={event => {
+ setPaymentCycle(event.target.value)
+ setErrors(previous => ({
+ ...previous,
+ paymentCycle: undefined,
+ }))
+ }}
+ value={paymentCycle}
+ >
+ Weekly
+ Fortnightly
+ Monthly
+
+ {errors.paymentCycle
+ ? {errors.paymentCycle}
: undefined}
diff --git a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
index 2cec47e65..73a5c8cea 100644
--- a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
+++ b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
@@ -25,8 +25,10 @@ import {
} from '../../models'
import {
calculatePaymentAmount,
+ getAssignmentPaymentCycle,
getAssignmentRatePerHour,
- getAssignmentStandardHoursPerWeek,
+ getAssignmentStandardHoursPerDay,
+ getExpectedHoursLabel,
} from '../../utils'
import {
calculatePaymentChallengeFee,
@@ -55,12 +57,11 @@ interface PaymentFormModalProps {
}
interface ValidationErrors {
+ fromDate?: string
hoursWorked?: string
- weekEnding?: string
+ toDate?: string
}
-const SATURDAY_DAY_INDEX = 6
-
function normalizeTitleSegment(value?: string): string {
return String(value || '')
.trim()
@@ -68,48 +69,34 @@ function normalizeTitleSegment(value?: string): string {
function formatTitleDate(value: Date): string {
return value.toLocaleDateString('en-US', {
- day: '2-digit',
+ day: 'numeric',
month: 'short',
year: 'numeric',
})
}
-function formatWeekEndingTitle(value?: Date | null): string {
- if (!value) {
+function formatWorkPeriodTitle(fromDate?: Date | null, toDate?: Date | null): string {
+ if (!fromDate || !toDate) {
return ''
}
- return `Week Ending: ${formatTitleDate(value)}`
+ return `Work Period ${formatTitleDate(fromDate)} - ${formatTitleDate(toDate)}`
}
function buildPaymentTitle(
projectName?: string,
engagementName?: string,
- weekEndingTitle?: string,
+ workPeriodTitle?: string,
): string {
return [
normalizeTitleSegment(projectName),
normalizeTitleSegment(engagementName),
- normalizeTitleSegment(weekEndingTitle),
+ normalizeTitleSegment(workPeriodTitle),
]
.filter(Boolean)
.join(' - ')
}
-function getDefaultWeekEndingDate(): Date {
- const defaultDate = new Date()
- defaultDate.setHours(0, 0, 0, 0)
-
- const daysUntilSaturday = (SATURDAY_DAY_INDEX - defaultDate.getDay() + 7) % 7
- defaultDate.setDate(defaultDate.getDate() + daysUntilSaturday)
-
- return defaultDate
-}
-
-function isSaturday(value?: Date | null): boolean {
- return Boolean(value) && value?.getDay() === SATURDAY_DAY_INDEX
-}
-
function normalizePositiveValue(value: unknown): string {
if (value === null || value === undefined || value === '') {
return ''
@@ -125,12 +112,12 @@ function normalizePositiveValue(value: unknown): string {
.toString()
}
-const WeekEndingInput = forwardRef>(
+const DateInput = forwardRef>(
(props, ref): JSX.Element => (
= (
props: PaymentFormModalProps,
@@ -146,9 +133,10 @@ const PaymentFormModal: FC = (
const isSubmitting = props.isSubmitting === true
const [errors, setErrors] = useState({})
+ const [fromDate, setFromDate] = useState(null)
const [hoursWorked, setHoursWorked] = useState('')
const [remarks, setRemarks] = useState('')
- const [weekEndingDate, setWeekEndingDate] = useState(() => getDefaultWeekEndingDate())
+ const [toDate, setToDate] = useState(null)
const ratePerHour = useMemo(
() => getAssignmentRatePerHour(props.member || {}),
@@ -164,26 +152,43 @@ const PaymentFormModal: FC = (
: undefined),
[amount, props.billingAccountMarkup],
)
+ const paymentCycle = useMemo(
+ () => getAssignmentPaymentCycle(props.member || {}),
+ [props.member],
+ )
+ const standardHoursPerDay = useMemo(
+ () => getAssignmentStandardHoursPerDay(props.member || {}),
+ [props.member],
+ )
+ const expectedHoursLabel = useMemo(
+ () => getExpectedHoursLabel(props.member || {}),
+ [props.member],
+ )
const paymentTitle = useMemo(
() => {
- if (!isSaturday(weekEndingDate)) {
+ if (!fromDate || !toDate) {
+ return ''
+ }
+
+ if (fromDate.getTime() > toDate.getTime()) {
return ''
}
return buildPaymentTitle(
props.projectName,
props.engagementName,
- formatWeekEndingTitle(weekEndingDate),
+ formatWorkPeriodTitle(fromDate, toDate),
)
},
- [props.engagementName, props.projectName, weekEndingDate],
+ [fromDate, props.engagementName, props.projectName, toDate],
)
const resetState = useCallback((): void => {
setErrors({})
- setHoursWorked(normalizePositiveValue(getAssignmentStandardHoursPerWeek(props.member || {})))
+ setFromDate(null)
+ setHoursWorked('')
setRemarks('')
- setWeekEndingDate(getDefaultWeekEndingDate())
+ setToDate(null)
}, [props.member])
useEffect(() => {
@@ -204,12 +209,20 @@ const PaymentFormModal: FC = (
const nextErrors: ValidationErrors = {}
const parsedHoursWorked = Number(hoursWorked)
- if (!weekEndingDate) {
- nextErrors.weekEnding = 'Week ending date is required.'
- } else if (!isSaturday(weekEndingDate)) {
- nextErrors.weekEnding = 'Week ending date must be a Saturday.'
- } else if (!paymentTitle.trim()) {
- nextErrors.weekEnding = 'Payment title cannot be generated from week ending.'
+ if (!fromDate) {
+ nextErrors.fromDate = 'From date is required.'
+ }
+
+ if (!toDate) {
+ nextErrors.toDate = 'To date is required.'
+ }
+
+ if (fromDate && toDate && fromDate.getTime() > toDate.getTime()) {
+ nextErrors.toDate = 'To date must be the same day or after the from date.'
+ }
+
+ if (!paymentTitle.trim()) {
+ nextErrors.fromDate = nextErrors.fromDate || 'Payment title cannot be generated from the selected period.'
}
if (!Number.isFinite(parsedHoursWorked) || parsedHoursWorked <= 0) {
@@ -230,8 +243,9 @@ const PaymentFormModal: FC = (
}
if (
- !weekEndingDate
- || !isSaturday(weekEndingDate)
+ !fromDate
+ || !toDate
+ || fromDate.getTime() > toDate.getTime()
|| !paymentTitle.trim()
|| !Number.isFinite(parsedHoursWorked)
|| parsedHoursWorked <= 0
@@ -256,7 +270,7 @@ const PaymentFormModal: FC = (
})
resetState()
- }, [amount, hoursWorked, paymentTitle, props, ratePerHour, remarks, resetState, weekEndingDate])
+ }, [amount, fromDate, hoursWorked, paymentTitle, props, ratePerHour, remarks, resetState, toDate])
return (
= (
{formatCurrency(ratePerHour)}
- Rate Per Week
- {formatCurrency(props.member?.agreementRate)}
+ Payment Cycle
+ {paymentCycle}
+
+
+ Standard Hours Per Day
+ {normalizePositiveValue(standardHoursPerDay) || '-'}
{BILLING_ACCOUNT_MEMBER_PAYMENT_DETAILS_ENABLED
? (
@@ -306,25 +324,52 @@ const PaymentFormModal: FC = (
- Week ending *
+ From *
+
+
}
+ dateFormat='MM/dd/yyyy'
+ disabled={isSubmitting}
+ onChange={date => {
+ setFromDate(date)
+ setErrors(previous => ({
+ ...previous,
+ fromDate: undefined,
+ }))
+ }}
+ placeholderText='From: ...'
+ preventOpenOnFocus
+ portalId='react-date-portal'
+ popperPlacement='bottom-start'
+ selected={fromDate}
+ />
+
+ {errors.fromDate
+ ?
{errors.fromDate}
+ : undefined}
+
+
+
+
+ To *
}
+ customInput={
}
dateFormat='MM/dd/yyyy'
disabled={isSubmitting}
- filterDate={isSaturday}
+ minDate={fromDate || undefined}
onChange={date => {
- setWeekEndingDate(date)
+ setToDate(date)
setErrors(previous => ({
...previous,
- weekEnding: undefined,
+ toDate: undefined,
}))
}}
- placeholderText='Week ending: ...'
+ placeholderText='To: ...'
preventOpenOnFocus
portalId='react-date-portal'
popperPlacement='bottom-start'
- selected={weekEndingDate}
+ selected={toDate}
/>
{paymentTitle
? (
@@ -333,14 +378,22 @@ const PaymentFormModal: FC
= (
)
: undefined}
- {errors.weekEnding
- ? {errors.weekEnding}
+ {errors.toDate
+ ? {errors.toDate}
: undefined}
Hours worked *
+ {expectedHoursLabel
+ ? (
+
+ {' '}
+ Expected: {expectedHoursLabel}
+
+ )
+ : undefined}
= yup.object({
diff --git a/src/apps/work/src/lib/services/engagements.service.ts b/src/apps/work/src/lib/services/engagements.service.ts
index edec3dc02..4f8128065 100644
--- a/src/apps/work/src/lib/services/engagements.service.ts
+++ b/src/apps/work/src/lib/services/engagements.service.ts
@@ -55,8 +55,10 @@ interface AssignmentDetails {
memberHandle?: string
memberId?: number | string
otherRemarks?: string
+ paymentCycle?: string
ratePerHour?: string
startDate?: string
+ standardHoursPerDay?: number | string
standardHoursPerWeek?: number | string
}
@@ -309,6 +311,12 @@ function serializeEngagementPayload(data: EngagementUpsertData): Record
): string {
return String(member.status)
}
+export function getAssignmentPaymentCycle(member: Partial): string {
+ const normalizedCycle = toOptionalDisplayString(member.paymentCycle)
+
+ return normalizedCycle
+ ? normalizedCycle.toUpperCase()
+ : DEFAULT_PAYMENT_CYCLE
+}
+
+export function getAssignmentStandardHoursPerDay(
+ member: Partial,
+): number | string | undefined {
+ if (member.standardHoursPerDay !== undefined && member.standardHoursPerDay !== null && member.standardHoursPerDay !== '') {
+ return member.standardHoursPerDay
+ }
+
+ const standardHoursPerWeek = toNumber(member.standardHoursPerWeek)
+
+ if (standardHoursPerWeek === undefined || standardHoursPerWeek <= 0) {
+ return undefined
+ }
+
+ return Number((standardHoursPerWeek / 5).toFixed(2))
+}
+
/**
* Reads the assignment standard hours value from a member object.
*
@@ -229,7 +255,17 @@ export function getAssignmentStatus(member: Partial): string {
export function getAssignmentStandardHoursPerWeek(
member: Partial,
): number | string | undefined {
- return member.standardHoursPerWeek
+ if (member.standardHoursPerWeek !== undefined && member.standardHoursPerWeek !== null && member.standardHoursPerWeek !== '') {
+ return member.standardHoursPerWeek
+ }
+
+ const standardHoursPerDay = toNumber(getAssignmentStandardHoursPerDay(member))
+
+ if (standardHoursPerDay === undefined || standardHoursPerDay <= 0) {
+ return undefined
+ }
+
+ return Number((standardHoursPerDay * 5).toFixed(2))
}
/**
@@ -262,6 +298,29 @@ export function getAssignmentRatePerHour(
return agreementRate / standardHoursPerWeek
}
+export function getExpectedHoursLabel(member: Partial): string {
+ const standardHoursPerDay = toNumber(getAssignmentStandardHoursPerDay(member))
+
+ if (standardHoursPerDay === undefined || standardHoursPerDay <= 0) {
+ return ''
+ }
+
+ const paymentCycle = getAssignmentPaymentCycle(member)
+
+ if (paymentCycle === 'FORTNIGHTLY') {
+ return `${Number((standardHoursPerDay * 10).toFixed(2))} hours`
+ }
+
+ if (paymentCycle === 'MONTHLY') {
+ const minimum = Number((standardHoursPerDay * 20).toFixed(2))
+ const maximum = Number((standardHoursPerDay * 23).toFixed(2))
+
+ return `${minimum}-${maximum} hours`
+ }
+
+ return `${Number((standardHoursPerDay * 5).toFixed(2))} hours`
+}
+
/**
* Calculates the payment amount from hours worked and hourly pay rate.
*
diff --git a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/AssignmentDetailsModal.tsx b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/AssignmentDetailsModal.tsx
index 709109a02..4e2e6c669 100644
--- a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/AssignmentDetailsModal.tsx
+++ b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/AssignmentDetailsModal.tsx
@@ -33,8 +33,10 @@ export interface AssignmentDetailsFormValue {
durationMonths: string
memberHandle: string
otherRemarks?: string
+ paymentCycle: string
ratePerHour: string
startDate: string
+ standardHoursPerDay: string
standardHoursPerWeek: string
}
@@ -48,9 +50,10 @@ interface AssignmentDetailsModalProps {
interface ValidationErrors {
durationMonths?: string
+ paymentCycle?: string
ratePerHour?: string
startDate?: string
- standardHoursPerWeek?: string
+ standardHoursPerDay?: string
}
export const AssignmentDetailsModal: FC = (
@@ -59,12 +62,13 @@ export const AssignmentDetailsModal: FC = (
const [durationMonths, setDurationMonths] = useState(props.initialValue?.durationMonths || '')
const [errors, setErrors] = useState({})
const [otherRemarks, setOtherRemarks] = useState(props.initialValue?.otherRemarks || '')
+ const [paymentCycle, setPaymentCycle] = useState(props.initialValue?.paymentCycle || 'WEEKLY')
const [ratePerHour, setRatePerHour] = useState(props.initialValue?.ratePerHour || '')
const [startDate, setStartDate] = useState(
deserializeTentativeAssignmentDate(props.initialValue?.startDate),
)
- const [standardHoursPerWeek, setStandardHoursPerWeek] = useState(
- props.initialValue?.standardHoursPerWeek || '',
+ const [standardHoursPerDay, setStandardHoursPerDay] = useState(
+ props.initialValue?.standardHoursPerDay || '',
)
const timezone = useMemo(
@@ -74,8 +78,19 @@ export const AssignmentDetailsModal: FC = (
[],
)
const agreementRate = useMemo(
- () => calculateAssignmentRatePerWeek(ratePerHour, standardHoursPerWeek),
- [ratePerHour, standardHoursPerWeek],
+ () => {
+ const parsedStandardHoursPerDay = toPositiveNumberWithMaxDecimalPlaces(
+ standardHoursPerDay,
+ 2,
+ )
+
+ if (parsedStandardHoursPerDay === undefined) {
+ return ''
+ }
+
+ return calculateAssignmentRatePerWeek(ratePerHour, parsedStandardHoursPerDay * 5)
+ },
+ [ratePerHour, standardHoursPerDay],
)
useEffect(() => {
@@ -84,9 +99,10 @@ export const AssignmentDetailsModal: FC = (
}
setDurationMonths(props.initialValue?.durationMonths || '')
+ setPaymentCycle(props.initialValue?.paymentCycle || 'WEEKLY')
setRatePerHour(props.initialValue?.ratePerHour || '')
setStartDate(deserializeTentativeAssignmentDate(props.initialValue?.startDate))
- setStandardHoursPerWeek(props.initialValue?.standardHoursPerWeek || '')
+ setStandardHoursPerDay(props.initialValue?.standardHoursPerDay || '')
setOtherRemarks(props.initialValue?.otherRemarks || '')
setErrors({})
}, [props.initialValue, props.open])
@@ -95,10 +111,13 @@ export const AssignmentDetailsModal: FC = (
const nextErrors: ValidationErrors = {}
const parsedDurationMonths = toPositiveInteger(durationMonths)
const parsedRatePerHour = toPositiveNumber(ratePerHour)
- const parsedStandardHoursPerWeek = toPositiveNumberWithMaxDecimalPlaces(
- standardHoursPerWeek,
+ const parsedStandardHoursPerDay = toPositiveNumberWithMaxDecimalPlaces(
+ standardHoursPerDay,
2,
)
+ const normalizedPaymentCycle = String(paymentCycle || 'WEEKLY')
+ .trim()
+ .toUpperCase()
if (!startDate) {
nextErrors.startDate = 'Engagement start date is required.'
@@ -112,11 +131,15 @@ export const AssignmentDetailsModal: FC = (
nextErrors.ratePerHour = 'Rate per hour must be a positive number.'
}
- if (parsedStandardHoursPerWeek === undefined) {
- nextErrors.standardHoursPerWeek = 'Standard hours per week must be a '
+ if (parsedStandardHoursPerDay === undefined) {
+ nextErrors.standardHoursPerDay = 'Standard hours per day must be a '
+ 'positive number with up to 2 decimal places.'
}
+ if (!['WEEKLY', 'FORTNIGHTLY', 'MONTHLY'].includes(normalizedPaymentCycle)) {
+ nextErrors.paymentCycle = 'Payment cycle must be Weekly, Fortnightly, or Monthly.'
+ }
+
if (Object.keys(nextErrors).length > 0) {
setErrors(nextErrors)
return
@@ -126,7 +149,7 @@ export const AssignmentDetailsModal: FC = (
!startDate
|| parsedDurationMonths === undefined
|| parsedRatePerHour === undefined
- || parsedStandardHoursPerWeek === undefined
+ || parsedStandardHoursPerDay === undefined
) {
return
}
@@ -136,17 +159,20 @@ export const AssignmentDetailsModal: FC = (
durationMonths: String(parsedDurationMonths),
memberHandle: props.memberHandle || '',
otherRemarks: otherRemarks.trim() || undefined,
+ paymentCycle: normalizedPaymentCycle,
ratePerHour: parsedRatePerHour.toString(),
- standardHoursPerWeek: String(parsedStandardHoursPerWeek),
+ standardHoursPerDay: String(parsedStandardHoursPerDay),
+ standardHoursPerWeek: String(Number((parsedStandardHoursPerDay * 5).toFixed(2))),
startDate: serializeTentativeAssignmentDate(startDate),
})
}, [
agreementRate,
durationMonths,
otherRemarks,
+ paymentCycle,
props,
ratePerHour,
- standardHoursPerWeek,
+ standardHoursPerDay,
startDate,
])
@@ -252,43 +278,52 @@ export const AssignmentDetailsModal: FC = (
- Standard hours per week *
+ Standard hours per day *
{
- setStandardHoursPerWeek(
+ setStandardHoursPerDay(
sanitizePositiveNumericInput(event.target.value, 2),
)
setErrors(previous => ({
...previous,
- standardHoursPerWeek: undefined,
+ standardHoursPerDay: undefined,
}))
}}
pattern='[0-9.]*'
type='text'
- value={standardHoursPerWeek}
+ value={standardHoursPerDay}
/>
- {errors.standardHoursPerWeek
- ?
{errors.standardHoursPerWeek}
+ {errors.standardHoursPerDay
+ ?
{errors.standardHoursPerDay}
: undefined}
-
- Assignment rate per week *
+
+ Payment cycle *
-
- {!agreementRate
- ? Assignment rate is calculated after entering hourly details.
+ onChange={event => {
+ setPaymentCycle(event.target.value)
+ setErrors(previous => ({
+ ...previous,
+ paymentCycle: undefined,
+ }))
+ }}
+ value={paymentCycle}
+ >
+ Weekly
+ Fortnightly
+ Monthly
+
+ {errors.paymentCycle
+ ? {errors.paymentCycle}
: undefined}
diff --git a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx
index 6c9ad5f06..da2f743f9 100644
--- a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx
+++ b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx
@@ -115,7 +115,9 @@ type SerializedAssignmentDetailsPayload = {
durationMonths?: number
memberHandle: string
otherRemarks?: string
+ paymentCycle?: string
ratePerHour: string
+ standardHoursPerDay?: number
standardHoursPerWeek?: number
startDate: string
}
@@ -224,8 +226,16 @@ function serializeAssignmentDetails(
? String(detail.otherRemarks)
.trim()
: undefined,
+ paymentCycle: detail.paymentCycle
+ ? String(detail.paymentCycle)
+ .trim()
+ .toUpperCase()
+ : 'WEEKLY',
ratePerHour: String(detail.ratePerHour || '')
.trim(),
+ standardHoursPerDay: detail.standardHoursPerDay
+ ? Number(detail.standardHoursPerDay)
+ : undefined,
standardHoursPerWeek: detail.standardHoursPerWeek
? Number(detail.standardHoursPerWeek)
: undefined,
@@ -248,9 +258,18 @@ function toAssignmentDetailsValue(assignment: EngagementAssignment): AssignmentD
otherRemarks: assignment.otherRemarks
? String(assignment.otherRemarks)
: undefined,
+ paymentCycle: assignment.paymentCycle
+ ? String(assignment.paymentCycle)
+ : 'WEEKLY',
ratePerHour: assignment.ratePerHour
? String(assignment.ratePerHour)
: '',
+ standardHoursPerDay:
+ assignment.standardHoursPerDay !== undefined && assignment.standardHoursPerDay !== null
+ ? String(assignment.standardHoursPerDay)
+ : (assignment.standardHoursPerWeek !== undefined && assignment.standardHoursPerWeek !== null
+ ? String(Number(assignment.standardHoursPerWeek) / 5)
+ : ''),
standardHoursPerWeek:
assignment.standardHoursPerWeek !== undefined && assignment.standardHoursPerWeek !== null
? String(assignment.standardHoursPerWeek)
diff --git a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementPrivateSection.tsx b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementPrivateSection.tsx
index e11fa900f..c2a357e4a 100644
--- a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementPrivateSection.tsx
+++ b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementPrivateSection.tsx
@@ -18,9 +18,9 @@ import {
} from '../../../../lib/components/form'
import {
formatAssignmentCurrency,
- getAssignmentStandardHoursPerWeek,
+ getAssignmentPaymentCycle,
+ getAssignmentStandardHoursPerDay,
} from '../../../../lib/utils'
-import { formatCurrency } from '../../../../lib/utils/payment.utils'
import {
AssignmentDetailsFormValue,
@@ -116,7 +116,9 @@ function createEmptyAssignmentDetails(): AssignmentDetailsFormValue {
durationMonths: '',
memberHandle: '',
otherRemarks: undefined,
+ paymentCycle: 'WEEKLY',
ratePerHour: '',
+ standardHoursPerDay: '',
standardHoursPerWeek: '',
startDate: '',
}
@@ -287,15 +289,15 @@ export const EngagementPrivateSection: FC = (
,
- Hours/Wk:
+ Hours/Day:
{' '}
- {getAssignmentStandardHoursPerWeek(assignmentDetail) || '-'}
+ {getAssignmentStandardHoursPerDay(assignmentDetail) || '-'}
,
- Rate/Wk:
+ Payment Cycle:
{' '}
- {formatCurrency(assignmentDetail.agreementRate)}
+ {getAssignmentPaymentCycle(assignmentDetail)}
{!isLockedAssignment
? (
diff --git a/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx b/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx
index 71f76f637..0b0f59e24 100644
--- a/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx
+++ b/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx
@@ -51,6 +51,8 @@ import {
import {
calculateAssignmentRatePerWeek,
deserializeTentativeAssignmentDate,
+ getAssignmentPaymentCycle,
+ getAssignmentStandardHoursPerDay,
getCountableEngagementAssignments,
normalizeAssignmentStatus,
sanitizePositiveNumericInput,
@@ -133,6 +135,32 @@ function toOptionalNumber(value: unknown): number | undefined {
return parsedValue
}
+function formatPaymentCycle(value: unknown): string {
+ const normalizedCycle = String(value || 'WEEKLY')
+ .trim()
+ .toUpperCase()
+
+ if (normalizedCycle === 'FORTNIGHTLY') {
+ return 'Fortnightly'
+ }
+
+ if (normalizedCycle === 'MONTHLY') {
+ return 'Monthly'
+ }
+
+ return 'Weekly'
+}
+
+function toWeeklyHours(standardHoursPerDay: unknown): number | undefined {
+ const parsedValue = Number(standardHoursPerDay)
+
+ if (!Number.isFinite(parsedValue) || parsedValue <= 0) {
+ return undefined
+ }
+
+ return Number((parsedValue * 5).toFixed(2))
+}
+
function isAssignedStatus(status: string): boolean {
return status
.trim()
@@ -226,7 +254,9 @@ function buildAssignmentDetailsPayloadEntry(
appendPayloadStringField(payload, 'agreementRate', assignment.agreementRate)
appendPayloadNumberField(payload, 'durationMonths', assignment.durationMonths)
appendPayloadStringField(payload, 'otherRemarks', assignment.otherRemarks)
+ appendPayloadStringField(payload, 'paymentCycle', assignment.paymentCycle)
appendPayloadStringField(payload, 'ratePerHour', assignment.ratePerHour)
+ appendPayloadNumberField(payload, 'standardHoursPerDay', assignment.standardHoursPerDay)
appendPayloadNumberField(payload, 'standardHoursPerWeek', assignment.standardHoursPerWeek)
appendPayloadStringField(payload, 'startDate', assignment.startDate)
@@ -237,8 +267,10 @@ interface EditAssignmentPayload {
agreementRate: string
durationMonths?: number
otherRemarks?: string
+ paymentCycle: string
ratePerHour: string
startDate: string
+ standardHoursPerDay: number
standardHoursPerWeek: number
}
@@ -287,9 +319,10 @@ interface EditAssignmentModalProps {
interface EditAssignmentErrors {
durationMonths?: string
+ paymentCycle?: string
ratePerHour?: string
startDate?: string
- standardHoursPerWeek?: string
+ standardHoursPerDay?: string
}
export const EditAssignmentModal: FC = (
@@ -302,19 +335,39 @@ export const EditAssignmentModal: FC = (
)
const [errors, setErrors] = useState({})
const [otherRemarks, setOtherRemarks] = useState(props.assignment?.otherRemarks || '')
+ const [paymentCycle, setPaymentCycle] = useState(getAssignmentPaymentCycle(props.assignment || {}))
const [ratePerHour, setRatePerHour] = useState(props.assignment?.ratePerHour || '')
const [startDate, setStartDate] = useState(
deserializeTentativeAssignmentDate(props.assignment?.startDate),
)
- const [standardHoursPerWeek, setStandardHoursPerWeek] = useState(
- props.assignment?.standardHoursPerWeek !== undefined && props.assignment?.standardHoursPerWeek !== null
- ? String(props.assignment.standardHoursPerWeek)
+ const [standardHoursPerDay, setStandardHoursPerDay] = useState(
+ getAssignmentStandardHoursPerDay(props.assignment || {}) !== undefined
+ ? String(getAssignmentStandardHoursPerDay(props.assignment || {}))
: '',
)
+ const weeklyHours = useMemo(
+ () => {
+ if (!standardHoursPerDay) {
+ return ''
+ }
+
+ const parsedStandardHoursPerDay = toPositiveNumberWithMaxDecimalPlaces(
+ standardHoursPerDay,
+ 2,
+ )
+
+ if (parsedStandardHoursPerDay === undefined) {
+ return ''
+ }
+
+ return String(Number((parsedStandardHoursPerDay * 5).toFixed(2)))
+ },
+ [standardHoursPerDay],
+ )
const agreementRate = useMemo(
- () => calculateAssignmentRatePerWeek(ratePerHour, standardHoursPerWeek),
- [ratePerHour, standardHoursPerWeek],
+ () => calculateAssignmentRatePerWeek(ratePerHour, weeklyHours),
+ [ratePerHour, weeklyHours],
)
const isSubmitting = props.isSubmitting === true
@@ -326,11 +379,12 @@ export const EditAssignmentModal: FC = (
)
setErrors({})
setOtherRemarks(props.assignment?.otherRemarks || '')
+ setPaymentCycle(getAssignmentPaymentCycle(props.assignment || {}))
setRatePerHour(props.assignment?.ratePerHour || '')
setStartDate(deserializeTentativeAssignmentDate(props.assignment?.startDate))
- setStandardHoursPerWeek(
- props.assignment?.standardHoursPerWeek !== undefined && props.assignment?.standardHoursPerWeek !== null
- ? String(props.assignment.standardHoursPerWeek)
+ setStandardHoursPerDay(
+ getAssignmentStandardHoursPerDay(props.assignment || {}) !== undefined
+ ? String(getAssignmentStandardHoursPerDay(props.assignment || {}))
: '',
)
}, [props.assignment])
@@ -355,10 +409,13 @@ export const EditAssignmentModal: FC = (
? toPositiveInteger(durationMonths)
: undefined
const parsedRatePerHour = toPositiveNumber(ratePerHour)
- const parsedStandardHoursPerWeek = toPositiveNumberWithMaxDecimalPlaces(
- standardHoursPerWeek,
+ const parsedStandardHoursPerDay = toPositiveNumberWithMaxDecimalPlaces(
+ standardHoursPerDay,
2,
)
+ const normalizedPaymentCycle = String(paymentCycle || 'WEEKLY')
+ .trim()
+ .toUpperCase()
if (!startDate) {
nextErrors.startDate = 'Billing start date is required.'
@@ -372,11 +429,15 @@ export const EditAssignmentModal: FC = (
nextErrors.ratePerHour = 'Rate per hour must be a positive number.'
}
- if (parsedStandardHoursPerWeek === undefined) {
- nextErrors.standardHoursPerWeek = 'Standard hours per week must be a '
+ if (parsedStandardHoursPerDay === undefined) {
+ nextErrors.standardHoursPerDay = 'Standard hours per day must be a '
+ 'positive number with up to 2 decimal places.'
}
+ if (!['WEEKLY', 'FORTNIGHTLY', 'MONTHLY'].includes(normalizedPaymentCycle)) {
+ nextErrors.paymentCycle = 'Payment cycle must be Weekly, Fortnightly, or Monthly.'
+ }
+
if (Object.keys(nextErrors).length > 0) {
setErrors(nextErrors)
return
@@ -385,16 +446,24 @@ export const EditAssignmentModal: FC = (
if (
!startDate
|| parsedRatePerHour === undefined
- || parsedStandardHoursPerWeek === undefined
+ || parsedStandardHoursPerDay === undefined
) {
return
}
+ const parsedStandardHoursPerWeek = toWeeklyHours(parsedStandardHoursPerDay)
+
+ if (parsedStandardHoursPerWeek === undefined) {
+ return
+ }
+
await props.onConfirm({
agreementRate,
durationMonths: parsedDurationMonths,
otherRemarks: otherRemarks.trim() || undefined,
+ paymentCycle: normalizedPaymentCycle,
ratePerHour: parsedRatePerHour.toString(),
+ standardHoursPerDay: parsedStandardHoursPerDay,
standardHoursPerWeek: parsedStandardHoursPerWeek,
startDate: serializeTentativeAssignmentDate(startDate),
})
@@ -404,10 +473,11 @@ export const EditAssignmentModal: FC = (
agreementRate,
durationMonths,
otherRemarks,
+ paymentCycle,
props,
ratePerHour,
resetState,
- standardHoursPerWeek,
+ standardHoursPerDay,
startDate,
])
@@ -508,41 +578,53 @@ export const EditAssignmentModal: FC = (
- Standard hours per week *
+ Standard hours per day *
{
- setStandardHoursPerWeek(
+ setStandardHoursPerDay(
sanitizePositiveNumericInput(event.target.value, 2),
)
setErrors(previous => ({
...previous,
- standardHoursPerWeek: undefined,
+ standardHoursPerDay: undefined,
}))
}}
pattern='[0-9.]*'
type='text'
- value={standardHoursPerWeek}
+ value={standardHoursPerDay}
/>
- {errors.standardHoursPerWeek
- ?
{errors.standardHoursPerWeek}
+ {errors.standardHoursPerDay
+ ?
{errors.standardHoursPerDay}
: undefined}
@@ -918,16 +1000,16 @@ export const EngagementPaymentPage: FC = () => {
- Standard Hours Per Week
+ Standard Hours Per Day
*
- {assignment.standardHoursPerWeek || '-'}
+ {getAssignmentStandardHoursPerDay(assignment) || '-'}
- Rate Per Week
- {formatCurrency(assignment.agreementRate)}
+ Payment Cycle
+ {formatPaymentCycle(assignment.paymentCycle)}
From 871bd46b05d8a63b19351e80f747be96c604e611 Mon Sep 17 00:00:00 2001
From: Harshit Chudasama
Date: Tue, 19 May 2026 14:25:39 +0530
Subject: [PATCH 08/56] Updated Task Description in Payment Details
---
.../wallet-admin/src/lib/services/wallet.ts | 37 +++++++++++++++++--
1 file changed, 33 insertions(+), 4 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.ts b/src/apps/wallet-admin/src/lib/services/wallet.ts
index 78445ebae..c9ae4148d 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.ts
@@ -2,6 +2,7 @@
import { EnvironmentConfig } from '~/config'
import { xhrDeleteAsync, xhrGetAsync, xhrPatchAsync, xhrPostAsync } from '~/libs/core'
import { postAsyncWithBlobHandling } from '~/libs/core/lib/xhr/xhr-functions/xhr.functions'
+import { fetchChallenge } from '~/apps/work/src/lib/services/challenges.service'
import { WalletDetails } from '../models/WalletDetails'
import {
@@ -266,6 +267,25 @@ export async function fetchPayoutAuditLogs(paymentId: string): Promise {
+ if (!winning.externalId || !paymentDetails.taskDetails) {
+ return
+ }
+
+ try {
+ const challenge = await fetchChallenge(winning.externalId)
+ if (challenge.description) {
+ paymentDetails.taskDetails.description = challenge.description
+ }
+ } catch {
+ // Fall through — keep whatever description the finance API returned
+ }
+}
+
export async function fetchWinningPaymentDetails(
winning: Winning,
): Promise {
@@ -279,10 +299,19 @@ export async function fetchWinningPaymentDetails(
const paymentDetails = response.data || {}
- if (
- winning.type.toLowerCase() !== 'engagement payment'
- || paymentDetails.engagementDetails
- ) {
+ if (winning.type.toLowerCase() !== 'engagement payment') {
+ if (winning.type.toLowerCase() === 'task payment') {
+ await enrichTaskDescription(winning, paymentDetails)
+ }
+
+ return paymentDetails
+ }
+
+ if (paymentDetails.engagementDetails) {
+ return paymentDetails
+ }
+
+ if (paymentDetails.engagementDetails) {
return paymentDetails
}
From 2df0b3eff276ffec0520b0074962c6b3cce40cb6 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Tue, 19 May 2026 15:49:04 +0530
Subject: [PATCH 09/56] PM-4979 Update to wallet admin tabs and UI
---
.../InputHandleAutocomplete.tsx | 2 +-
.../home/tabs/payments/Payments.module.scss | 29 +
.../tabs/payments/PaymentsListView.spec.tsx | 79 ++-
.../home/tabs/payments/PaymentsListView.tsx | 590 +++++++++++-------
.../filter-bar/FilterBar.module.scss | 119 +++-
.../lib/components/filter-bar/FilterBar.tsx | 282 ++++++---
.../FilterCheckboxMultiselect.module.scss | 71 +++
.../filter-bar/FilterCheckboxMultiselect.tsx | 266 ++++++++
.../FilterHandleAutocomplete.module.scss | 19 +
.../filter-bar/FilterHandleAutocomplete.tsx | 120 ++++
.../wallet-admin/src/lib/services/wallet.ts | 20 +-
11 files changed, 1261 insertions(+), 336 deletions(-)
create mode 100644 src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.module.scss
create mode 100644 src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.module.scss
create mode 100644 src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.tsx
diff --git a/src/apps/admin/src/platform/gamification-admin/src/game-lib/member-autocomplete/InputHandleAutocomplete.tsx b/src/apps/admin/src/platform/gamification-admin/src/game-lib/member-autocomplete/InputHandleAutocomplete.tsx
index f0182f640..8ec042b09 100644
--- a/src/apps/admin/src/platform/gamification-admin/src/game-lib/member-autocomplete/InputHandleAutocomplete.tsx
+++ b/src/apps/admin/src/platform/gamification-admin/src/game-lib/member-autocomplete/InputHandleAutocomplete.tsx
@@ -81,7 +81,7 @@ const InputHandleAutocomplete: FC = (props: InputH
hideInlineErrors={props.hideInlineErrors}
type='text'
>
-
className={styles.memberSelect}
cacheOptions
getOptionLabel={getUserProp('handle')}
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/Payments.module.scss b/src/apps/wallet-admin/src/home/tabs/payments/Payments.module.scss
index 25d4e4412..59b259e1c 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/Payments.module.scss
+++ b/src/apps/wallet-admin/src/home/tabs/payments/Payments.module.scss
@@ -62,6 +62,35 @@
color: white;
}
+ .paymentListingTabs {
+ display: flex;
+ align-items: flex-end;
+ gap: $sp-6;
+ margin-bottom: $sp-4;
+ border-bottom: 1px solid $black-20;
+ }
+
+ .paymentListingTab {
+ border: none;
+ background: transparent;
+ padding: $sp-2 0;
+ margin-bottom: -1px;
+ cursor: pointer;
+ color: $black-60;
+ font-weight: 600;
+ border-bottom: 2px solid transparent;
+
+ &:focus-visible {
+ outline: 2px solid $turq-160;
+ outline-offset: 2px;
+ }
+ }
+
+ .paymentListingTabActive {
+ color: $turq-160;
+ border-bottom-color: $turq-160;
+ }
+
.centered {
height: 200px;
display: flex;
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
index b73f60a1d..62a34fb28 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
+++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
@@ -209,6 +209,25 @@ const paymentsResponse = {
],
}
+const TOPCODER_TAB_CATEGORIES = [
+ 'TASK_PAYMENT',
+ 'CONTEST_PAYMENT',
+ 'COPILOT_PAYMENT',
+ 'REVIEW_BOARD_PAYMENT',
+ 'ENGAGEMENT_PAYMENT',
+]
+
+const ALL_STATUS_FILTER_VALUES = [
+ 'OWED',
+ 'ON_HOLD_ADMIN',
+ 'ON_HOLD',
+ 'PAID',
+ 'CANCELLED',
+ 'PROCESSING',
+ 'FAILED',
+ 'RETURNED',
+]
+
describe('PaymentsListView', () => {
beforeEach(() => {
mockFilterBar.mockClear()
@@ -240,7 +259,9 @@ describe('PaymentsListView', () => {
.toHaveBeenCalled()
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- status: 'ON_HOLD_ADMIN',
+ category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
+ date: 'last30days',
+ status: ['ON_HOLD_ADMIN'],
}))
})
@@ -260,6 +281,7 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
category: 'TAAS_PAYMENT',
+ status: ALL_STATUS_FILTER_VALUES,
}))
})
@@ -273,7 +295,9 @@ describe('PaymentsListView', () => {
await screen.findByText('Member earnings will appear here.')
expect(mockedGetPayments)
- .toHaveBeenLastCalledWith(10, 0, {})
+ .toHaveBeenLastCalledWith(10, 0, {
+ categories: TOPCODER_TAB_CATEGORIES,
+ })
fireEvent.click(screen.getByRole('button', { name: 'Approver View' }))
@@ -288,7 +312,9 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- status: 'ON_HOLD_ADMIN',
+ category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
+ date: 'last30days',
+ status: ['ON_HOLD_ADMIN'],
}))
})
@@ -302,13 +328,14 @@ describe('PaymentsListView', () => {
await screen.findByText('Member earnings will appear here.')
expect(mockedGetPayments)
- .toHaveBeenLastCalledWith(10, 0, {})
- expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
- .toEqual({
- category: 'all',
- date: 'all',
- status: 'all',
+ .toHaveBeenLastCalledWith(10, 0, {
+ categories: TOPCODER_TAB_CATEGORIES,
})
+ expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
+ .toEqual(expect.objectContaining({
+ category: TOPCODER_TAB_CATEGORIES,
+ status: ALL_STATUS_FILTER_VALUES,
+ }))
})
it('lets an explicit status filter override the default approver status', async () => {
@@ -321,7 +348,9 @@ describe('PaymentsListView', () => {
await screen.findByText('No payments match your filters.')
await act(async () => {
- mockFilterBar.mock.calls.at(-1)?.[0].onFilterChange('status', ['PAID'])
+ const filterBarProps = mockFilterBar.mock.calls.at(-1)?.[0]
+ filterBarProps.onFilterChange('status', ['PAID'])
+ filterBarProps.onApplyFilters()
})
await waitFor(() => {
@@ -335,7 +364,9 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- status: 'PAID',
+ category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
+ date: 'last30days',
+ status: ['PAID'],
}))
})
@@ -349,7 +380,9 @@ describe('PaymentsListView', () => {
await screen.findByText('Member earnings will appear here.')
await act(async () => {
- mockFilterBar.mock.calls.at(-1)?.[0].onFilterChange('status', ['PAID'])
+ const filterBarProps = mockFilterBar.mock.calls.at(-1)?.[0]
+ filterBarProps.onFilterChange('status', ['PAID'])
+ filterBarProps.onApplyFilters()
})
await waitFor(() => {
@@ -363,7 +396,7 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
category: 'TAAS_PAYMENT',
- status: 'PAID',
+ status: ['PAID'],
}))
})
@@ -431,7 +464,7 @@ describe('PaymentsListView', () => {
})
})
- it('includes the topgear payment type in the category filter options', async () => {
+ it('scopes the type filter to topcoder categories and lists Topgear winnings on its own tab', async () => {
render(
{
const filterProps = mockFilterBar.mock.calls.at(-1)?.[0]
const typeFilter = filterProps.filters.find((filter: any) => filter.key === 'category')
- expect(typeFilter.options.some((option: any) => (
- option.value === 'TOPGEAR_PAYMENT' && option.label === 'Topgear Payment'
- )))
- .toBe(true)
+ expect(typeFilter.options.some((option: any) => option.value === 'TOPGEAR_PAYMENT'))
+ .toBe(false)
+
+ expect(screen.getByRole('tab', { name: 'Topgear' }))
+ .toBeTruthy()
+
+ fireEvent.click(screen.getByRole('tab', { name: 'Topgear' }))
+
+ await waitFor(() => {
+ expect(mockedGetPayments)
+ .toHaveBeenLastCalledWith(10, 0, {
+ category: ['TOPGEAR_PAYMENT'],
+ })
+ })
})
})
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
index ece7f1f47..246d54291 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
+++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
@@ -31,6 +31,74 @@ const topgearPaymentCategory = 'TOPGEAR_PAYMENT'
const defaultPageSize = 10
const approverDefaultDateFilter = 'last30days'
+type PaymentListingTab = 'topcoder' | 'topgear' | 'taas'
+
+const TOPCODER_PAYMENT_CATEGORIES: ReadonlyArray = [
+ 'TASK_PAYMENT',
+ 'CONTEST_PAYMENT',
+ 'COPILOT_PAYMENT',
+ 'REVIEW_BOARD_PAYMENT',
+ 'ENGAGEMENT_PAYMENT',
+]
+
+const STATUS_FILTER_OPTIONS: { label: string, value: string }[] = [
+ { label: 'Owed', value: 'OWED' },
+ { label: 'On Hold (Admin)', value: 'ON_HOLD_ADMIN' },
+ { label: 'On Hold (Member)', value: 'ON_HOLD' },
+ { label: 'Paid', value: 'PAID' },
+ { label: 'Cancelled', value: 'CANCELLED' },
+ { label: 'Processing', value: 'PROCESSING' },
+ { label: 'Failed', value: 'FAILED' },
+ { label: 'Returned', value: 'RETURNED' },
+]
+
+const ALL_STATUS_FILTER_VALUES: ReadonlyArray = STATUS_FILTER_OPTIONS.map(option => option.value)
+
+const TOPCODER_TYPE_FILTER_OPTIONS: { label: string, value: string }[] = [
+ { label: 'Task Payment', value: 'TASK_PAYMENT' },
+ { label: 'Contest Payment', value: 'CONTEST_PAYMENT' },
+ { label: 'Copilot Payment', value: 'COPILOT_PAYMENT' },
+ { label: 'Review Board Payment', value: 'REVIEW_BOARD_PAYMENT' },
+ { label: 'Engagement Payment', value: 'ENGAGEMENT_PAYMENT' },
+]
+
+function normalizeFilterRecord(filters: Record): Record {
+ return Object.fromEntries(
+ Object.entries(filters)
+ .map(([key, values]) => [key, [...values].sort()])
+ .filter(([, values]) => values.length > 0),
+ )
+}
+
+function areFilterRecordsEqual(
+ left: Record,
+ right: Record,
+): boolean {
+ const normalizedLeft = normalizeFilterRecord(left)
+ const normalizedRight = normalizeFilterRecord(right)
+ const keys = Array.from(new Set([
+ ...Object.keys(normalizedLeft),
+ ...Object.keys(normalizedRight),
+ ]))
+
+ return keys.every(key => {
+ const leftValues = normalizedLeft[key] ?? []
+ const rightValues = normalizedRight[key] ?? []
+ if (leftValues.length !== rightValues.length) {
+ return false
+ }
+
+ return leftValues.every((value, index) => value === rightValues[index])
+ })
+}
+
+function withoutFilterKey(filters: Record, key: string): Record {
+ const nextFilters = { ...filters }
+ delete nextFilters[key]
+
+ return nextFilters
+}
+
interface PaymentsListViewProps {
profile: UserProfile
isCollapsed?: boolean
@@ -212,21 +280,30 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
const restrictedCategory = isWiproTaasAdmin && !hasPaymentAdminRole ? taasPaymentCategory : undefined
const restrictedDefaultStatus = isApproverView ? restrictedRoleDefaultStatus : undefined
const isRestrictedApproverView = isApproverView
- const [filters, setFilters] = React.useState>({})
+ const [draftFilters, setDraftFilters] = React.useState>({})
+ const [submittedFilters, setSubmittedFilters] = React.useState>({})
+ const [paymentListingTab, setPaymentListingTab] = React.useState('topcoder')
+
+ const showPaymentListingTabs = !isApproverView
+ && !(restrictedCategory && !hasPaymentAdminRole)
+
+ React.useEffect(() => {
+ if (restrictedCategory && !hasPaymentAdminRole) {
+ setPaymentListingTab('taas')
+ }
+ }, [restrictedCategory, hasPaymentAdminRole])
// eslint-disable-next-line complexity
const appliedFilters = React.useMemo>(() => {
- // Strip 'all' sentinel values — never forward them to the API
const activeFilters = Object.fromEntries(
- Object.entries(filters)
- .filter(([, v]) => v.length > 0 && v[0] !== 'all'),
+ Object.entries(submittedFilters)
+ .filter(([, v]) => v.length > 0 && !(v.length === 1 && v[0] === 'all')),
)
if (restrictedCategory) {
- // WiproTaasAdmin scoped to a single category
let statusFilter: Record = {}
- if (filters.status && filters.status[0] !== 'all') {
- statusFilter = { status: activeFilters.status }
+ if (submittedFilters.status?.length) {
+ statusFilter = { status: submittedFilters.status }
}
return {
@@ -237,85 +314,178 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
}
if (isApproverView) {
- // Payment Approver: restrict to allowed categories, default status ON_HOLD_ADMIN
let statusFilter: Record = {}
- if (filters.status && filters.status[0] !== 'all') {
- statusFilter = { status: activeFilters.status }
- } else if (!filters.status && restrictedDefaultStatus) {
+ if (submittedFilters.status?.length) {
+ statusFilter = { status: submittedFilters.status }
+ } else if (restrictedDefaultStatus) {
statusFilter = { status: [restrictedDefaultStatus] }
}
let dateFilter: Record = {}
- if (filters.date && filters.date[0] !== 'all') {
+ if (submittedFilters.date?.length && submittedFilters.date[0] !== 'all') {
dateFilter = { date: activeFilters.date }
- } else if (!filters.date) {
+ } else if (!submittedFilters.date?.length) {
dateFilter = { date: [approverDefaultDateFilter] }
}
- let categoryFilter: Record = {}
- if (
- activeFilters.category
- && approverAllowedCategories.includes(activeFilters.category[0])
- ) {
- categoryFilter = { category: activeFilters.category }
- } else if (!filters.category || filters.category[0] === 'all') {
- categoryFilter = { categories: ([] as string[]).concat(approverAllowedCategories) }
- }
+ const pickedApproverTypes = (submittedFilters.category ?? [])
+ .filter(c => approverAllowedCategories.includes(c))
+ const categories = pickedApproverTypes.length > 0
+ ? pickedApproverTypes
+ : [...approverAllowedCategories]
const rest = { ...activeFilters }
delete rest.category
+ delete rest.date
+ delete rest.status
return {
...rest,
- ...categoryFilter,
+ categories,
...statusFilter,
...dateFilter,
}
}
- return activeFilters
- }, [filters, restrictedCategory, restrictedDefaultStatus, isApproverView])
+ const base = { ...activeFilters }
+ delete base.category
+
+ const allStatusesCount = STATUS_FILTER_OPTIONS.length
+ const statusSelection = submittedFilters.status ?? []
+ const statusIsFullSelection = statusSelection.length === 0
+ || statusSelection.length === allStatusesCount
+
+ if (statusIsFullSelection) {
+ delete base.status
+ }
+
+ if (paymentListingTab === 'topgear') {
+ return {
+ ...base,
+ category: [topgearPaymentCategory],
+ }
+ }
+
+ if (paymentListingTab === 'taas') {
+ return {
+ ...base,
+ category: [taasPaymentCategory],
+ }
+ }
+
+ const pickedTopcoderTypes = (submittedFilters.category ?? [])
+ .filter(c => TOPCODER_PAYMENT_CATEGORIES.includes(c))
+ const categories = pickedTopcoderTypes.length > 0
+ ? pickedTopcoderTypes
+ : [...TOPCODER_PAYMENT_CATEGORIES]
+
+ return {
+ ...base,
+ categories,
+ }
+ }, [
+ submittedFilters,
+ restrictedCategory,
+ restrictedDefaultStatus,
+ isApproverView,
+ paymentListingTab,
+ ])
+
+ const hasPendingFilterChanges = React.useMemo(
+ () => !areFilterRecordsEqual(draftFilters, submittedFilters),
+ [draftFilters, submittedFilters],
+ )
const hasActiveFilters = React.useMemo(
() => Object.entries(appliedFilters)
.some(([key, value]) => key !== 'category' && key !== 'categories' && value.length > 0),
[appliedFilters],
)
- const selectedValueOverrides = React.useMemo>(() => {
+ const selectedValueOverrides = React.useMemo>(() => {
if (restrictedCategory) {
- const statusOverride = filters.status?.[0] !== 'all' ? filters.status?.[0] : undefined
-
return {
category: restrictedCategory,
- ...(statusOverride ? { status: statusOverride } : {}),
+ status: draftFilters.status !== undefined
+ ? draftFilters.status
+ : [...ALL_STATUS_FILTER_VALUES],
}
}
if (isApproverView) {
- const statusOverride = filters.status?.[0] !== 'all' ? filters.status?.[0] : undefined
-
return {
- ...(statusOverride ? { status: statusOverride } : {}),
+ ...(draftFilters.status !== undefined
+ ? { status: draftFilters.status }
+ : { status: [restrictedDefaultStatus ?? 'ON_HOLD_ADMIN'] }),
+ ...(draftFilters.category !== undefined
+ ? { category: draftFilters.category }
+ : { category: [...approverAllowedCategories] }),
}
}
- return {} as Record
- }, [filters.status, restrictedCategory, isApproverView])
+ const overrides: Record = {}
- const defaultDropdownValues = React.useMemo>(() => {
- const defaults: Record = {}
+ if (draftFilters.status !== undefined) {
+ overrides.status = draftFilters.status
+ }
- if (!restrictedCategory) {
- defaults.category = filters.category?.[0] ?? 'all'
+ if (draftFilters.category !== undefined) {
+ overrides.category = draftFilters.category
}
- defaults.date = filters.date?.[0] ?? (isApproverView ? approverDefaultDateFilter : 'all')
+ if (draftFilters.dateFrom?.[0]) {
+ overrides.dateFrom = draftFilters.dateFrom[0]
+ }
+
+ if (draftFilters.dateTo?.[0]) {
+ overrides.dateTo = draftFilters.dateTo[0]
+ }
+
+ return overrides
+ }, [
+ draftFilters.status,
+ draftFilters.category,
+ draftFilters.dateFrom,
+ draftFilters.dateTo,
+ restrictedCategory,
+ isApproverView,
+ restrictedDefaultStatus,
+ ])
+
+ const defaultDropdownValues = React.useMemo((): Record => {
+ if (restrictedCategory) {
+ return {}
+ }
- // Fall back to the restricted default if no filter is applied
- defaults.status = filters.status?.[0] ?? (restrictedDefaultStatus || 'all')
+ if (isApproverView) {
+ const approverDefaults: Record = {
+ category: draftFilters.category !== undefined
+ ? draftFilters.category
+ : [...approverAllowedCategories],
+ date: draftFilters.date?.[0] ?? approverDefaultDateFilter,
+ status: draftFilters.status !== undefined
+ ? draftFilters.status
+ : [restrictedDefaultStatus ?? 'ON_HOLD_ADMIN'],
+ }
+ return approverDefaults
+ }
- return defaults
- }, [filters.category, filters.date, filters.status, restrictedCategory, restrictedDefaultStatus, isApproverView])
+ const topcoderDefaults: Record = {
+ category: draftFilters.category !== undefined
+ ? draftFilters.category
+ : [...TOPCODER_PAYMENT_CATEGORIES],
+ status: draftFilters.status !== undefined
+ ? draftFilters.status
+ : [...ALL_STATUS_FILTER_VALUES],
+ }
+ return topcoderDefaults
+ }, [
+ draftFilters.category,
+ draftFilters.date,
+ draftFilters.status,
+ restrictedCategory,
+ restrictedDefaultStatus,
+ isApproverView,
+ ])
const [pagination, setPagination] = React.useState({
currentPage: 1,
pageSize: defaultPageSize,
@@ -502,6 +672,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
}
setPaymentRoleView(nextView)
+ setPaymentListingTab('topcoder')
setBulkAuditNote('')
setSelectedPaymentAction(undefined)
setSelectedPayments({})
@@ -509,14 +680,23 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
...prev,
currentPage: 1,
}))
- setFilters(prev => {
- const nextFilters = { ...prev }
- delete nextFilters.category
-
- return nextFilters
- })
+ setDraftFilters(prev => withoutFilterKey(prev, 'category'))
+ setSubmittedFilters(prev => withoutFilterKey(prev, 'category'))
}, [paymentRoleView])
+ const onPaymentListingTabChange = useCallback((tab: PaymentListingTab) => {
+ setPaymentListingTab(tab)
+ setBulkAuditNote('')
+ setSelectedPaymentAction(undefined)
+ setSelectedPayments({})
+ setPagination(prev => ({
+ ...prev,
+ currentPage: 1,
+ }))
+ setDraftFilters(prev => withoutFilterKey(prev, 'category'))
+ setSubmittedFilters(prev => withoutFilterKey(prev, 'category'))
+ }, [])
+
/**
* Applies the selected approver action to the current payment selection.
*
@@ -578,6 +758,112 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
await fetchWinnings()
}, [selectedPayments, fetchWinnings])
+ const listingFilters = React.useMemo((): Filter[] => {
+ const pageSizeFilter: Filter = {
+ key: 'pageSize',
+ label: 'Payments per page',
+ options: [
+ { label: '10', value: '10' },
+ { label: '50', value: '50' },
+ { label: '100', value: '100' },
+ ],
+ type: 'dropdown',
+ }
+
+ const handleFilter: Filter = {
+ key: 'winnerIds',
+ label: 'Handle/Username',
+ type: 'member_autocomplete',
+ }
+
+ const statusFilter: Filter = {
+ key: 'status',
+ label: 'Status',
+ options: STATUS_FILTER_OPTIONS,
+ type: 'multi_dropdown',
+ }
+
+ if (isWiproTaasAdmin && !hasPaymentAdminRole) {
+ return [
+ handleFilter,
+ statusFilter,
+ {
+ key: 'dateFrom',
+ label: 'Date from',
+ type: 'date',
+ },
+ {
+ key: 'dateTo',
+ label: 'Date to',
+ type: 'date',
+ },
+ pageSizeFilter,
+ ]
+ }
+
+ if (isApproverView) {
+ return [
+ handleFilter,
+ statusFilter,
+ {
+ key: 'category',
+ label: 'Payment Type',
+ options: [
+ { label: 'Task Payments', value: taskPaymentCategory },
+ { label: 'Engagement Payments', value: engagementPaymentCategory },
+ ],
+ type: 'multi_dropdown',
+ },
+ {
+ key: 'date',
+ label: 'Date',
+ options: [
+ { label: 'Last 7 days', value: 'last7days' },
+ { label: 'Last 30 days', value: 'last30days' },
+ { label: 'All', value: 'all' },
+ ],
+ type: 'dropdown',
+ },
+ pageSizeFilter,
+ ]
+ }
+
+ const filtersOut: Filter[] = [
+ handleFilter,
+ statusFilter,
+ ]
+
+ if (paymentListingTab === 'topcoder') {
+ filtersOut.push({
+ key: 'category',
+ label: 'Type',
+ options: TOPCODER_TYPE_FILTER_OPTIONS,
+ type: 'multi_dropdown',
+ })
+ }
+
+ filtersOut.push(
+ {
+ key: 'dateFrom',
+ label: 'Date from',
+ type: 'date',
+ },
+ {
+ key: 'dateTo',
+ label: 'Date to',
+ type: 'date',
+ },
+ pageSizeFilter,
+ )
+
+ return filtersOut
+ }, [
+ hasPaymentAdminRole,
+ isApproverView,
+ isWiproTaasAdmin,
+ paymentListingTab,
+ ])
+
const selectedPaymentActions = selectedPaymentsCount > 0
? [
{
@@ -628,6 +914,26 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
)}
+ {showPaymentListingTabs && (
+
+ {([
+ { id: 'topcoder' as const, label: 'Topcoder' },
+ { id: 'topgear' as const, label: 'Topgear' },
+ { id: 'taas' as const, label: 'TaaS' },
+ ]).map(tab => (
+ onPaymentListingTabChange(tab.id)}
+ >
+ {tab.label}
+
+ ))}
+
+ )}
= (props: PaymentsListViewProp
toast.success('Download complete', { position: toast.POSITION.BOTTOM_RIGHT })
}}
selectedValueOverrides={{ ...defaultDropdownValues, ...selectedValueOverrides }}
- filters={[
- {
- key: 'winnerIds',
- label: 'Username/Handle',
- type: 'member_autocomplete',
- },
- {
- key: 'status',
- label: 'Status',
- options: [
- {
- label: 'All',
- value: 'all',
- },
- {
- label: 'Owed',
- value: 'OWED',
- },
- {
- label: 'On Hold (Admin)',
- value: 'ON_HOLD_ADMIN',
- },
- {
- label: 'On Hold (Member)',
- value: 'ON_HOLD',
- },
- {
- label: 'Paid',
- value: 'PAID',
- },
- {
- label: 'Cancelled',
- value: 'CANCELLED',
- },
- {
- label: 'Processing',
- value: 'PROCESSING',
- },
- {
- label: 'Failed',
- value: 'FAILED',
- },
- {
- label: 'Returned',
- value: 'RETURNED',
- },
- ],
- type: 'dropdown',
- },
- ...(isWiproTaasAdmin && !hasPaymentAdminRole ? [] : isApproverView ? [
- {
- key: 'category',
- label: 'Payment Type',
- options: [
- {
- label: 'All',
- value: 'all',
- },
- {
- label: 'Task Payments',
- value: taskPaymentCategory,
- },
- {
- label: 'Engagement Payments',
- value: engagementPaymentCategory,
- },
- ],
- type: 'dropdown',
- },
- ] as Filter[] : [
- {
- key: 'category',
- label: 'Type',
- options: [
- {
- label: 'All',
- value: 'all',
- },
- {
- label: 'Task Payment',
- value: 'TASK_PAYMENT',
- },
- {
- label: 'Contest Payment',
- value: 'CONTEST_PAYMENT',
- },
- {
- label: 'Copilot Payment',
- value: 'COPILOT_PAYMENT',
- },
- {
- label: 'Review Board Payment',
- value: 'REVIEW_BOARD_PAYMENT',
- },
- {
- label: 'Engagement Payment',
- value: 'ENGAGEMENT_PAYMENT',
- },
- {
- label: 'TaaS Payment',
- value: 'TAAS_PAYMENT',
- },
- {
- label: 'Topgear Payment',
- value: topgearPaymentCategory,
- },
- ],
- type: 'dropdown',
- },
- ] as Filter[]),
- {
- key: 'date',
- label: 'Date',
- options: [
- {
- label: 'Last 7 days',
- value: 'last7days',
- },
- {
- label: 'Last 30 days',
- value: 'last30days',
- },
- {
- label: 'All',
- value: 'all',
- },
- ],
- type: 'dropdown',
- },
- {
- key: 'pageSize',
- label: 'Payments per page',
- options: [
- {
- label: '10',
- value: '10',
- },
- {
- label: '50',
- value: '50',
- },
- {
- label: '100',
- value: '100',
- },
- ],
- type: 'dropdown',
- },
- ]}
+ filters={listingFilters}
+ hasPendingChanges={hasPendingFilterChanges}
onFilterChange={(key: string, value: string[]) => {
- const newPagination = {
- ...pagination,
- currentPage: 1,
- }
- if (key === 'pageSize') {
- newPagination.pageSize = parseInt(value[0], 10)
- }
-
- setPagination(newPagination)
-
- setFilters(prev => ({
+ setDraftFilters(prev => ({
...prev,
- [key]: value, // store 'all' explicitly; appliedFilters strips it before the API call
+ [key]: value,
}))
- setSelectedPayments({})
+ }}
+ onApplyFilters={() => {
+ setDraftFilters(currentDraft => {
+ const nextPageSize = currentDraft.pageSize?.[0]
+ ? parseInt(currentDraft.pageSize[0], 10)
+ : pagination.pageSize
+
+ setSubmittedFilters(currentDraft)
+ setPagination(prev => ({
+ ...prev,
+ currentPage: 1,
+ pageSize: nextPageSize,
+ }))
+ setSelectedPayments({})
+
+ return currentDraft
+ })
}}
onResetFilters={() => {
setPagination({
@@ -815,7 +980,8 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
currentPage: 1,
pageSize: defaultPageSize,
})
- setFilters({})
+ setDraftFilters({})
+ setSubmittedFilters({})
setSelectedPayments({})
}}
/>
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.module.scss b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.module.scss
index c836fe226..11f550a63 100644
--- a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.module.scss
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.module.scss
@@ -1,33 +1,36 @@
+@import '@libs/ui/styles/includes';
+
.FilterBar {
display: flex;
align-items: center;
- justify-content: space-between;
- flex-wrap: wrap;
+ flex-wrap: nowrap;
gap: 10px;
+ width: 100%;
+ min-width: 0;
- .firstFilter {
- display: flex;
- align-items: center;
- min-width: 0;
+ .primaryFilter {
+ flex: 0 0 auto;
+ align-self: flex-start;
}
- .flexStretch {
- flex-grow: 1;
- }
-
- .remainingFilters {
+ .filtersRow {
display: flex;
flex-direction: row;
align-items: center;
gap: 10px;
flex-wrap: wrap;
min-width: 0;
+ flex: 1 1 auto;
[class*="InputSelect-module_textSelected"] {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
+
+ :global(.input-wrapper .input) {
+ margin-bottom: 0 !important;
+ }
}
.filterContainer {
@@ -35,65 +38,125 @@
}
.filter {
- width: 165px;
- max-width: 100%;
- height: 47px;
+ min-width: 140px;
+ flex: 0 0 auto;
+ }
+
+ .filterCheckboxMultiselect {
+ width: 100%;
+ height: 100%;
+ }
+
+ .dateFilterWrap {
+ flex: 0 0 auto;
+
+ :global(.container) {
+ margin-bottom: 0;
+ }
}
.firstFilterElement {
- width: 200px;
- max-width: 100%;
- height: 47px;
+ width: 190px;
+ flex: 0 0 auto;
+
+ :global([class*="memberSelect"]) {
+ width: 100%;
+
+ [class*="-control"] {
+ min-height: 0 !important;
+ height: auto !important;
+ }
+ }
}
.filterInput {
margin-bottom: 0;
+ height: 100%;
}
- .selectionActionButton {
- flex-shrink: 0;
+ .toolbarActions {
+ display: flex;
+ align-items: flex-end;
+ gap: 10px;
+ flex: 0 0 auto;
+ margin-left: auto;
+ margin-bottom: 18px;
+ }
+
+ .filterActions {
+ display: flex;
+ align-items: flex-end;
+ gap: 10px;
+ flex: 0 0 auto;
+ }
+
+ .exportButton {
+ flex: 0 0 auto;
}
+ .applyButton,
.resetButton {
flex-shrink: 0;
- margin-left: 30px;
+ }
+
+ .selectionActionButton {
+ flex-shrink: 0;
}
.taskApproveBtns {
display: flex;
justify-content: flex-end;
gap: 10px;
- width: 100%;
+ flex: 1 0 100%;
margin-top: 10px;
flex-wrap: wrap;
}
}
+@media (max-width: 1200px) {
+ .FilterBar {
+ padding-bottom: $sp-1;
+
+ .filtersRow {
+ overflow-x: auto;
+ }
+ }
+}
+
@media (max-width: 768px) {
.FilterBar {
align-items: stretch;
+ flex-wrap: wrap;
- .firstFilter,
- .remainingFilters {
+ .filtersRow {
+ flex-wrap: wrap;
width: 100%;
}
- .flexStretch {
- display: none;
- }
-
+ .primaryFilter,
.firstFilterElement,
.filter {
width: 100%;
height: auto;
}
+ .primaryFilter {
+ align-self: stretch;
+ }
+
+ .toolbarActions {
+ width: 100%;
+ margin-left: 0;
+ flex-wrap: wrap;
+ }
+
+ .filterActions,
.selectionActionButton,
.resetButton,
+ .applyButton,
.exportButton,
.bulkButton {
width: 100%;
- margin-left: 0;
}
}
}
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.tsx b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.tsx
index c575a8d6a..1d689b563 100644
--- a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.tsx
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterBar.tsx
@@ -1,12 +1,18 @@
/* eslint-disable react/jsx-no-bind */
-import React, { ChangeEvent, useRef } from 'react'
+import React, { ChangeEvent, useEffect, useRef } from 'react'
+import classNames from 'classnames'
-import { Button, IconOutline, InputSelect, InputText } from '~/libs/ui'
import {
- InputHandleAutocomplete,
- MembersAutocompeteResult,
-} from '~/apps/admin/src/platform/gamification-admin/src/game-lib'
+ Button,
+ IconOutline,
+ InputDatePicker,
+ InputSelect,
+ InputText,
+} from '~/libs/ui'
+import { MembersAutocompeteResult } from '~/apps/admin/src/platform/gamification-admin/src/game-lib'
+import FilterCheckboxMultiselect from './FilterCheckboxMultiselect'
+import FilterHandleAutocomplete from './FilterHandleAutocomplete'
import styles from './FilterBar.module.scss'
type FilterOptions = {
@@ -17,7 +23,7 @@ type FilterOptions = {
export type Filter = {
key: string;
label: string;
- type: 'input' | 'dropdown' | 'member_autocomplete';
+ type: 'input' | 'dropdown' | 'member_autocomplete' | 'multi_dropdown' | 'date';
options?: FilterOptions[];
};
@@ -39,13 +45,43 @@ interface FilterBarProps {
filters: Filter[];
showExportButton?: boolean;
onFilterChange: (key: string, value: string[]) => void;
+ onApplyFilters?: () => void;
onResetFilters?: () => void;
onExport?: () => void;
selectedCount?: number;
onBulkClick?: () => void;
selectionActions?: FilterBarSelectionAction[];
- selectedValueOverrides?: Record;
+ selectedValueOverrides?: Record;
hasActiveFilters?: boolean;
+ hasPendingChanges?: boolean;
+}
+
+function parseIsoDateOnly(value: string | undefined): Date | undefined {
+ if (!value) {
+ return undefined
+ }
+
+ const [y, m, d] = value.split('-')
+ .map(part => parseInt(part, 10))
+ if (!y || !m || !d) {
+ return undefined
+ }
+
+ return new Date(y, m - 1, d)
+}
+
+function formatIsoDateOnly(date: Date | null): string[] {
+ if (!date) {
+ return []
+ }
+
+ const y = date.getFullYear()
+ const mo = String(date.getMonth() + 1)
+ .padStart(2, '0')
+ const day = String(date.getDate())
+ .padStart(2, '0')
+
+ return [`${y}-${mo}-${day}`]
}
const FilterBar: React.FC = (props: FilterBarProps) => {
@@ -62,11 +98,33 @@ const FilterBar: React.FC = (props: FilterBarProps) => {
}]
: [])
+ useEffect(() => {
+ props.filters.forEach(filter => {
+ if (filter.type !== 'multi_dropdown') {
+ return
+ }
+
+ const override = props.selectedValueOverrides?.[filter.key]
+ const next = Array.isArray(override)
+ ? override
+ : (override ? [override] : [])
+ setSelectedValue(prev => {
+ const cur = (prev.get(filter.key) as string[] | undefined) ?? []
+ if (cur.length === next.length && cur.every((v, i) => v === next[i])) {
+ return prev
+ }
+
+ return new Map(prev.set(filter.key, next))
+ })
+ })
+ }, [props.filters, props.selectedValueOverrides])
+
const renderDropdown = (index: number, filter: Filter): JSX.Element => (
) => {
@@ -80,12 +138,61 @@ const FilterBar: React.FC = (props: FilterBarProps) => {
/>
)
+ const renderMultiDropdown = (index: number, filter: Filter): JSX.Element => {
+ const baseOptions = filter.options ?? []
+ const override = props.selectedValueOverrides?.[filter.key]
+ const valuesFromParent: string[] = Array.isArray(override)
+ ? override as string[]
+ : (override ? [override as string] : (selectedValue.get(filter.key) as string[] | undefined) ?? [])
+
+ return (
+ {
+ setSelectedValue(new Map(selectedValue.set(filter.key, values)))
+ props.onFilterChange(filter.key, values)
+ }}
+ />
+ )
+ }
+
+ const renderDate = (index: number, filter: Filter): JSX.Element => {
+ const override = props.selectedValueOverrides?.[filter.key]
+ const iso = typeof override === 'string'
+ ? override
+ : undefined
+
+ return (
+
+ {
+ props.onFilterChange(filter.key, formatIsoDateOnly(date))
+ }}
+ isClearable
+ />
+
+ )
+ }
+
const renderMemberAutoComplete = (index: number, filter: Filter): JSX.Element => (
- ) => {
selectedMembers.current = event
setSelectedValue(new Map(selectedValue.set(filter.key, event)))
@@ -96,73 +203,102 @@ const FilterBar: React.FC = (props: FilterBarProps) => {
/>
)
+ const renderFilterControl = (index: number, filter: Filter): JSX.Element => {
+ if (filter.type === 'dropdown') {
+ return renderDropdown(index, filter)
+ }
+
+ if (filter.type === 'multi_dropdown') {
+ return renderMultiDropdown(index, filter)
+ }
+
+ if (filter.type === 'date') {
+ return renderDate(index, filter)
+ }
+
+ if (filter.type === 'member_autocomplete') {
+ return renderMemberAutoComplete(index, filter)
+ }
+
+ return (
+ ) => {
+ setSelectedValue(new Map(selectedValue.set(filter.key, event.target.value)))
+ props.onFilterChange(filter.key, [event.target.value])
+ }}
+ />
+ )
+ }
+
+ const firstFilter = props.filters[0]
+ const restFilters = props.filters.slice(1)
+
return (
-
- {props.filters.slice(0, 1)
- .map((options, index) => (
-
- {options.type === 'dropdown' && renderDropdown(index, options)}
- {options.type === 'input' && (
- ) => {
- setSelectedValue(new Map(selectedValue.set(options.key, event.target.value)))
- props.onFilterChange(options.key, [event.target.value])
- }}
- />
- )}
- {options.type === 'member_autocomplete' && renderMemberAutoComplete(index, options)}
-
- ))}
-
-
-
- {props.filters.slice(1)
- .map((options, index) => (
-
- {options.type === 'dropdown' && renderDropdown(index + 1, options)}
- {options.type === 'input' && (
-
) => {
- setSelectedValue(new Map(selectedValue.set(options.key, event.target.value)))
- props.onFilterChange(options.key, [event.target.value])
- }}
- />
- )}
- {options.type === 'member_autocomplete' && renderMemberAutoComplete(index + 1, options)}
+ {firstFilter && (
+
+
+ {renderFilterControl(0, firstFilter)}
+
+
+ )}
+ {restFilters.length > 0 && (
+
+ {restFilters.map((filter, index) => (
+
+ {renderFilterControl(index + 1, filter)}
))}
-
- {props.showExportButton && (
-
+
)}
-
{
- selectedMembers.current = []
- setSelectedValue(new Map())
- props.onResetFilters?.()
- }}
- />
+
+ {props.showExportButton && (
+
+ )}
+
+ {props.onApplyFilters && (
+
+ )}
+ {
+ selectedMembers.current = []
+ setSelectedValue(new Map())
+ props.onResetFilters?.()
+ }}
+ />
+
+
{selectionActions.length > 0 && (
{selectionActions.map(action => (
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.module.scss b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.module.scss
new file mode 100644
index 000000000..65093bd2a
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.module.scss
@@ -0,0 +1,71 @@
+@import '@libs/ui/styles/includes';
+
+.wrapper {
+ width: 100%;
+}
+
+.trigger {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ margin-top: $sp-1;
+ cursor: pointer;
+ color: $black-100;
+ border: none;
+ background: transparent;
+ padding: 0;
+}
+
+.triggerText {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ text-align: left;
+}
+
+.triggerIcon {
+ margin-left: auto;
+ padding: $border-xs 0;
+ color: $turq-160;
+ flex-shrink: 0;
+
+ > svg {
+ @include icon-size(14);
+ }
+}
+
+.menuWrap {
+ position: absolute;
+ top: calc(100% - 2px);
+ left: 0;
+ width: 100%;
+
+ &:not(:empty) {
+ z-index: 1001;
+ }
+}
+
+.menu {
+ position: absolute;
+ top: 100%;
+ left: -1px;
+ right: -1px;
+ background: $tc-white;
+ border: $border-xs solid $black-40;
+ border-radius: 0 0 $sp-1 $sp-1;
+ padding: $sp-2 0;
+ max-height: 280px;
+ overflow: auto;
+}
+
+.menuOption {
+ padding: $sp-2 $sp-4;
+
+ &:hover {
+ background: $black-5;
+ }
+
+ :global(.container) {
+ width: 100%;
+ }
+}
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx
new file mode 100644
index 000000000..0d92b04df
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx
@@ -0,0 +1,266 @@
+/* eslint-disable react/jsx-no-bind */
+import {
+ FC,
+ FocusEvent,
+ KeyboardEvent,
+ MouseEvent,
+ MutableRefObject,
+ useEffect,
+ useLayoutEffect,
+ useMemo,
+ useRef,
+ useState,
+} from 'react'
+import { usePopper } from 'react-popper'
+import classNames from 'classnames'
+
+import { beforeWrite } from '@popperjs/core/lib'
+import { useClickOutsideMultipleElements } from '~/libs/shared/lib/hooks'
+import { IconOutline, InputCheckbox, InputWrapper, Portal } from '~/libs/ui'
+
+import styles from './FilterCheckboxMultiselect.module.scss'
+
+export interface FilterCheckboxMultiselectOption {
+ label: string
+ value: string
+}
+
+interface FilterCheckboxMultiselectProps {
+ readonly className?: string
+ readonly label: string
+ readonly name: string
+ readonly onChange: (values: string[]) => void
+ readonly options: ReadonlyArray
+ readonly placeholder?: string
+ readonly tabIndex?: number
+ readonly values: string[]
+}
+
+const sameWidthModifier = {
+ effect: ({ state }: any) => {
+ state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`
+ },
+ enabled: true,
+ fn: ({ state }: any) => {
+ state.styles.popper.width = `${state.rects.reference.width}px`
+
+ return state
+ },
+ name: 'sameWidth',
+ phase: beforeWrite,
+ requires: ['computeStyles'],
+}
+const modifiers = [sameWidthModifier]
+
+function getDisplayText(
+ options: ReadonlyArray,
+ values: string[],
+): string {
+ if (options.length === 0) {
+ return ''
+ }
+
+ if (values.length === 0) {
+ return ''
+ }
+
+ if (values.length === options.length) {
+ return 'All'
+ }
+
+ if (values.length === 1) {
+ return options.find(option => option.value === values[0])?.label ?? ''
+ }
+
+ return `${values.length} selected`
+}
+
+const FilterCheckboxMultiselect: FC = (props: FilterCheckboxMultiselectProps) => {
+ const hasFocus = useRef(false)
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const triggerRef: MutableRefObject = useRef(undefined)
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ const popperRef: MutableRefObject = useRef(undefined)
+ const buttonRef = useRef(null)
+ const [menuIsVisible, setMenuIsVisible] = useState(false)
+ const [isFocus, setIsFocus] = useState(false)
+ const [clickOutsideElements, setClickOutsideElements] = useState([])
+
+ const popper = usePopper(triggerRef.current?.firstElementChild, popperRef.current, {
+ modifiers,
+ strategy: 'fixed',
+ })
+
+ const allValues = useMemo(
+ () => props.options.map(option => option.value),
+ [props.options],
+ )
+ const allSelected = props.options.length > 0 && props.values.length === props.options.length
+ const displayText = getDisplayText(props.options, props.values)
+ const triggerLabel = displayText || (props.placeholder ?? props.label)
+
+ const toggleMenu = (toggle?: boolean): void => {
+ setTimeout(setMenuIsVisible, 150, (wasVisible: boolean) => {
+ const isVisible = typeof toggle === 'boolean' ? toggle : !wasVisible
+ if (!isVisible) {
+ hasFocus.current = true
+ buttonRef.current?.focus()
+ }
+
+ return isVisible
+ })
+ }
+
+ function toggleIfNotDisabled(
+ event: MouseEvent
+ | FocusEvent
+ | KeyboardEvent
+ | undefined,
+ toggle?: boolean,
+ ): void {
+ event?.stopPropagation()
+ event?.preventDefault()
+ toggleMenu(toggle)
+ }
+
+ useLayoutEffect(() => {
+ if (!menuIsVisible) {
+ setClickOutsideElements([])
+ return
+ }
+
+ const elements: HTMLElement[] = []
+ if (triggerRef.current) {
+ elements.push(triggerRef.current)
+ }
+
+ if (popperRef.current) {
+ elements.push(popperRef.current)
+ }
+
+ setClickOutsideElements(elements)
+ }, [menuIsVisible])
+
+ useClickOutsideMultipleElements(
+ clickOutsideElements,
+ () => setMenuIsVisible(false),
+ menuIsVisible,
+ )
+
+ function handleKeyDown(event: KeyboardEvent | undefined): void {
+ if (event?.key === 'Enter') {
+ toggleIfNotDisabled(event)
+ }
+ }
+
+ function handleSelectAllChange(): void {
+ props.onChange(allSelected ? [] : [...allValues])
+ }
+
+ function toggleOption(value: string): void {
+ if (props.values.includes(value)) {
+ props.onChange(props.values.filter(selected => selected !== value))
+
+ return
+ }
+
+ props.onChange([...props.values, value])
+ }
+
+ useEffect(() => {
+ if (menuIsVisible) {
+ popper.update?.()
+ }
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [menuIsVisible])
+
+ return (
+
+ | undefined) {
+ if (hasFocus.current) {
+ return
+ }
+
+ hasFocus.current = true
+ setIsFocus(true)
+ toggleIfNotDisabled(event, true)
+ }}
+ onBlur={function onBlur() {
+ hasFocus.current = false
+ setIsFocus(false)
+ }}
+ ref={buttonRef}
+ >
+
+ {triggerLabel}
+
+
+
+
+
+
+
+
+ {menuIsVisible && (
+
) {
+ event.preventDefault()
+ event.stopPropagation()
+ }}
+ onClick={function onClick(event: MouseEvent
) {
+ event.stopPropagation()
+ }}
+ >
+
+
+
+ {props.options.map(option => (
+
+ toggleOption(option.value)}
+ />
+
+ ))}
+
+ )}
+
+
+
+ )
+}
+
+export default FilterCheckboxMultiselect
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.module.scss b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.module.scss
new file mode 100644
index 000000000..9d5fac8a6
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.module.scss
@@ -0,0 +1,19 @@
+@import '@libs/ui/styles/includes';
+
+.memberSelect {
+ color: $black-60;
+ width: 100%;
+
+ [class*="-indicatorSeparator"] {
+ display: none;
+ }
+}
+
+.searchIndicator {
+ color: $turq-160;
+ padding: 0;
+
+ svg {
+ @include icon-size(14);
+ }
+}
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.tsx b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.tsx
new file mode 100644
index 000000000..4f3cdb032
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterHandleAutocomplete.tsx
@@ -0,0 +1,120 @@
+import { get } from 'lodash'
+import { FC, FocusEvent, useMemo } from 'react'
+import { components, MultiValue, StylesConfig } from 'react-select'
+import AsyncSelect from 'react-select/async'
+import classNames from 'classnames'
+
+import { IconOutline, InputWrapper } from '~/libs/ui'
+import {
+ membersAutocompete,
+ MembersAutocompeteResult,
+} from '~/apps/admin/src/platform/gamification-admin/src/game-lib'
+
+import styles from './FilterHandleAutocomplete.module.scss'
+
+interface FilterHandleAutocompleteProps {
+ readonly className?: string
+ readonly dirty?: boolean
+ readonly disabled?: boolean
+ readonly hideInlineErrors?: boolean
+ readonly label?: string | JSX.Element
+ readonly name: string
+ readonly onBlur?: (event: FocusEvent) => void
+ readonly onChange: (newValue: Array) => void
+ readonly placeholder?: string
+ readonly tabIndex: number
+ readonly value?: Array
+}
+
+const SearchDropdownIndicator: FC = (indicatorProps: any) => (
+
+
+
+)
+
+const FilterHandleAutocomplete: FC = (props: FilterHandleAutocompleteProps) => {
+ const customStyles: StylesConfig = useMemo(() => ({
+ control: provided => ({
+ ...provided,
+ border: 'none',
+ boxShadow: 'none',
+ minHeight: 0,
+ }),
+ input: provided => ({
+ ...provided,
+ color: 'inherit',
+ fontSize: 16,
+ }),
+ multiValue: provided => ({
+ ...provided,
+ borderRadius: 50,
+ }),
+ multiValueLabel: provided => ({
+ ...provided,
+ fontSize: 12,
+ }),
+ option: provided => ({
+ ...provided,
+ borderBottom: '1px solid #E9E9E9',
+ color: 'inherit',
+ fontSize: 16,
+ fontWeight: 400,
+ padding: 16,
+ }),
+ placeholder: provided => ({
+ ...provided,
+ color: 'inherit',
+ fontSize: 16,
+ fontWeight: 400,
+ }),
+ valueContainer: provided => ({
+ ...provided,
+ padding: 0,
+ }),
+ }), [])
+
+ const selectComponents = useMemo(() => ({
+ DropdownIndicator: SearchDropdownIndicator,
+ }), [])
+
+ function getUserProp(key: string): (d: unknown) => string {
+ return d => get(d, key)
+ }
+
+ function handleChange(newValue: MultiValue): void {
+ props.onChange(newValue as Array)
+ }
+
+ return (
+
+
+ className={classNames(styles.memberSelect, props.className)}
+ cacheOptions
+ components={selectComponents}
+ getOptionLabel={getUserProp('handle')}
+ getOptionValue={getUserProp('userId')}
+ isMulti
+ key={props.value?.length}
+ loadOptions={membersAutocompete}
+ styles={customStyles}
+ placeholder={props.placeholder}
+ onBlur={props.onBlur}
+ onChange={handleChange}
+ value={props.value}
+ isDisabled={props.disabled}
+ />
+
+ )
+}
+
+export default FilterHandleAutocomplete
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.ts b/src/apps/wallet-admin/src/lib/services/wallet.ts
index 78445ebae..4f14fb0c4 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.ts
@@ -360,10 +360,16 @@ export async function exportSearchResults(
const filteredFilters: Record = {}
for (const key in filters) {
- if (['categories'].includes(key)) {
+ if (['categories', 'winnerIds'].includes(key)) {
filteredFilters[key] = filters[key]
} else if (filters[key].length > 0 && key !== 'pageSize') {
- filteredFilters[key] = filters[key][0]
+ if (key === 'status' && filters[key].length > 1) {
+ filteredFilters[key] = filters[key]
+ } else if (key === 'status') {
+ filteredFilters[key] = filters[key][0]
+ } else {
+ filteredFilters[key] = filters[key][0]
+ }
}
}
@@ -402,10 +408,16 @@ export async function fetchWinnings(
const filteredFilters: Record = {}
for (const key in filters) {
- if (['categories'].includes(key)) {
+ if (['categories', 'winnerIds'].includes(key)) {
filteredFilters[key] = filters[key]
} else if (filters[key].length > 0 && key !== 'pageSize') {
- filteredFilters[key] = filters[key][0]
+ if (key === 'status' && filters[key].length > 1) {
+ filteredFilters[key] = filters[key]
+ } else if (key === 'status') {
+ filteredFilters[key] = filters[key][0]
+ } else {
+ filteredFilters[key] = filters[key][0]
+ }
}
}
From 335ac32ef05728f4fd8a66ff7597b1ba33f0b679 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Tue, 19 May 2026 15:59:32 +0530
Subject: [PATCH 10/56] Approver defaults to 3 months view
---
.../tabs/payments/PaymentsListView.spec.tsx | 45 +++++++-
.../home/tabs/payments/PaymentsListView.tsx | 106 +++++++++++++-----
2 files changed, 120 insertions(+), 31 deletions(-)
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
index 62a34fb28..dc00da034 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
+++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
@@ -217,6 +217,27 @@ const TOPCODER_TAB_CATEGORIES = [
'ENGAGEMENT_PAYMENT',
]
+function getApproverDefaultDateRangeForTest(): { dateFrom: string, dateTo: string } {
+ const dateTo = new Date()
+ const dateFrom = new Date()
+ dateFrom.setMonth(dateFrom.getMonth() - 3)
+
+ const format = (date: Date): string => {
+ const y = date.getFullYear()
+ const mo = String(date.getMonth() + 1)
+ .padStart(2, '0')
+ const day = String(date.getDate())
+ .padStart(2, '0')
+
+ return `${y}-${mo}-${day}`
+ }
+
+ return {
+ dateFrom: format(dateFrom),
+ dateTo: format(dateTo),
+ }
+}
+
const ALL_STATUS_FILTER_VALUES = [
'OWED',
'ON_HOLD_ADMIN',
@@ -241,6 +262,8 @@ describe('PaymentsListView', () => {
})
it('defaults the approver view to the On Hold (Admin) status filter and both allowed categories', async () => {
+ const approverDates = getApproverDefaultDateRangeForTest()
+
render(
{
expect(mockedGetPayments)
.toHaveBeenLastCalledWith(10, 0, {
categories: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
- date: ['last30days'],
+ dateFrom: [approverDates.dateFrom],
+ dateTo: [approverDates.dateTo],
status: ['ON_HOLD_ADMIN'],
})
expect(mockFilterBar)
@@ -260,7 +284,8 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
- date: 'last30days',
+ dateFrom: approverDates.dateFrom,
+ dateTo: approverDates.dateTo,
status: ['ON_HOLD_ADMIN'],
}))
})
@@ -286,6 +311,8 @@ describe('PaymentsListView', () => {
})
it('applies the default approver status after switching from admin view', async () => {
+ const approverDates = getApproverDefaultDateRangeForTest()
+
render(
{
expect(mockedGetPayments)
.toHaveBeenLastCalledWith(10, 0, {
categories: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
- date: ['last30days'],
+ dateFrom: [approverDates.dateFrom],
+ dateTo: [approverDates.dateTo],
status: ['ON_HOLD_ADMIN'],
})
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
- date: 'last30days',
+ dateFrom: approverDates.dateFrom,
+ dateTo: approverDates.dateTo,
status: ['ON_HOLD_ADMIN'],
}))
})
@@ -339,6 +368,8 @@ describe('PaymentsListView', () => {
})
it('lets an explicit status filter override the default approver status', async () => {
+ const approverDates = getApproverDefaultDateRangeForTest()
+
render(
{
expect(mockedGetPayments)
.toHaveBeenLastCalledWith(10, 0, {
categories: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
- date: ['last30days'],
+ dateFrom: [approverDates.dateFrom],
+ dateTo: [approverDates.dateTo],
status: ['PAID'],
})
})
@@ -365,7 +397,8 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
- date: 'last30days',
+ dateFrom: approverDates.dateFrom,
+ dateTo: approverDates.dateTo,
status: ['PAID'],
}))
})
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
index 246d54291..51dfb9b8c 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
+++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
@@ -29,7 +29,26 @@ const approverAllowedCategories = [taskPaymentCategory, engagementPaymentCategor
const taasPaymentCategory = 'TAAS_PAYMENT'
const topgearPaymentCategory = 'TOPGEAR_PAYMENT'
const defaultPageSize = 10
-const approverDefaultDateFilter = 'last30days'
+function formatIsoDateOnly(date: Date): string {
+ const y = date.getFullYear()
+ const mo = String(date.getMonth() + 1)
+ .padStart(2, '0')
+ const day = String(date.getDate())
+ .padStart(2, '0')
+
+ return `${y}-${mo}-${day}`
+}
+
+function getApproverDefaultDateRange(): { dateFrom: string, dateTo: string } {
+ const dateTo = new Date()
+ const dateFrom = new Date()
+ dateFrom.setMonth(dateFrom.getMonth() - 3)
+
+ return {
+ dateFrom: formatIsoDateOnly(dateFrom),
+ dateTo: formatIsoDateOnly(dateTo),
+ }
+}
type PaymentListingTab = 'topcoder' | 'topgear' | 'taas'
@@ -321,12 +340,9 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
statusFilter = { status: [restrictedDefaultStatus] }
}
- let dateFilter: Record = {}
- if (submittedFilters.date?.length && submittedFilters.date[0] !== 'all') {
- dateFilter = { date: activeFilters.date }
- } else if (!submittedFilters.date?.length) {
- dateFilter = { date: [approverDefaultDateFilter] }
- }
+ const approverDefaultDates = getApproverDefaultDateRange()
+ const dateFrom = submittedFilters.dateFrom?.[0] ?? approverDefaultDates.dateFrom
+ const dateTo = submittedFilters.dateTo?.[0] ?? approverDefaultDates.dateTo
const pickedApproverTypes = (submittedFilters.category ?? [])
.filter(c => approverAllowedCategories.includes(c))
@@ -338,12 +354,15 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
delete rest.category
delete rest.date
delete rest.status
+ delete rest.dateFrom
+ delete rest.dateTo
return {
...rest,
categories,
...statusFilter,
- ...dateFilter,
+ dateFrom: [dateFrom],
+ dateTo: [dateTo],
}
}
@@ -396,11 +415,26 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
[draftFilters, submittedFilters],
)
- const hasActiveFilters = React.useMemo(
- () => Object.entries(appliedFilters)
- .some(([key, value]) => key !== 'category' && key !== 'categories' && value.length > 0),
- [appliedFilters],
- )
+ const hasActiveFilters = React.useMemo(() => {
+ const approverDefaultDates = isApproverView ? getApproverDefaultDateRange() : undefined
+
+ return Object.entries(appliedFilters)
+ .some(([key, value]) => {
+ if (key === 'category' || key === 'categories') {
+ return false
+ }
+
+ if (approverDefaultDates && key === 'dateFrom' && value[0] === approverDefaultDates.dateFrom) {
+ return false
+ }
+
+ if (approverDefaultDates && key === 'dateTo' && value[0] === approverDefaultDates.dateTo) {
+ return false
+ }
+
+ return value.length > 0
+ })
+ }, [appliedFilters, isApproverView])
const selectedValueOverrides = React.useMemo>(() => {
if (restrictedCategory) {
return {
@@ -412,6 +446,8 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
}
if (isApproverView) {
+ const approverDefaultDates = getApproverDefaultDateRange()
+
return {
...(draftFilters.status !== undefined
? { status: draftFilters.status }
@@ -419,6 +455,12 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
...(draftFilters.category !== undefined
? { category: draftFilters.category }
: { category: [...approverAllowedCategories] }),
+ dateFrom: draftFilters.dateFrom !== undefined
+ ? draftFilters.dateFrom[0]
+ : approverDefaultDates.dateFrom,
+ dateTo: draftFilters.dateTo !== undefined
+ ? draftFilters.dateTo[0]
+ : approverDefaultDates.dateTo,
}
}
@@ -457,11 +499,18 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
}
if (isApproverView) {
+ const approverDefaultDates = getApproverDefaultDateRange()
+
const approverDefaults: Record = {
category: draftFilters.category !== undefined
? draftFilters.category
: [...approverAllowedCategories],
- date: draftFilters.date?.[0] ?? approverDefaultDateFilter,
+ dateFrom: draftFilters.dateFrom !== undefined
+ ? draftFilters.dateFrom[0]
+ : approverDefaultDates.dateFrom,
+ dateTo: draftFilters.dateTo !== undefined
+ ? draftFilters.dateTo[0]
+ : approverDefaultDates.dateTo,
status: draftFilters.status !== undefined
? draftFilters.status
: [restrictedDefaultStatus ?? 'ON_HOLD_ADMIN'],
@@ -480,7 +529,8 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
return topcoderDefaults
}, [
draftFilters.category,
- draftFilters.date,
+ draftFilters.dateFrom,
+ draftFilters.dateTo,
draftFilters.status,
restrictedCategory,
restrictedDefaultStatus,
@@ -680,8 +730,14 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
...prev,
currentPage: 1,
}))
- setDraftFilters(prev => withoutFilterKey(prev, 'category'))
- setSubmittedFilters(prev => withoutFilterKey(prev, 'category'))
+ setDraftFilters(prev => withoutFilterKey(
+ withoutFilterKey(withoutFilterKey(withoutFilterKey(prev, 'category'), 'date'), 'dateFrom'),
+ 'dateTo',
+ ))
+ setSubmittedFilters(prev => withoutFilterKey(
+ withoutFilterKey(withoutFilterKey(withoutFilterKey(prev, 'category'), 'date'), 'dateFrom'),
+ 'dateTo',
+ ))
}, [paymentRoleView])
const onPaymentListingTabChange = useCallback((tab: PaymentListingTab) => {
@@ -815,14 +871,14 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
type: 'multi_dropdown',
},
{
- key: 'date',
- label: 'Date',
- options: [
- { label: 'Last 7 days', value: 'last7days' },
- { label: 'Last 30 days', value: 'last30days' },
- { label: 'All', value: 'all' },
- ],
- type: 'dropdown',
+ key: 'dateFrom',
+ label: 'Date from',
+ type: 'date',
+ },
+ {
+ key: 'dateTo',
+ label: 'Date to',
+ type: 'date',
},
pageSizeFilter,
]
From 93228f5d37a5d4b773421c0336ab720559ee6567 Mon Sep 17 00:00:00 2001
From: Vasilica Olariu
Date: Tue, 19 May 2026 15:12:54 +0300
Subject: [PATCH 11/56] lint fix
---
.../components/PaymentFormModal/PaymentFormModal.tsx | 12 +++++++-----
src/apps/work/src/lib/utils/payment.utils.ts | 12 ++++++++++--
.../components/EngagementEditorForm.tsx | 1 +
.../EngagementPaymentPage/EngagementPaymentPage.tsx | 1 +
4 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
index 73a5c8cea..5abfcd077 100644
--- a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
+++ b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
@@ -133,10 +133,10 @@ const PaymentFormModal: FC = (
const isSubmitting = props.isSubmitting === true
const [errors, setErrors] = useState({})
- const [fromDate, setFromDate] = useState(null)
+ const [fromDate, setFromDate] = useState(undefined)
const [hoursWorked, setHoursWorked] = useState('')
const [remarks, setRemarks] = useState('')
- const [toDate, setToDate] = useState(null)
+ const [toDate, setToDate] = useState(undefined)
const ratePerHour = useMemo(
() => getAssignmentRatePerHour(props.member || {}),
@@ -185,10 +185,10 @@ const PaymentFormModal: FC = (
const resetState = useCallback((): void => {
setErrors({})
- setFromDate(null)
+ setFromDate(undefined)
setHoursWorked('')
setRemarks('')
- setToDate(null)
+ setToDate(undefined)
}, [props.member])
useEffect(() => {
@@ -390,7 +390,9 @@ const PaymentFormModal: FC = (
? (
{' '}
- Expected: {expectedHoursLabel}
+ Expected:
+ {' '}
+ {expectedHoursLabel}
)
: undefined}
diff --git a/src/apps/work/src/lib/utils/payment.utils.ts b/src/apps/work/src/lib/utils/payment.utils.ts
index c059cde01..95d758869 100644
--- a/src/apps/work/src/lib/utils/payment.utils.ts
+++ b/src/apps/work/src/lib/utils/payment.utils.ts
@@ -233,7 +233,11 @@ export function getAssignmentPaymentCycle(member: Partial): string {
export function getAssignmentStandardHoursPerDay(
member: Partial,
): number | string | undefined {
- if (member.standardHoursPerDay !== undefined && member.standardHoursPerDay !== null && member.standardHoursPerDay !== '') {
+ if (
+ member.standardHoursPerDay !== undefined
+ && member.standardHoursPerDay !== null
+ && member.standardHoursPerDay !== ''
+ ) {
return member.standardHoursPerDay
}
@@ -255,7 +259,11 @@ export function getAssignmentStandardHoursPerDay(
export function getAssignmentStandardHoursPerWeek(
member: Partial,
): number | string | undefined {
- if (member.standardHoursPerWeek !== undefined && member.standardHoursPerWeek !== null && member.standardHoursPerWeek !== '') {
+ if (
+ member.standardHoursPerWeek !== undefined
+ && member.standardHoursPerWeek !== null
+ && member.standardHoursPerWeek !== ''
+ ) {
return member.standardHoursPerWeek
}
diff --git a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx
index da2f743f9..88e773f87 100644
--- a/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx
+++ b/src/apps/work/src/pages/engagements/EngagementEditorPage/components/EngagementEditorForm.tsx
@@ -1,4 +1,5 @@
/* eslint-disable react/jsx-no-bind */
+/* eslint-disable complexity */
import {
FC,
diff --git a/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx b/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx
index 0b0f59e24..5dcd11a33 100644
--- a/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx
+++ b/src/apps/work/src/pages/engagements/EngagementPaymentPage/EngagementPaymentPage.tsx
@@ -1,5 +1,6 @@
/* eslint-disable max-len */
/* eslint-disable react/jsx-no-bind */
+/* eslint-disable complexity */
import {
FC,
From b40a3ecfb6e6d7edad1cd437d20fbf7ab40f8cc0 Mon Sep 17 00:00:00 2001
From: Vasilica Olariu
Date: Tue, 19 May 2026 16:06:08 +0300
Subject: [PATCH 12/56] fix build
---
.../src/lib/components/PaymentFormModal/PaymentFormModal.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
index 5abfcd077..24042982f 100644
--- a/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
+++ b/src/apps/work/src/lib/components/PaymentFormModal/PaymentFormModal.tsx
@@ -331,7 +331,7 @@ const PaymentFormModal: FC = (
dateFormat='MM/dd/yyyy'
disabled={isSubmitting}
onChange={date => {
- setFromDate(date)
+ setFromDate(date ?? undefined)
setErrors(previous => ({
...previous,
fromDate: undefined,
@@ -359,7 +359,7 @@ const PaymentFormModal: FC = (
disabled={isSubmitting}
minDate={fromDate || undefined}
onChange={date => {
- setToDate(date)
+ setToDate(date ?? undefined)
setErrors(previous => ({
...previous,
toDate: undefined,
From 6cdde6f91682ec6ad5832fdf08720089a12ca312 Mon Sep 17 00:00:00 2001
From: Justin Gasper
Date: Wed, 20 May 2026 07:54:37 +1000
Subject: [PATCH 13/56] Updates for history display on profiles page
---
.../ChallengeHistoryCard.tsx | 3 ++-
.../sub-track-view/SubTrackView.tsx | 17 +----------------
2 files changed, 3 insertions(+), 17 deletions(-)
diff --git a/src/apps/profiles/src/components/tc-achievements/ChallengeHistoryView/ChallengeHistoryCard/ChallengeHistoryCard.tsx b/src/apps/profiles/src/components/tc-achievements/ChallengeHistoryView/ChallengeHistoryCard/ChallengeHistoryCard.tsx
index 2ecf88826..c737a699a 100644
--- a/src/apps/profiles/src/components/tc-achievements/ChallengeHistoryView/ChallengeHistoryCard/ChallengeHistoryCard.tsx
+++ b/src/apps/profiles/src/components/tc-achievements/ChallengeHistoryView/ChallengeHistoryCard/ChallengeHistoryCard.tsx
@@ -14,6 +14,7 @@ interface ChallengeHistoryCardProps {
}
const ChallengeHistoryCard: FC = props => {
+ const challengeTitle = props.challenge.challengeName || `Challenge ${props.challenge.challengeId}`
const rating = props.challenge.newRating ?? props.challenge.rating
const placement = props.challenge.placement
@@ -27,7 +28,7 @@ const ChallengeHistoryCard: FC = props => {
- {props.challenge.challengeName}
+ {challengeTitle}
diff --git a/src/apps/profiles/src/member-profile/tc-achievements/sub-track-view/SubTrackView.tsx b/src/apps/profiles/src/member-profile/tc-achievements/sub-track-view/SubTrackView.tsx
index 74c0d835e..afda7afcc 100644
--- a/src/apps/profiles/src/member-profile/tc-achievements/sub-track-view/SubTrackView.tsx
+++ b/src/apps/profiles/src/member-profile/tc-achievements/sub-track-view/SubTrackView.tsx
@@ -34,21 +34,6 @@ const SubTrackView: FC
= props => {
]
}, [props.profile.handle, statsRoute, trackData?.name, trackData?.subTracks])
- const summaryTrackData = useMemo(() => {
- const supportsHistoryBackedSummary = ['DATA_SCIENCE', 'DEVELOP'].includes(String(subTrackData?.parentTrack))
-
- if (!supportsHistoryBackedSummary || trackHistory.length === 0) {
- return subTrackData
- }
-
- return {
- ...subTrackData,
- challenges: trackHistory.length,
- submissions: trackHistory.length,
- wins: trackHistory.filter(challenge => challenge.placement === 1).length,
- }
- }, [subTrackData, trackHistory])
-
return (!trackData || isEmpty(subTrackData)) ? props.renderDefault() : (
= props => {
title={subTrackLabelToHumanName(subTrackData.name)}
backAction={backRoute}
closeAction={statsRoute(props.profile.handle)}
- trackData={summaryTrackData}
+ trackData={subTrackData}
>
{subTrackData.name === 'SRM' ? (
From 7d9b61e92a9fc58e22107d266450a0c3b9c405c3 Mon Sep 17 00:00:00 2001
From: Justin Gasper
Date: Wed, 20 May 2026 11:06:21 +1000
Subject: [PATCH 14/56] Marathon match scoring display fix
---
.../src/lib/utils/challenge.utils.spec.ts | 21 +++++++++++++++++++
.../work/src/lib/utils/challenge.utils.ts | 15 +++++++++++--
2 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/src/apps/work/src/lib/utils/challenge.utils.spec.ts b/src/apps/work/src/lib/utils/challenge.utils.spec.ts
index 5723ce25a..481b57044 100644
--- a/src/apps/work/src/lib/utils/challenge.utils.spec.ts
+++ b/src/apps/work/src/lib/utils/challenge.utils.spec.ts
@@ -1,6 +1,7 @@
import {
getSubmissionProvisionalScore,
getSubmissionSystemScore,
+ isMarathonMatchChallenge,
} from './challenge.utils'
jest.mock('../constants', () => ({
@@ -13,6 +14,26 @@ jest.mock('../constants', () => ({
}))
describe('challenge utils', () => {
+ describe('isMarathonMatchChallenge', () => {
+ it('recognizes Marathon Match from the canonical challenge type id', () => {
+ expect(isMarathonMatchChallenge({
+ typeId: '929bc408-9cf2-4b3e-ba71-adfbf693046c',
+ }))
+ .toBe(true)
+ })
+
+ it('returns false when no Marathon Match identifiers are present', () => {
+ expect(isMarathonMatchChallenge({
+ tags: ['development'],
+ type: {
+ name: 'Code',
+ },
+ typeId: '927abff4-7af9-4145-8ba1-577c16e64e2e',
+ }))
+ .toBe(false)
+ })
+ })
+
describe('getSubmissionProvisionalScore', () => {
it('returns only provisional marathon scores', () => {
expect(getSubmissionProvisionalScore({
diff --git a/src/apps/work/src/lib/utils/challenge.utils.ts b/src/apps/work/src/lib/utils/challenge.utils.ts
index 32a843372..d3833474c 100644
--- a/src/apps/work/src/lib/utils/challenge.utils.ts
+++ b/src/apps/work/src/lib/utils/challenge.utils.ts
@@ -41,6 +41,10 @@ interface SubmissionTestProgressCandidate extends SubmissionTestProgressDisplay
updatedAt: number
}
+const MARATHON_MATCH_TYPE_IDS = new Set([
+ '929bc408-9cf2-4b3e-ba71-adfbf693046c',
+])
+
function getPhaseStartDate(phase: ChallengePhase): string {
const phaseStartDate = phase.actualStartDate || phase.scheduledStartDate
@@ -352,14 +356,20 @@ function normalizeChallengeTypeToken(value: unknown): string {
/**
* Returns whether the challenge is a Marathon Match.
* @param challenge Challenge payload from the challenge API.
- * @returns `true` when the type or tags identify Marathon Match.
+ * @returns `true` when the type, type ID, or tags identify Marathon Match.
* Used by the submissions view to expose marathon-only runner log actions.
*/
-export function isMarathonMatchChallenge(challenge: Pick): boolean {
+export function isMarathonMatchChallenge(
+ challenge: Pick,
+): boolean {
const typeName = getChallengeTypeName(challenge.type)
const typeAbbreviation = typeof challenge.type === 'object'
? challenge.type?.abbreviation
: undefined
+ const typeId = typeof challenge.typeId === 'string'
+ ? challenge.typeId.trim()
+ .toLowerCase()
+ : ''
const typeTokens = [
typeName,
typeAbbreviation,
@@ -370,6 +380,7 @@ export function isMarathonMatchChallenge(challenge: Pick
Date: Wed, 20 May 2026 12:40:19 +1000
Subject: [PATCH 15/56] PM-5105: Add rated challenge toggle
What was broken
Marathon matches and development challenges were always treated as rated from the work app because the challenge editor did not expose an opt-out control.
Root cause (if identifiable)
Member API already honors challenge metadata named isRated with value false, but platform-ui never let users set or clear that metadata during challenge setup.
What was changed
Added a Rate this challenge checkbox in Advanced Options for marathon match and development challenge forms. The checkbox defaults to checked, writes metadata isRated=false when unchecked, and removes that metadata when checked again so rated remains the default.
Any added/updated tests
Added RateChallengeField tests covering the default checked state, writing isRated=false when unchecked, and removing the metadata when rechecked.
---
.../components/ChallengeEditorForm.tsx | 66 +++++++--
.../RateChallengeField.spec.tsx | 134 ++++++++++++++++++
.../RateChallengeField/RateChallengeField.tsx | 114 +++++++++++++++
.../components/RateChallengeField/index.ts | 1 +
4 files changed, 305 insertions(+), 10 deletions(-)
create mode 100644 src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.spec.tsx
create mode 100644 src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.tsx
create mode 100644 src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/index.ts
diff --git a/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/ChallengeEditorForm.tsx b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/ChallengeEditorForm.tsx
index 94e3bfe28..beff5fa2e 100644
--- a/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/ChallengeEditorForm.tsx
+++ b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/ChallengeEditorForm.tsx
@@ -157,6 +157,9 @@ import {
import {
NDAField,
} from './NDAField'
+import {
+ RateChallengeField,
+} from './RateChallengeField'
import {
ReviewCostField,
} from './ReviewCostField'
@@ -289,6 +292,7 @@ const CHALLENGE_TYPE_MARATHON_MATCH_NAME = 'MARATHONMATCH'
const CHALLENGE_TYPE_MARATHON_MATCH_SHORT_ABBREVIATION = 'MM'
const CHALLENGE_TYPE_TASK_NAME = 'TASK'
const CHALLENGE_TYPE_TASK_SHORT_ABBREVIATION = 'TSK'
+const CHALLENGE_TRACK_DEVELOPMENT_NAME = 'DEVELOPMENT'
const CHECKPOINT_REQUIRED_PHASES = [
'Checkpoint Submission',
'Checkpoint Screening',
@@ -1642,20 +1646,36 @@ export const ChallengeEditorForm: FC = (
values.trackId,
],
)
+ const fallbackChallengeTrackName = useMemo(
+ (): string | undefined => {
+ const challengeTrack = props.challenge?.track
+
+ if (!challengeTrack) {
+ return props.challenge?.legacy?.track
+ }
+
+ if (typeof challengeTrack === 'string') {
+ return challengeTrack
+ }
+
+ return challengeTrack.track || challengeTrack.name || challengeTrack.abbreviation
+ },
+ [
+ props.challenge?.legacy?.track,
+ props.challenge?.track,
+ ],
+ )
+ const resolvedChallengeTrackName = selectedChallengeTrack?.track
+ || selectedChallengeTrack?.name
+ || selectedChallengeTrack?.abbreviation
+ || fallbackChallengeTrackName
const isDesignTrackSelected = useMemo(
(): boolean => {
- const normalizedTrack = (
- selectedChallengeTrack?.track
- || selectedChallengeTrack?.name
- || selectedChallengeTrack?.abbreviation
- || ''
- )
- .trim()
- .toUpperCase()
+ const normalizedTrack = normalizeChallengeTypeToken(resolvedChallengeTrackName)
- return normalizedTrack === CHALLENGE_TRACKS.DESIGN
+ return normalizedTrack === normalizeChallengeTypeToken(CHALLENGE_TRACKS.DESIGN)
},
- [selectedChallengeTrack],
+ [resolvedChallengeTrackName],
)
const isChallengeTypeSelected = useMemo(
(): boolean => {
@@ -1720,6 +1740,28 @@ export const ChallengeEditorForm: FC = (
resolvedChallengeTypeName,
],
)
+ const isDevelopmentChallengeSelected = useMemo(
+ (): boolean => {
+ const normalizedTrackName = normalizeChallengeTypeToken(resolvedChallengeTrackName)
+ const normalizedChallengeTypeName = normalizeChallengeTypeToken(resolvedChallengeTypeName)
+ const normalizedChallengeTypeAbbreviation
+ = normalizeChallengeTypeToken(resolvedChallengeTypeAbbreviation)
+
+ return (
+ normalizedTrackName === CHALLENGE_TRACK_DEVELOPMENT_NAME
+ || normalizedTrackName === normalizeChallengeTypeToken(CHALLENGE_TRACKS.DEVELOP)
+ )
+ && (
+ normalizedChallengeTypeName === CHALLENGE_TYPE_CHALLENGE_NAME
+ || normalizedChallengeTypeAbbreviation === CHALLENGE_TYPE_CHALLENGE_ABBREVIATION
+ )
+ },
+ [
+ resolvedChallengeTrackName,
+ resolvedChallengeTypeAbbreviation,
+ resolvedChallengeTypeName,
+ ],
+ )
const showRoundTypeField = isDesignTrackSelected && isChallengeTypeSelected
const showDesignWorkTypeField = isDesignTrackSelected && isChallengeTypeSelected
const challengeTypeOptions = useMemo(
@@ -1812,6 +1854,7 @@ export const ChallengeEditorForm: FC = (
const isFunChallengeSelected = values.funChallenge === true
const showFunChallengeField = isMarathonMatchChallengeSelected
const showMarathonMatchScorerSection = isMarathonMatchChallengeSelected && isChallengeCreated
+ const showRateChallengeField = isMarathonMatchChallengeSelected || isDevelopmentChallengeSelected
const showPrizesAndBillingSection = !isFunChallengeSelected
const showEditableTimelineSection = !isTaskChallenge
const usesManualReviewers = useMemo(
@@ -3685,6 +3728,9 @@ export const ChallengeEditorForm: FC = (
label='Wipro Allowed'
name='wiproAllowed'
/>
+ {showRateChallengeField
+ ?
+ : undefined}
diff --git a/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.spec.tsx b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.spec.tsx
new file mode 100644
index 000000000..135e98c42
--- /dev/null
+++ b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.spec.tsx
@@ -0,0 +1,134 @@
+/* eslint-disable import/no-extraneous-dependencies, ordered-imports/ordered-imports */
+import { FC } from 'react'
+import {
+ render,
+ screen,
+ waitFor,
+} from '@testing-library/react'
+import '@testing-library/jest-dom'
+import userEvent from '@testing-library/user-event'
+import {
+ FormProvider,
+ useForm,
+ useWatch,
+} from 'react-hook-form'
+
+import { ChallengeEditorFormData } from '../../../../../lib/models'
+
+import { RateChallengeField } from './RateChallengeField'
+
+jest.mock('../../../../../lib/components/form', () => ({
+ FormCheckboxField: function MockFormCheckboxField(props: {
+ label: string
+ name: string
+ onChange?: (checked: boolean) => void
+ }) {
+ const React: typeof import('react') = jest.requireActual('react')
+ const reactHookForm: typeof import('react-hook-form') = jest.requireActual('react-hook-form')
+ const formContext = reactHookForm.useFormContext()
+ const controller = reactHookForm.useController({
+ control: formContext.control,
+ name: props.name,
+ })
+
+ return React.createElement(
+ 'label',
+ {},
+ React.createElement('input', {
+ checked: controller.field.value === true,
+ onChange: (event: { target: { checked: boolean } }) => {
+ controller.field.onChange(event.target.checked)
+ props.onChange?.(event.target.checked)
+ },
+ type: 'checkbox',
+ }),
+ props.label,
+ )
+ },
+}))
+
+interface TestHarnessProps {
+ defaultMetadata?: Array<{
+ name: string
+ value: unknown
+ }>
+}
+
+const MetadataWatcher: FC = () => {
+ const metadata = useWatch({
+ name: 'metadata',
+ })
+
+ return {JSON.stringify(metadata || [])}
+}
+
+const TestHarness: FC = (props: TestHarnessProps) => {
+ const formMethods = useForm({
+ defaultValues: {
+ description: 'Public challenge specification',
+ metadata: props.defaultMetadata,
+ name: 'Development challenge',
+ skills: [],
+ tags: [],
+ trackId: 'development-track',
+ typeId: 'development-type',
+ },
+ })
+
+ return (
+
+
+
+
+ )
+}
+
+describe('RateChallengeField', () => {
+ it('defaults to rated when metadata is missing and stores false when unchecked', async () => {
+ const user = userEvent.setup()
+
+ render( )
+
+ const checkbox = screen.getByRole('checkbox', { name: 'Rate this challenge' })
+ await waitFor(() => {
+ expect(checkbox)
+ .toBeChecked()
+ })
+
+ await user.click(checkbox)
+
+ expect(checkbox)
+ .not.toBeChecked()
+ expect(screen.getByTestId('metadata-value').textContent)
+ .toBe(JSON.stringify([{
+ name: 'isRated',
+ value: 'false',
+ }]))
+ })
+
+ it('restores the default rated metadata when checked again', async () => {
+ const user = userEvent.setup()
+
+ render(
+ ,
+ )
+
+ const checkbox = screen.getByRole('checkbox', { name: 'Rate this challenge' })
+ await waitFor(() => {
+ expect(checkbox)
+ .not.toBeChecked()
+ })
+
+ await user.click(checkbox)
+
+ expect(checkbox)
+ .toBeChecked()
+ expect(screen.getByTestId('metadata-value').textContent)
+ .toBe(JSON.stringify([]))
+ })
+})
diff --git a/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.tsx b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.tsx
new file mode 100644
index 000000000..b2fc83291
--- /dev/null
+++ b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/RateChallengeField.tsx
@@ -0,0 +1,114 @@
+import {
+ FC,
+ useCallback,
+ useEffect,
+} from 'react'
+import {
+ useFormContext,
+ useWatch,
+} from 'react-hook-form'
+
+import { FormCheckboxField } from '../../../../../lib/components/form'
+import {
+ getMetadataValue,
+ removeMetadataValue,
+ setMetadataValue,
+} from '../../../../../lib/utils/metadata.utils'
+import {
+ ChallengeEditorFormData,
+ ChallengeMetadata,
+} from '../../../../../lib/models'
+
+const IS_RATED_FIELD = 'isRated'
+const IS_RATED_TOGGLE_FIELD = 'isRatedToggle'
+
+interface RateChallengeFormData extends ChallengeEditorFormData {
+ isRatedToggle?: boolean
+}
+
+/**
+ * Resolves whether a challenge should be treated as rated from metadata.
+ *
+ * @param metadata challenge metadata entries currently held by the editor form.
+ * @returns `false` only when the `isRated` metadata entry is explicitly `false`;
+ * otherwise challenges stay rated by default.
+ * @throws Does not throw.
+ */
+function isRatedMetadataEnabled(metadata: ChallengeMetadata[] | undefined): boolean {
+ return getMetadataValue(metadata, IS_RATED_FIELD)
+ ?.trim()
+ .toLowerCase() !== 'false'
+}
+
+/**
+ * Renders the challenge rating opt-out control backed by challenge metadata.
+ *
+ * Missing `isRated` metadata defaults to rated, so the saved challenge only
+ * needs an explicit `isRated=false` entry when the user opts out.
+ *
+ * @returns The rated challenge checkbox used by the challenge editor.
+ * @throws Does not throw.
+ */
+export const RateChallengeField: FC = () => {
+ const formContext = useFormContext()
+ const metadata = useWatch({
+ control: formContext.control,
+ name: 'metadata',
+ })
+ const isRatedToggle = useWatch({
+ control: formContext.control,
+ name: IS_RATED_TOGGLE_FIELD,
+ })
+
+ const isRated = isRatedMetadataEnabled(metadata)
+
+ useEffect(() => {
+ if (isRatedToggle !== undefined) {
+ return
+ }
+
+ formContext.setValue(
+ IS_RATED_TOGGLE_FIELD,
+ isRated,
+ {
+ shouldDirty: false,
+ shouldValidate: false,
+ },
+ )
+ }, [formContext, isRated, isRatedToggle])
+
+ const handleRatedChange = useCallback((checked: boolean): void => {
+ if (checked === isRated) {
+ return
+ }
+
+ formContext.setValue(
+ 'metadata',
+ checked
+ ? removeMetadataValue(metadata, IS_RATED_FIELD)
+ : setMetadataValue(
+ metadata,
+ IS_RATED_FIELD,
+ 'false',
+ ),
+ {
+ shouldDirty: true,
+ shouldValidate: true,
+ },
+ )
+ }, [
+ formContext,
+ isRated,
+ metadata,
+ ])
+
+ return (
+
+ )
+}
+
+export default RateChallengeField
diff --git a/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/index.ts b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/index.ts
new file mode 100644
index 000000000..8a4187e97
--- /dev/null
+++ b/src/apps/work/src/pages/challenges/ChallengeEditorPage/components/RateChallengeField/index.ts
@@ -0,0 +1 @@
+export * from './RateChallengeField'
From e155a2dc7e242158b2b0733bd890cb2c2a236593 Mon Sep 17 00:00:00 2001
From: Justin Gasper
Date: Wed, 20 May 2026 13:04:15 +1000
Subject: [PATCH 16/56] PM-5104: Add TG reprocess confirmation
What was broken
The Topgear submission reprocess icon in the review app sent the reprocess request immediately when clicked.
Root cause
The click handler directly called the Topgear reprocess service without a confirmation step.
What was changed
Added a confirmation dialog that asks whether to reprocess the selected Topgear submission, with Yes continuing the reprocess request and No closing the dialog.
Any added/updated tests
Added a focused TabContentSubmissions component test covering that the dialog opens, No does not reprocess, and Yes calls the reprocess service.
---
.../TabContentSubmissions.spec.tsx | 299 ++++++++++++++++++
.../TabContentSubmissions.tsx | 42 +++
2 files changed, 341 insertions(+)
create mode 100644 src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.spec.tsx
diff --git a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.spec.tsx b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.spec.tsx
new file mode 100644
index 000000000..481e63317
--- /dev/null
+++ b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.spec.tsx
@@ -0,0 +1,299 @@
+/* eslint-disable import/no-extraneous-dependencies, ordered-imports/ordered-imports */
+import { act } from 'react'
+import type { PropsWithChildren } from 'react'
+import {
+ fireEvent,
+ render,
+ screen,
+ waitFor,
+} from '@testing-library/react'
+
+import type {
+ BackendSubmission,
+ ChallengeDetailContextModel,
+ ChallengeInfo,
+ ReviewAppContextModel,
+} from '../../models'
+import {
+ ChallengeDetailContext,
+ ReviewAppContext,
+} from '../../contexts'
+import { reprocessTopgearSubmission } from '../../services'
+
+import { TabContentSubmissions } from './TabContentSubmissions'
+
+jest.mock('~/config', () => ({
+ EnvironmentConfig: {
+ REVIEW: {
+ PROFILE_PAGE_URL: 'https://profiles.example.com',
+ },
+ },
+}), { virtual: true })
+
+jest.mock('~/libs/core', () => ({
+ getRatingColor: jest.fn()
+ .mockReturnValue('#000000'),
+ UserRole: {
+ administrator: 'administrator',
+ projectManager: 'projectManager',
+ },
+ xhrGetAsync: jest.fn(),
+}), { virtual: true })
+
+jest.mock('../../contexts', () => {
+ const React: typeof import('react') = jest.requireActual('react')
+
+ return {
+ ChallengeDetailContext: React.createContext({}),
+ ReviewAppContext: React.createContext({}),
+ }
+})
+
+jest.mock('react-toastify', () => ({
+ toast: {
+ error: jest.fn(),
+ success: jest.fn(),
+ },
+}))
+
+jest.mock('~/apps/admin/src/lib', () => ({
+ TableLoading: () => Loading
,
+}), { virtual: true })
+
+jest.mock('~/apps/admin/src/lib/components/common/TableMobile', () => ({
+ TableMobile: () => Mobile table
,
+}), { virtual: true })
+
+jest.mock('~/apps/admin/src/lib/utils', () => ({
+ handleError: jest.fn(),
+}), { virtual: true })
+
+jest.mock('~/libs/shared', () => ({
+ copyTextToClipboard: () => Promise.resolve(),
+ useWindowSize: () => ({
+ height: 800,
+ width: 1200,
+ }),
+}), { virtual: true })
+
+jest.mock('~/libs/ui', () => ({
+ IconOutline: {
+ DocumentDuplicateIcon: () => ,
+ RefreshIcon: () => ,
+ },
+ Table: (props: {
+ columns: Array<{
+ propertyName?: string
+ renderer?: (row: BackendSubmission, rows: BackendSubmission[]) => JSX.Element
+ }>
+ data: BackendSubmission[]
+ }) => (
+
+
+ {props.data.map(row => (
+
+ {props.columns.map((column, index) => (
+
+ {column.renderer
+ ? column.renderer(row, props.data)
+ : row[column.propertyName as keyof BackendSubmission] as string}
+
+ ))}
+
+ ))}
+
+
+ ),
+ Tooltip: (props: PropsWithChildren) => <>{props.children}>,
+}), { virtual: true })
+
+jest.mock('../../hooks', () => ({
+ useRolePermissions: () => ({
+ actionChallengeRole: undefined,
+ canManageCompletedReviews: true,
+ canViewAllSubmissions: true,
+ hasCopilotRole: false,
+ hasReviewerRole: false,
+ hasSubmitterRole: false,
+ isAdmin: true,
+ isCopilotWithReviewerAssignments: false,
+ isProjectManager: false,
+ ownedMemberIds: new Set(),
+ }),
+}))
+
+jest.mock('../../hooks/useSubmissionDownloadAccess', () => ({
+ useSubmissionDownloadAccess: () => ({
+ currentMemberId: 'admin-user',
+ getRestrictionMessageForMember: () => undefined,
+ isSubmissionDownloadRestricted: false,
+ isSubmissionDownloadRestrictedForMember: () => false,
+ isSubmissionPhaseOpen: false,
+ restrictionMessage: '',
+ shouldRestrictSubmitterToOwnSubmission: false,
+ }),
+}))
+
+jest.mock('../../services', () => ({
+ canReprocessTopgearSubmission: () => true,
+ reprocessTopgearSubmission: jest.fn(),
+}))
+
+jest.mock('../CollapsibleAiReviewsRow', () => ({
+ CollapsibleAiReviewsRow: () => AI reviews
,
+}))
+
+jest.mock('../ConfirmModal', () => ({
+ ConfirmModal: (props: PropsWithChildren<{
+ action?: string
+ cancelText?: string
+ onClose: () => void
+ onConfirm: () => void
+ open: boolean
+ title: string
+ }>) => (
+ props.open ? (
+
+ {props.children}
+
+ {props.cancelText ?? 'Cancel'}
+
+
+ {props.action ?? 'Confirm'}
+
+
+ ) : undefined
+ ),
+}))
+
+jest.mock('../SubmissionHistoryModal', () => ({
+ SubmissionHistoryModal: () => undefined,
+}))
+
+jest.mock('../TableNoRecord', () => ({
+ TableNoRecord: (props: { message?: string }) => {props.message}
,
+}))
+
+jest.mock('../TableWrapper', () => ({
+ TableWrapper: (props: PropsWithChildren<{ className?: string }>) => (
+ {props.children}
+ ),
+}))
+
+const mockedReprocessTopgearSubmission = reprocessTopgearSubmission as jest.Mock
+
+const submission = {
+ challengeId: 'challenge-1',
+ id: 'submission-1',
+ isFileSubmission: false,
+ memberId: 'member-1',
+ review: [],
+ reviewSummation: [],
+ submittedDate: '2026-05-01T00:00:00.000Z',
+ url: 'https://example.com/submission',
+} as unknown as BackendSubmission
+
+const challengeInfo = {
+ id: 'challenge-1',
+ metadata: [],
+ phases: [],
+ status: 'Completed',
+ submissions: [],
+ track: {
+ id: 'track-1',
+ name: 'Development',
+ },
+ type: {
+ id: 'type-1',
+ name: 'Topgear Task',
+ },
+} as unknown as ChallengeInfo
+
+const challengeDetailContextValue = {
+ aiReviewDecisionsBySubmissionId: {},
+ challengeId: 'challenge-1',
+ challengeInfo,
+ challengeSubmissions: [submission],
+ hasChallengeScopedFetchError: false,
+ isLoadingAiReviewConfig: false,
+ isLoadingAiReviewDecisions: false,
+ isLoadingChallengeInfo: false,
+ isLoadingChallengeResources: false,
+ isLoadingChallengeSubmissions: false,
+ myResources: [],
+ myRoles: [],
+ registrants: [],
+ resourceMemberIdMapping: {},
+ resources: [],
+ retryChallengeScopedFetches: jest.fn(),
+ reviewers: [],
+} as ChallengeDetailContextModel
+
+const reviewAppContextValue = {
+ cancelLoadChallengeRelativeInfos: jest.fn(),
+ challengeRelativeInfosMapping: {},
+ loadChallengeRelativeInfos: jest.fn(),
+ loginUserInfo: {
+ roles: ['administrator'],
+ userId: 123,
+ },
+} as ReviewAppContextModel
+
+function renderSubmissions(): ReturnType {
+ return render(
+
+
+
+
+ ,
+ )
+}
+
+describe('TabContentSubmissions', () => {
+ beforeEach(() => {
+ jest.clearAllMocks()
+ mockedReprocessTopgearSubmission.mockResolvedValue('ok')
+ })
+
+ it('confirms before reprocessing a Topgear submission', async () => {
+ renderSubmissions()
+
+ fireEvent.click(screen.getByRole('button', { name: 'Reprocess Topgear submission' }))
+
+ expect(screen.getByRole('dialog', { name: 'Reprocess Topgear Submission' }))
+ .toBeTruthy()
+ expect(screen.getByText('Are you sure you want to reprocess this Topgear submission?'))
+ .toBeTruthy()
+ expect(mockedReprocessTopgearSubmission)
+ .not
+ .toHaveBeenCalled()
+
+ fireEvent.click(screen.getByRole('button', { name: 'No' }))
+
+ expect(screen.queryByRole('dialog', { name: 'Reprocess Topgear Submission' }))
+ .toBeNull()
+ expect(mockedReprocessTopgearSubmission)
+ .not
+ .toHaveBeenCalled()
+
+ fireEvent.click(screen.getByRole('button', { name: 'Reprocess Topgear submission' }))
+ await act(async () => {
+ fireEvent.click(screen.getByRole('button', { name: 'Yes' }))
+ })
+
+ await waitFor(() => {
+ expect(mockedReprocessTopgearSubmission)
+ .toHaveBeenCalledWith({
+ submission,
+ submissionInfo: expect.objectContaining({
+ id: 'submission-1',
+ }),
+ })
+ })
+ })
+})
diff --git a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.tsx b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.tsx
index 2d8a4e668..536480f4e 100644
--- a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.tsx
+++ b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentSubmissions.tsx
@@ -51,6 +51,7 @@ import {
canReprocessTopgearSubmission,
reprocessTopgearSubmission,
} from '../../services'
+import { ConfirmModal } from '../ConfirmModal'
import { canDownloadSubmissionFromSubmissionsTab } from './submissionDownloadPermissions'
import styles from './TabContentSubmissions.module.scss'
@@ -87,6 +88,10 @@ export const TabContentSubmissions: FC = props => {
const { challengeInfo, registrants }: ChallengeDetailContextModel = useContext(ChallengeDetailContext)
const [isReprocessingSubmission, setIsReprocessingSubmission] = useState({})
+ const [
+ pendingReprocessSubmissionId,
+ setPendingReprocessSubmissionId,
+ ] = useState(undefined)
const canShowTopgearReprocess = useMemo(
() => canReprocessTopgearSubmission(challengeInfo, isAdmin),
@@ -233,11 +238,29 @@ export const TabContentSubmissions: FC = props => {
return
}
+ setPendingReprocessSubmissionId(submissionId)
+ },
+ [],
+ )
+
+ const closeReprocessConfirmation = useCallback((): void => {
+ setPendingReprocessSubmissionId(undefined)
+ }, [])
+
+ const handleConfirmReprocessSubmission = useCallback(
+ async (): Promise => {
+ const submissionId = pendingReprocessSubmissionId
+ if (!submissionId) {
+ closeReprocessConfirmation()
+ return
+ }
+
const submission = submissionMetaById.get(submissionId)
if (!submission) {
toast.error('Submission could not be found for reprocess', {
toastId: `topgear-submission-reprocess-${submissionId}`,
})
+ closeReprocessConfirmation()
return
}
@@ -254,6 +277,7 @@ export const TabContentSubmissions: FC = props => {
toast.success('Reprocess submission request sent', {
toastId: `topgear-submission-reprocess-${submissionId}`,
})
+ closeReprocessConfirmation()
} catch (error) {
handleError(error as Error)
} finally {
@@ -264,6 +288,8 @@ export const TabContentSubmissions: FC = props => {
}
},
[
+ closeReprocessConfirmation,
+ pendingReprocessSubmissionId,
submissionInfoById,
submissionMetaById,
],
@@ -601,6 +627,22 @@ export const TabContentSubmissions: FC = props => {
getSubmissionMeta={resolveSubmissionMeta}
aiReviewers={props.aiReviewers}
/>
+
+
+ Are you sure you want to reprocess this Topgear submission?
+
+
)
}
From 3607cc37f3e8af5351e2bb4837d2dd64f48d818c Mon Sep 17 00:00:00 2001
From: Justin Gasper
Date: Thu, 21 May 2026 10:06:08 +1000
Subject: [PATCH 17/56] PM-5112: show latest relative marathon scores
What was broken
The Work app submissions table could show an older raw Marathon Match score while community-app showed the updated relative provisional score.
Root cause
The Work app score helper returned the first matching Review API summation, and legacy nested scores were preferred before summations, so later relative-score rewrites could be ignored.
What was changed
Marathon provisional and system score helpers now pick the latest valid matching review summation by timestamp and use legacy nested scores only as a fallback.
Any added/updated tests
Added regression coverage for provisional and system scores where a later relative summation must override a stale raw score.
---
.../src/lib/utils/challenge.utils.spec.ts | 58 ++++++++++++++++
.../work/src/lib/utils/challenge.utils.ts | 67 +++++++++++++++----
2 files changed, 113 insertions(+), 12 deletions(-)
diff --git a/src/apps/work/src/lib/utils/challenge.utils.spec.ts b/src/apps/work/src/lib/utils/challenge.utils.spec.ts
index 481b57044..142b50072 100644
--- a/src/apps/work/src/lib/utils/challenge.utils.spec.ts
+++ b/src/apps/work/src/lib/utils/challenge.utils.spec.ts
@@ -63,6 +63,35 @@ describe('challenge utils', () => {
.toBe(12)
})
+ it('returns the latest provisional summation before stale raw scores', () => {
+ expect(getSubmissionProvisionalScore({
+ reviewSummation: [
+ {
+ aggregateScore: 93.82,
+ isProvisional: true,
+ metadata: {
+ testProcess: 'provisional',
+ },
+ updatedAt: '2026-05-20T03:41:00.000Z',
+ },
+ {
+ aggregateScore: 73.2513061836071,
+ isProvisional: true,
+ metadata: {
+ testProcess: 'provisional',
+ },
+ updatedAt: '2026-05-20T04:04:00.000Z',
+ },
+ ],
+ submissions: [
+ {
+ provisionalScore: 93.82,
+ },
+ ],
+ }))
+ .toBe(73.2513061836071)
+ })
+
it('returns undefined when provisional scoring is unavailable', () => {
expect(getSubmissionProvisionalScore({
review: [
@@ -127,6 +156,35 @@ describe('challenge utils', () => {
.toBe(20)
})
+ it('returns the latest system summation before stale raw scores', () => {
+ expect(getSubmissionSystemScore({
+ reviewSummation: [
+ {
+ aggregateScore: 60,
+ isFinal: true,
+ metadata: {
+ testProcess: 'system',
+ },
+ updatedAt: '2026-05-20T03:41:00.000Z',
+ },
+ {
+ aggregateScore: 88.5,
+ isFinal: true,
+ metadata: {
+ testProcess: 'system',
+ },
+ updatedAt: '2026-05-20T04:04:00.000Z',
+ },
+ ],
+ submissions: [
+ {
+ finalScore: 60,
+ },
+ ],
+ }))
+ .toBe(88.5)
+ })
+
it('returns undefined when system scoring is unavailable', () => {
expect(getSubmissionSystemScore({
review: [
diff --git a/src/apps/work/src/lib/utils/challenge.utils.ts b/src/apps/work/src/lib/utils/challenge.utils.ts
index d3833474c..91a82b63e 100644
--- a/src/apps/work/src/lib/utils/challenge.utils.ts
+++ b/src/apps/work/src/lib/utils/challenge.utils.ts
@@ -118,6 +118,28 @@ function getAverageScore(scores: Array): number | undefined
return totalScore / validScores.length
}
+/**
+ * Resolves the best timestamp available for ordering scored review summations.
+ * @param entry Review summation returned by Review API.
+ * @returns Epoch milliseconds or 0 when no parseable timestamp exists.
+ * Used by marathon score display to pick the latest relative-scoring update.
+ */
+function getReviewSummationScoreTimestamp(entry: ReviewSummation): number {
+ const timestamp = entry.updatedAt || entry.createdAt || ''
+ const parsedTimestamp = Date.parse(timestamp)
+
+ return Number.isFinite(parsedTimestamp)
+ ? parsedTimestamp
+ : 0
+}
+
+/**
+ * Returns the latest valid score from matching Review API summations.
+ * @param reviewSummation Review summations attached to a submission.
+ * @param matcher Predicate that selects the requested Marathon Match score phase.
+ * @returns Latest valid aggregate score, or `undefined` when no matching score exists.
+ * Used by marathon score display so relative-score rewrites replace stale raw scores.
+ */
function getScoreFromSummation(
reviewSummation: ReviewSummation[] | undefined,
matcher: (entry: ReviewSummation) => boolean,
@@ -126,9 +148,20 @@ function getScoreFromSummation(
return undefined
}
- const matchedSummation = reviewSummation.find(matcher)
+ const matchedSummation = reviewSummation
+ .map((entry, index) => ({
+ entry,
+ index,
+ score: toValidScore(entry.aggregateScore),
+ timestamp: getReviewSummationScoreTimestamp(entry),
+ }))
+ .filter(item => item.score !== undefined && matcher(item.entry))
+ .sort((first, second) => (
+ second.timestamp - first.timestamp
+ || second.index - first.index
+ ))[0]
- return toValidScore(matchedSummation?.aggregateScore)
+ return matchedSummation?.score
}
/**
@@ -439,11 +472,19 @@ export function getProvisionalScore(submission: ScoredSubmissionLike): number {
* Returns only the provisional marathon score for a submission.
* @param submission Submission-like object containing legacy phase scores or Review API summations.
* @returns Provisional score, or `undefined` when provisional scoring has not produced a valid score.
- * Used by marathon submission score display to avoid falling back to unrelated review scores.
+ * Used by marathon submission score display to prefer latest relative summations over stale raw scores.
*/
export function getSubmissionProvisionalScore(
submission: ScoredSubmissionLike,
): number | undefined {
+ const provisionalSummationScore = getScoreFromSummation(
+ submission.reviewSummation,
+ item => getReviewSummationTestProcess(item) === 'provisional',
+ )
+ if (provisionalSummationScore !== undefined) {
+ return provisionalSummationScore
+ }
+
const legacyProvisionalScore = toValidScore(
submission.submissions?.[0]?.provisionalScore,
)
@@ -451,10 +492,7 @@ export function getSubmissionProvisionalScore(
return legacyProvisionalScore
}
- return getScoreFromSummation(
- submission.reviewSummation,
- item => getReviewSummationTestProcess(item) === 'provisional',
- )
+ return undefined
}
export function getSubmissionInitialScore(submission: ScoredSubmissionLike): number {
@@ -488,11 +526,19 @@ export function getFinalScore(submission: ScoredSubmissionLike): number {
* Returns only the system marathon score for a submission.
* @param submission Submission-like object containing legacy phase scores or Review API summations.
* @returns System score, or `undefined` when system scoring has not produced a valid score.
- * Used by marathon submission score display to show pending/unavailable system scores as empty.
+ * Used by marathon submission score display to prefer latest relative summations over stale raw scores.
*/
export function getSubmissionSystemScore(
submission: ScoredSubmissionLike,
): number | undefined {
+ const systemSummationScore = getScoreFromSummation(
+ submission.reviewSummation,
+ item => getReviewSummationTestProcess(item) === 'system',
+ )
+ if (systemSummationScore !== undefined) {
+ return systemSummationScore
+ }
+
const legacyFinalScore = toValidScore(
submission.submissions?.[0]?.finalScore,
)
@@ -500,10 +546,7 @@ export function getSubmissionSystemScore(
return legacyFinalScore
}
- return getScoreFromSummation(
- submission.reviewSummation,
- item => getReviewSummationTestProcess(item) === 'system',
- )
+ return undefined
}
export function getSubmissionFinalScore(submission: ScoredSubmissionLike): number {
From be3356e8ed35d321d192bc8bcb657dca6058b44b Mon Sep 17 00:00:00 2001
From: Justin Gasper
Date: Thu, 21 May 2026 10:28:57 +1000
Subject: [PATCH 18/56] PM-5113: Use marathon aggregate review scores
What was broken
Marathon Match review rows displayed scorecard-derived review scores, so submitters could see 0.00 and a Fail result after winners were announced even when review summations had the final aggregate score.
Root cause
The review app's shared review table helpers preferred per-review scorecard averages over submission aggregate scores, and the score cell always linked through the scorecard path. Marathon Match system reviews do not have a scorecard to open.
What was changed
Added Marathon Match challenge detection in the review app and routed review tables to prefer review summation aggregate scores for Marathon Match submissions. The Review Score and Score cells now display the aggregate score as plain text for Marathon Match rows, and pass/fail resolution can use the aggregate score before scorecard averages.
Any added/updated tests
Added tests for Marathon Match challenge detection, aggregate-score pass/fail resolution, and aggregate score rendering without a scorecard link.
---
.../TabContentReview.tsx | 32 ++++--
.../components/TableReview/TableReview.tsx | 10 +-
.../TableReviewForSubmitter.tsx | 9 ++
.../common/TableColumnRenderers.spec.tsx | 99 +++++++++++++++++++
.../common/TableColumnRenderers.tsx | 44 +++++++--
.../components/common/reviewResult.spec.ts | 22 +++++
.../src/lib/components/common/reviewResult.ts | 42 +++++++-
.../review/src/lib/components/common/types.ts | 2 +
.../review/src/lib/utils/challenge.spec.ts | 24 +++++
src/apps/review/src/lib/utils/challenge.ts | 25 +++++
10 files changed, 288 insertions(+), 21 deletions(-)
create mode 100644 src/apps/review/src/lib/components/common/TableColumnRenderers.spec.tsx
diff --git a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentReview.tsx b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentReview.tsx
index 2d6e7c532..fd108a356 100644
--- a/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentReview.tsx
+++ b/src/apps/review/src/lib/components/ChallengeDetailsContent/TabContentReview.tsx
@@ -24,7 +24,7 @@ import {
ReviewResult,
SubmissionInfo,
} from '../../models'
-import { hasIsLatestFlag } from '../../utils'
+import { hasIsLatestFlag, isMarathonMatchChallenge } from '../../utils'
import { TableAppeals } from '../TableAppeals'
import { TableAppealsForSubmitter } from '../TableAppealsForSubmitter'
import { TableAppealsResponse } from '../TableAppealsResponse'
@@ -86,7 +86,15 @@ const parseScoreValue = (value: unknown): number | undefined => {
return undefined
}
-const resolveSubmissionReviewScore = (submission: SubmissionInfo): number | undefined => {
+const resolveSubmissionReviewScore = (
+ submission: SubmissionInfo,
+ preferAggregateScore: boolean,
+): number | undefined => {
+ const aggregateScore = parseScoreValue(submission.aggregateScore)
+ if (preferAggregateScore && aggregateScore !== undefined) {
+ return aggregateScore
+ }
+
const reviewResultScores = Array.isArray(submission.reviews)
? submission.reviews
.map(review => parseScoreValue(review?.score))
@@ -98,7 +106,6 @@ const resolveSubmissionReviewScore = (submission: SubmissionInfo): number | unde
return total / reviewResultScores.length
}
- const aggregateScore = parseScoreValue(submission.aggregateScore)
if (aggregateScore !== undefined) {
return aggregateScore
}
@@ -122,10 +129,13 @@ type SubmissionScoreEntry = {
submission: SubmissionInfo
}
-const sortSubmissionsByReviewScoreDesc = (rows: SubmissionInfo[]): SubmissionInfo[] => {
+const sortSubmissionsByReviewScoreDesc = (
+ rows: SubmissionInfo[],
+ preferAggregateScore: boolean,
+): SubmissionInfo[] => {
const entries: SubmissionScoreEntry[] = rows.map((submission, index) => ({
index,
- score: resolveSubmissionReviewScore(submission),
+ score: resolveSubmissionReviewScore(submission, preferAggregateScore),
submission,
}))
@@ -227,6 +237,10 @@ export const TabContentReview: FC = (props: Props) => {
() => challengeInfo?.submissions ?? [],
[challengeInfo?.submissions],
)
+ const useAggregateReviewScore = useMemo(
+ () => isMarathonMatchChallenge(challengeInfo),
+ [challengeInfo],
+ )
const myOwnedMemberIds = useMemo>(
() => {
const ids = new Set()
@@ -736,15 +750,15 @@ export const TabContentReview: FC = (props: Props) => {
)
const reviewerRowsForReviewTab = useMemo(
() => (shouldSortReviewTabByScore
- ? sortSubmissionsByReviewScoreDesc(filteredReviews)
+ ? sortSubmissionsByReviewScoreDesc(filteredReviews, useAggregateReviewScore)
: filteredReviews),
- [filteredReviews, shouldSortReviewTabByScore],
+ [filteredReviews, shouldSortReviewTabByScore, useAggregateReviewScore],
)
const submitterRowsForReviewTab = useMemo(
() => (shouldSortReviewTabByScore
- ? sortSubmissionsByReviewScoreDesc(filteredSubmitterReviews)
+ ? sortSubmissionsByReviewScoreDesc(filteredSubmitterReviews, useAggregateReviewScore)
: filteredSubmitterReviews),
- [filteredSubmitterReviews, shouldSortReviewTabByScore],
+ [filteredSubmitterReviews, shouldSortReviewTabByScore, useAggregateReviewScore],
)
const hideHandleColumn = props.isActiveChallenge
&& actionChallengeRole === REVIEWER
diff --git a/src/apps/review/src/lib/components/TableReview/TableReview.tsx b/src/apps/review/src/lib/components/TableReview/TableReview.tsx
index 076201921..8fb3e75c3 100644
--- a/src/apps/review/src/lib/components/TableReview/TableReview.tsx
+++ b/src/apps/review/src/lib/components/TableReview/TableReview.tsx
@@ -42,6 +42,7 @@ import {
import {
aggregateSubmissionReviews,
challengeHasSubmissionLimit,
+ isMarathonMatchChallenge,
isReviewPhase,
isReviewPhaseCurrentlyOpen,
refreshChallengeReviewData,
@@ -193,6 +194,10 @@ export const TableReview: FC = (props: TableReviewProps) => {
() => challengeHasSubmissionLimit(challengeInfo),
[challengeInfo],
)
+ const useAggregateReviewScore = useMemo(
+ () => isMarathonMatchChallenge(challengeInfo),
+ [challengeInfo],
+ )
const submissionMetaById = useMemo>(
() => createSubmissionMetaMap(filteredChallengeSubmissions, reviewPhaseDatas),
@@ -470,8 +475,9 @@ export const TableReview: FC = (props: TableReviewProps) => {
canDisplayScores: () => true,
canViewScorecard: true,
isAppealsTab: false,
+ useAggregateScore: useAggregateReviewScore,
}),
- [],
+ [useAggregateReviewScore],
)
const { canViewAllSubmissions }: UseRolePermissionsResult = useRolePermissions()
@@ -967,6 +973,7 @@ export const TableReview: FC = (props: TableReviewProps) => {
const result = resolveSubmissionReviewResult(row, {
minimumPassingScoreByScorecardId,
+ preferAggregateScore: useAggregateReviewScore,
})
if (result === 'PASS') {
return (
@@ -1050,6 +1057,7 @@ export const TableReview: FC = (props: TableReviewProps) => {
openReopenDialog,
challengeInfo,
pendingReopen,
+ useAggregateReviewScore,
])
const columnsMobile = useMemo[][]>(
diff --git a/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.tsx b/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.tsx
index bc30121d3..bd6aad00d 100644
--- a/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.tsx
+++ b/src/apps/review/src/lib/components/TableReviewForSubmitter/TableReviewForSubmitter.tsx
@@ -44,6 +44,7 @@ import {
getSubmissionHistoryKey,
isAppealsPhase,
isAppealsResponsePhase,
+ isMarathonMatchChallenge,
} from '../../utils'
import type { AggregatedSubmissionReviews } from '../../utils'
import {
@@ -173,6 +174,10 @@ export const TableReviewForSubmitter: FC = (props:
() => challengeHasSubmissionLimit(challengeInfo),
[challengeInfo],
)
+ const useAggregateReviewScore = useMemo(
+ () => isMarathonMatchChallenge(challengeInfo),
+ [challengeInfo],
+ )
const submissionMetaById = useMemo>(() => {
const map = new Map()
@@ -426,6 +431,7 @@ export const TableReviewForSubmitter: FC = (props:
canDisplayScores,
canViewScorecard: isChallengeCompleted || isOwnedSubmission,
isAppealsTab: false,
+ useAggregateScore: useAggregateReviewScore,
}
return renderReviewScoreCell(submission, scoreConfig)
@@ -444,6 +450,7 @@ export const TableReviewForSubmitter: FC = (props:
const result = resolveSubmissionReviewResult(submission, {
minimumPassingScoreByScorecardId,
+ preferAggregateScore: useAggregateReviewScore,
})
if (result === 'PASS') {
return (
@@ -489,6 +496,7 @@ export const TableReviewForSubmitter: FC = (props:
canDisplayScores,
canViewScorecard: isChallengeCompleted || isOwnedSubmission,
isAppealsTab: false,
+ useAggregateScore: useAggregateReviewScore,
}
return renderScoreCell(submission, submission.reviewerIndex, scoreConfig)
@@ -585,6 +593,7 @@ export const TableReviewForSubmitter: FC = (props:
restrictToLatest,
shouldShowHistoryActions,
shouldRestrictSubmitterToOwnSubmission,
+ useAggregateReviewScore,
])
const columnsMobile = useMemo[][]>(
diff --git a/src/apps/review/src/lib/components/common/TableColumnRenderers.spec.tsx b/src/apps/review/src/lib/components/common/TableColumnRenderers.spec.tsx
new file mode 100644
index 000000000..53f2f9a38
--- /dev/null
+++ b/src/apps/review/src/lib/components/common/TableColumnRenderers.spec.tsx
@@ -0,0 +1,99 @@
+/* eslint-disable import/no-extraneous-dependencies, ordered-imports/ordered-imports */
+import { render, screen } from '@testing-library/react'
+
+import type { SubmissionReviewerRow } from './types'
+import {
+ renderReviewScoreCell,
+ renderScoreCell,
+} from './TableColumnRenderers'
+
+jest.mock('~/config', () => ({
+ EnvironmentConfig: {
+ REVIEW: {
+ PROFILE_PAGE_URL: 'https://profiles.test',
+ },
+ },
+}), { virtual: true })
+
+jest.mock('~/libs/core', () => ({
+ getRatingColor: () => '#2a2a2a',
+}), { virtual: true })
+
+jest.mock('~/libs/shared', () => ({
+ copyTextToClipboard: jest.fn(),
+}), { virtual: true })
+
+jest.mock('~/libs/ui', () => {
+ const React = jest.requireActual('react')
+
+ return {
+ IconOutline: {
+ DocumentDuplicateIcon: () => React.createElement('span'),
+ },
+ Tooltip: (props: { children: React.ReactNode }) => (
+ React.createElement(React.Fragment, undefined, props.children)
+ ),
+ }
+}, { virtual: true })
+
+const buildMarathonSubmission = (): SubmissionReviewerRow => {
+ const submission = {
+ aggregateScore: 88,
+ id: 'submission-1',
+ memberId: 'member-1',
+ }
+
+ return {
+ ...submission,
+ aggregated: {
+ averageFinalScore: 0,
+ averageFinalScoreDisplay: '0.00',
+ id: submission.id,
+ reviews: [
+ {
+ finalScore: 0,
+ reviewId: 'review-1',
+ status: 'COMPLETED',
+ },
+ ],
+ submission,
+ },
+ isFirstReviewerRow: true,
+ isLastReviewerRow: true,
+ reviewerIndex: 0,
+ }
+}
+
+describe('TableColumnRenderers marathon score display', () => {
+ it('renders the aggregate score instead of the scorecard average for Review Score', () => {
+ render(renderReviewScoreCell(buildMarathonSubmission(), {
+ canDisplayScores: () => true,
+ canViewScorecard: true,
+ isAppealsTab: false,
+ useAggregateScore: true,
+ }))
+
+ expect(screen.getByText('88.00'))
+ .toBeTruthy()
+ expect(screen.queryByText('0.00'))
+ .toBeNull()
+ })
+
+ it('renders aggregate Score as plain text without a scorecard link', () => {
+ const rendered: ReturnType = render(renderScoreCell(
+ buildMarathonSubmission(),
+ 0,
+ {
+ canDisplayScores: () => true,
+ canViewScorecard: true,
+ isAppealsTab: false,
+ useAggregateScore: true,
+ },
+ ))
+
+ expect(screen.getByText('88.00'))
+ .toBeTruthy()
+ expect(rendered.container.querySelector('a'))
+ .toBeNull()
+ })
+})
diff --git a/src/apps/review/src/lib/components/common/TableColumnRenderers.tsx b/src/apps/review/src/lib/components/common/TableColumnRenderers.tsx
index aee6218ef..05863f444 100644
--- a/src/apps/review/src/lib/components/common/TableColumnRenderers.tsx
+++ b/src/apps/review/src/lib/components/common/TableColumnRenderers.tsx
@@ -223,6 +223,7 @@ export function renderReviewScoreCell(
const {
canDisplayScores,
canViewScorecard,
+ useAggregateScore,
viewOwnScorecardTooltip = VIEW_OWN_SCORECARD_TOOLTIP,
}: ScoreVisibilityConfig = configWithDefaults
@@ -234,6 +235,18 @@ export function renderReviewScoreCell(
)
}
+ if (useAggregateScore) {
+ const aggregateScoreDisplay = formatScoreDisplay(submission.aggregateScore)
+
+ return aggregateScoreDisplay ? (
+ {aggregateScoreDisplay}
+ ) : (
+
+ --
+
+ )
+ }
+
const aggregatedReviews = submission.aggregated?.reviews ?? []
const hasIncompleteReview = aggregatedReviews.some(review => {
const statusRaw = review.reviewInfo?.status ?? review.status
@@ -529,14 +542,13 @@ export function renderScoreCell(
const {
canDisplayScores,
canViewScorecard,
+ useAggregateScore,
viewOwnScorecardTooltip = VIEW_OWN_SCORECARD_TOOLTIP,
getReviewUrl,
canRespondToAppeals,
}: ScoreVisibilityConfig = configWithDefaults
- const reviewDetail = submission.aggregated?.reviews?.[reviewIndex]
-
- if (!reviewDetail) {
+ if (!canDisplayScores(submission)) {
return (
--
@@ -544,10 +556,25 @@ export function renderScoreCell(
)
}
- const reviewInfo = reviewDetail.reviewInfo
- const reviewId = reviewInfo?.id ?? reviewDetail.reviewId
+ if (useAggregateScore) {
+ const isFirstSubmissionRow = !('isFirstReviewerRow' in submission)
+ || submission.isFirstReviewerRow !== false
+ const aggregateScoreDisplay = isFirstSubmissionRow
+ ? formatScoreDisplay(submission.aggregateScore)
+ : undefined
- if (!reviewId) {
+ return aggregateScoreDisplay ? (
+ {aggregateScoreDisplay}
+ ) : (
+
+ --
+
+ )
+ }
+
+ const reviewDetail = submission.aggregated?.reviews?.[reviewIndex]
+
+ if (!reviewDetail) {
return (
--
@@ -555,7 +582,10 @@ export function renderScoreCell(
)
}
- if (!canDisplayScores(submission)) {
+ const reviewInfo = reviewDetail.reviewInfo
+ const reviewId = reviewInfo?.id ?? reviewDetail.reviewId
+
+ if (!reviewId) {
return (
--
diff --git a/src/apps/review/src/lib/components/common/reviewResult.spec.ts b/src/apps/review/src/lib/components/common/reviewResult.spec.ts
index 2926b111c..ff78e4b64 100644
--- a/src/apps/review/src/lib/components/common/reviewResult.spec.ts
+++ b/src/apps/review/src/lib/components/common/reviewResult.spec.ts
@@ -164,4 +164,26 @@ describe('resolveSubmissionReviewResult', () => {
expect(result)
.toBe('PASS')
})
+
+ it('prefers the summation aggregate score when requested', () => {
+ const submission = {
+ ...buildSubmission([
+ {
+ finalScore: 0,
+ resourceId: 'res-1',
+ status: 'COMPLETED',
+ },
+ ], 0),
+ aggregateScore: 88,
+ isPassingReview: true,
+ }
+
+ const result = resolveSubmissionReviewResult(submission, {
+ defaultMinimumPassingScore: DEFAULT_PASSING_SCORE,
+ preferAggregateScore: true,
+ })
+
+ expect(result)
+ .toBe('PASS')
+ })
})
diff --git a/src/apps/review/src/lib/components/common/reviewResult.ts b/src/apps/review/src/lib/components/common/reviewResult.ts
index b39cde595..5cc2755e3 100644
--- a/src/apps/review/src/lib/components/common/reviewResult.ts
+++ b/src/apps/review/src/lib/components/common/reviewResult.ts
@@ -301,14 +301,46 @@ const extractMinimumPassingScoreFromMetadata = (metadata: unknown): number | und
}
/* eslint-enable complexity, no-continue */
-const resolveReviewScore = (submission: SubmissionRow): number | undefined => {
+/**
+ * Resolves the review summation aggregate score from a submission row.
+ *
+ * @param submission - Submission row that may include a Review API summation aggregate score.
+ * @returns Finite aggregate score, or undefined when no score is available.
+ */
+const resolveAggregateScore = (submission: SubmissionRow): number | undefined => {
+ const aggregateScore = submission.aggregateScore
+ if (typeof aggregateScore === 'number' && Number.isFinite(aggregateScore)) {
+ return aggregateScore
+ }
+
+ return undefined
+}
+
+/**
+ * Resolves the score used for pass/fail decisions.
+ *
+ * @param submission - Submission row containing review and summation scores.
+ * @param preferAggregateScore - True when summation scores should take priority over scorecard scores.
+ * @returns Finite score for outcome evaluation, or undefined when no score is available.
+ */
+const resolveReviewScore = (
+ submission: SubmissionRow,
+ preferAggregateScore: boolean,
+): number | undefined => {
+ if (preferAggregateScore) {
+ const aggregateScore = resolveAggregateScore(submission)
+ if (aggregateScore !== undefined) {
+ return aggregateScore
+ }
+ }
+
const aggregatedAverage = submission.aggregated?.averageFinalScore
if (typeof aggregatedAverage === 'number' && Number.isFinite(aggregatedAverage)) {
return aggregatedAverage
}
- const aggregateScore = submission.aggregateScore
- if (typeof aggregateScore === 'number' && Number.isFinite(aggregateScore)) {
+ const aggregateScore = resolveAggregateScore(submission)
+ if (aggregateScore !== undefined) {
return aggregateScore
}
@@ -431,6 +463,7 @@ const resolveForcedOutcome = (
}
export interface ResolveSubmissionReviewResultOptions {
+ preferAggregateScore?: boolean
minimumPassingScoreByScorecardId?: Map
defaultMinimumPassingScore?: number
}
@@ -440,6 +473,7 @@ export function resolveSubmissionReviewResult(
options: ResolveSubmissionReviewResultOptions = {},
): ReviewOutcome | undefined {
const {
+ preferAggregateScore = false,
minimumPassingScoreByScorecardId,
defaultMinimumPassingScore,
}: ResolveSubmissionReviewResultOptions = options
@@ -461,7 +495,7 @@ export function resolveSubmissionReviewResult(
defaultMinimumPassingScore,
)
- const reviewScore = resolveReviewScore(submission)
+ const reviewScore = resolveReviewScore(submission, preferAggregateScore)
const scoreOutcome = resolveScoreOutcome(reviewScore, minimumPassingScore)
diff --git a/src/apps/review/src/lib/components/common/types.ts b/src/apps/review/src/lib/components/common/types.ts
index 1fd272157..7ec65271f 100644
--- a/src/apps/review/src/lib/components/common/types.ts
+++ b/src/apps/review/src/lib/components/common/types.ts
@@ -84,6 +84,8 @@ export interface ScoreVisibilityConfig {
canDisplayScores: (submission: SubmissionRow) => boolean
/** Whether the viewer can navigate to the detailed scorecard for the submission. */
canViewScorecard: boolean
+ /** True when the table should render the submission aggregate score instead of scorecard links. */
+ useAggregateScore?: boolean
/** Tooltip message shown when scorecard access is restricted. */
viewOwnScorecardTooltip?: string
/** True when the parent table is rendered within the appeals tab. */
diff --git a/src/apps/review/src/lib/utils/challenge.spec.ts b/src/apps/review/src/lib/utils/challenge.spec.ts
index 64ee4197d..b6c48380a 100644
--- a/src/apps/review/src/lib/utils/challenge.spec.ts
+++ b/src/apps/review/src/lib/utils/challenge.spec.ts
@@ -6,6 +6,7 @@ import {
findPhaseByTabLabel,
hasPendingApprovalReview,
isFirst2FinishChallenge,
+ isMarathonMatchChallenge,
type PhaseLike,
resolveFirst2FinishIterativeSubmissionIds,
shouldAllowWinnersTabForPastChallenge,
@@ -50,6 +51,29 @@ const createBackendPhase = (
})
describe('challenge phase tab helpers', () => {
+ it('recognizes Marathon Match challenges from type metadata', () => {
+ expect(isMarathonMatchChallenge({
+ type: {
+ abbreviation: 'MM',
+ id: 'type-1',
+ name: 'Marathon Match',
+ },
+ typeId: 'type-1',
+ }))
+ .toBe(true)
+ })
+
+ it('recognizes Marathon Match challenges from the canonical type id', () => {
+ expect(isMarathonMatchChallenge({
+ type: {
+ id: 'type-1',
+ name: 'Code',
+ },
+ typeId: '929bc408-9cf2-4b3e-ba71-adfbf693046c',
+ }))
+ .toBe(true)
+ })
+
it('preserves the incoming phase order', () => {
const phases: PhaseLike[] = [
createPhase('1', 'Registration', '2025-01-01T00:00:00Z'),
diff --git a/src/apps/review/src/lib/utils/challenge.ts b/src/apps/review/src/lib/utils/challenge.ts
index a4e45352f..df58c44b9 100644
--- a/src/apps/review/src/lib/utils/challenge.ts
+++ b/src/apps/review/src/lib/utils/challenge.ts
@@ -276,6 +276,10 @@ function normalizeChallengeKey(value?: string): string {
.replace(/[^a-z0-9]/g, '')
}
+const MARATHON_MATCH_TYPE_IDS = new Set([
+ '929bc408-9cf2-4b3e-ba71-adfbf693046c',
+])
+
/**
* Check whether a challenge should follow First2Finish-specific UI rules.
*
@@ -291,6 +295,27 @@ export function isFirst2FinishChallenge(
return typeName === 'first2finish' || trackName === 'first2finish'
}
+/**
+ * Check whether a challenge should follow Marathon Match-specific score display rules.
+ *
+ * @param challengeInfo - Challenge metadata containing type name, abbreviation, and type ID.
+ * @returns True when the type metadata identifies the challenge as Marathon Match.
+ */
+export function isMarathonMatchChallenge(
+ challengeInfo?: Pick,
+): boolean {
+ const typeName = normalizeChallengeKey(challengeInfo?.type?.name)
+ const typeAbbreviation = normalizeChallengeKey(challengeInfo?.type?.abbreviation)
+ const typeId = (challengeInfo?.typeId ?? '')
+ .trim()
+ .toLowerCase()
+
+ return typeName === 'marathonmatch'
+ || typeAbbreviation === 'mm'
+ || typeAbbreviation === 'marathonmatch'
+ || MARATHON_MATCH_TYPE_IDS.has(typeId)
+}
+
function normalizeEntityId(value: unknown): string | undefined {
if (value === undefined || value === null) {
return undefined
From 4a78cf1e7c94a6804d70b90c1d350ec5f015fd88 Mon Sep 17 00:00:00 2001
From: Harshit Chudasama
Date: Thu, 21 May 2026 12:41:34 +0530
Subject: [PATCH 19/56] Updated Reviews App UI to view notes of AI locked
submissions
---
.../AiReviewsTable/AiReviewsTable.module.scss | 31 ++++++
.../AiReviewsTable/AiReviewsTable.tsx | 97 ++++++++++++++++++-
.../CollapsibleAiReviewsRow.tsx | 74 ++++++++++++++
3 files changed, 201 insertions(+), 1 deletion(-)
diff --git a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss
index 8e48c1306..c375f2ea7 100644
--- a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss
+++ b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.module.scss
@@ -185,4 +185,35 @@
margin-bottom: $sp-1;
}
}
+}
+
+
+.notesBanner {
+ display: flex;
+ align-items: flex-start;
+ gap: 8px;
+ padding: 12px 16px;
+ background: #e8f4fd;
+ border: 1px solid #b3d9f7;
+ border-radius: 4px;
+ margin-bottom: 12px;
+ color: #1a6fa8;
+}
+
+.notesTitle {
+ font-weight: 600;
+ margin-bottom: 4px;
+}
+
+.notesMessage {
+ font-size: 13px;
+ line-height: 1.4;
+ margin-top: 4px;
+ white-space: pre-wrap;
+}
+
+.escalationNotes {
+ margin-top: 8px;
+ padding-top: 8px;
+ border-top: 1px solid rgba(255,255,255,0.3);
}
\ No newline at end of file
diff --git a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.tsx b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.tsx
index 087c45651..d8fc9f668 100644
--- a/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.tsx
+++ b/src/apps/review/src/lib/components/AiReviewsTable/AiReviewsTable.tsx
@@ -29,6 +29,7 @@ import {
AiReviewConfigWorkflow,
AiReviewDecision,
AiReviewDecisionBreakdownWorkflow,
+ AiReviewDecisionEscalation,
BackendSubmission,
ChallengeDetailContextModel,
} from '../../models'
@@ -111,6 +112,40 @@ function getDecisionBySubmission(
return decisions[submissionId]
}
+/**
+ * Builds a list of human-readable note strings from escalations and unlock reason.
+ * Used to display notes for Escalating, Approving/Rejecting, and Unlocking actions.
+ */
+function buildDecisionNotes(
+ escalations?: AiReviewDecisionEscalation[],
+ reason?: string | null,
+): string[] {
+ const parts: string[] = []
+
+ escalations?.forEach(esc => {
+ if (esc.escalationNotes) {
+ const by = esc.createdBy ? ` (by ${esc.createdBy})` : ''
+ parts.push(`Escalation Note${by}: ${esc.escalationNotes}`)
+ }
+
+ if (esc.approverNotes) {
+ const by = esc.updatedBy ? ` (by ${esc.updatedBy})` : ''
+ const prefix = esc.status === 'APPROVED'
+ ? 'Approval Note'
+ : esc.status === 'REJECTED'
+ ? 'Rejection Note'
+ : 'Approver Note'
+ parts.push(`${prefix}${by}: ${esc.approverNotes}`)
+ }
+ })
+
+ if (reason) {
+ parts.push(`Unlock Reason: ${reason}`)
+ }
+
+ return parts
+}
+
// eslint-disable-next-line complexity
const AiReviewsTable: FC = props => {
const { runs, isLoading }: AiWorkflowRunsResponse = useFetchAiWorkflowsRuns(props.submission.id)
@@ -280,7 +315,6 @@ const AiReviewsTable: FC = props => {
: `This submission is failed because ${hasSubmitterRole ? 'your' : 'the'}
Overall Score is below minimum threshold.`
- // Message text varies by role
const roleBasedText = hasSubmitterRole
? 'Improve your submission and resubmit.'
: ''
@@ -300,9 +334,63 @@ const AiReviewsTable: FC = props => {
return 'Submission Locked - This submission won\'t be reviewed during the Review Phase.'
}, [currentDecision?.submissionLocked, hasSubmitterRole])
+ /**
+ * Builds the list of notes from escalations (escalationNotes, approverNotes)
+ * and the unlock reason. These are shown to Copilot/Manager/Admin only
+ * (not to submitters) so they can see why a submission was escalated,
+ * approved/rejected, or unlocked.
+ */
+ const decisionNotes = useMemo((): string[] => {
+ if (!currentDecision || hasSubmitterRole) return []
+
+ return buildDecisionNotes(currentDecision.escalations, currentDecision.reason)
+ }, [currentDecision, hasSubmitterRole])
+
+ const hasDecisionNotes = decisionNotes.length > 0
+
+ /**
+ * Notes panel shown when:
+ * - submission is UNLOCKED (HUMAN_OVERRIDE, not locked) — shows unlock/escalation notes
+ * - submission is still LOCKED — appended inside the locked banner
+ */
+ const notesPanel = (
+ <>
+ {/* Unlocked submission: show notes banner */}
+ {currentDecision?.status === 'HUMAN_OVERRIDE'
+ && !currentDecision?.submissionLocked
+ && hasDecisionNotes && (
+
+
+
+
Submission Unlocked
+ {decisionNotes.map((note, i) => (
+ // eslint-disable-next-line react/no-array-index-key
+
{note}
+ ))}
+
+
+ )}
+
+ {/* Locked submission with escalation notes: append inside locked banner area */}
+ {currentDecision?.submissionLocked && hasDecisionNotes && (
+
+
+
+
Review Activity Notes
+ {decisionNotes.map((note, i) => (
+ // eslint-disable-next-line react/no-array-index-key
+
{note}
+ ))}
+
+
+ )}
+ >
+ )
+
if (isTablet) {
return (
+ {/* Locked banner */}
{currentDecision?.submissionLocked && lockMessage && (
@@ -313,6 +401,9 @@ const AiReviewsTable: FC
= props => {
)}
+ {/* Notes panel: escalation / approval / unlock notes for Copilot/Manager/Admin */}
+ {notesPanel}
+
{!reviewerRows.length && loading && (
Loading...
)}
@@ -414,6 +505,7 @@ const AiReviewsTable: FC
= props => {
return (
+ {/* Locked banner */}
{currentDecision?.submissionLocked && lockMessage && (
@@ -426,6 +518,9 @@ const AiReviewsTable: FC
= props => {
)}
+ {/* Notes panel: escalation / approval / unlock notes for Copilot/Manager/Admin */}
+ {notesPanel}
+
diff --git a/src/apps/review/src/lib/components/CollapsibleAiReviewsRow/CollapsibleAiReviewsRow.tsx b/src/apps/review/src/lib/components/CollapsibleAiReviewsRow/CollapsibleAiReviewsRow.tsx
index 084022e09..a15224bdb 100644
--- a/src/apps/review/src/lib/components/CollapsibleAiReviewsRow/CollapsibleAiReviewsRow.tsx
+++ b/src/apps/review/src/lib/components/CollapsibleAiReviewsRow/CollapsibleAiReviewsRow.tsx
@@ -7,6 +7,7 @@ import { IconOutline, Tooltip } from '~/libs/ui'
import { AiReviewsTable, AiWorkflowRunStatus } from '../AiReviewsTable'
import {
AiReviewDecision,
+ AiReviewDecisionEscalation,
AiReviewDecisionStatus,
BackendSubmission,
ChallengeDetailContextModel,
@@ -14,6 +15,7 @@ import {
import { ChallengeDetailContext } from '../../contexts'
import { AiScoreFormulaTooltip } from '../AiScoreFormulaTooltip'
import { formatScore } from '../AiScoreFormulaTooltip/AiScoreFormulaTooltip'
+import { useRolePermissions, UseRolePermissionsResult } from '../../hooks'
import styles from './CollapsibleAiReviewsRow.module.scss'
@@ -50,12 +52,50 @@ export function normalizeDecisionStatus(
return 'pending'
}
+/**
+ * Builds a multi-line tooltip string from escalation notes, approver notes,
+ * and the unlock reason. Returns undefined if there are no notes at all.
+ * Used to show Copilot/Manager/Admin why a submission was escalated,
+ * approved/rejected, or unlocked.
+ */
+function buildNotesTooltip(
+ escalations?: AiReviewDecisionEscalation[],
+ reason?: string | null,
+): string | undefined {
+ const parts: string[] = []
+
+ escalations?.forEach(esc => {
+ if (esc.escalationNotes) {
+ const by = esc.createdBy ? ` (by ${esc.createdBy})` : ''
+ parts.push(`Escalation Note${by}: ${esc.escalationNotes}`)
+ }
+
+ if (esc.approverNotes) {
+ const by = esc.updatedBy ? ` (by ${esc.updatedBy})` : ''
+ const prefix = esc.status === 'APPROVED'
+ ? 'Approval Note'
+ : esc.status === 'REJECTED'
+ ? 'Rejection Note'
+ : 'Approver Note'
+ parts.push(`${prefix}${by}: ${esc.approverNotes}`)
+ }
+ })
+
+ if (reason) {
+ parts.push(`Unlock Reason: ${reason}`)
+ }
+
+ return parts.length ? parts.join('\n') : undefined
+}
+
const CollapsibleAiReviewsRow: FC = props => {
const challengeDetailContext: ChallengeDetailContextModel = useContext(ChallengeDetailContext)
const aiReviewConfig: ChallengeDetailContextModel['aiReviewConfig'] = challengeDetailContext.aiReviewConfig
const aiReviewDecisionsBySubmissionId: ChallengeDetailContextModel['aiReviewDecisionsBySubmissionId']
= challengeDetailContext.aiReviewDecisionsBySubmissionId
+ const { hasSubmitterRole }: UseRolePermissionsResult = useRolePermissions()
+
const aiReviewersCount = useMemo(() => {
const reviewersCount = props.aiReviewers.length || aiReviewConfig?.workflows?.length || 0
return reviewersCount + 1
@@ -71,6 +111,17 @@ const CollapsibleAiReviewsRow: FC = props => {
[currentDecision?.status],
)
+ /**
+ * Builds the tooltip text for the notes icon shown next to the status label.
+ * Only shown to Copilot/Manager/Admin (not submitters).
+ * Covers: escalation notes, approval/rejection notes, and unlock reason.
+ */
+ const notesTooltip = useMemo((): string | undefined => {
+ if (hasSubmitterRole || !currentDecision) return undefined
+
+ return buildNotesTooltip(currentDecision.escalations, currentDecision.reason)
+ }, [currentDecision, hasSubmitterRole])
+
const [isOpen, setIsOpen] = useState(props.defaultOpen ?? false)
const [portalContainer, setPortalContainer] = useState(undefined)
const wrapperRef = useRef(null)
@@ -146,6 +197,29 @@ const CollapsibleAiReviewsRow: FC = props => {
{currentDecision && (
+ {/*
+ * Notes icon: shown only to Copilot/Manager/Admin (not submitters)
+ * when there are escalation notes, approval/rejection notes,
+ * or an unlock reason to display.
+ */}
+ {notesTooltip && (
+
+ {notesTooltip.split('\n')
+ .map((line, i) => (
+ // eslint-disable-next-line react/no-array-index-key
+ {line}
+ ))}
+
+ )}
+ triggerOn='hover'
+ >
+
+
+
+
+ )}
)}
From a6ccfb5c90702d30b5f0087951f768efff035994 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 13:30:52 +0530
Subject: [PATCH 20/56] Revise payment details modal
---
.../tabs/payments/PaymentsListView.spec.tsx | 17 +-
.../home/tabs/payments/PaymentsListView.tsx | 49 +-
.../lib/components/filter-bar/FilterBar.tsx | 3 +
.../filter-bar/FilterCheckboxMultiselect.tsx | 20 +-
.../payment-view/PaymentAgreementBanner.tsx | 78 +++
.../payment-view/PaymentDetailsSummaryRow.tsx | 103 +++
.../payment-view/PaymentDetailsTabs.tsx | 36 +
.../payment-view/PaymentView.module.scss | 241 ++++++-
.../payment-view/PaymentView.spec.tsx | 389 ++++++++---
.../components/payment-view/PaymentView.tsx | 633 +++++++-----------
.../payment-view/payment-view.utils.ts | 294 +++++++-
.../tabs/PaymentAuditHistoryTab.tsx | 51 ++
.../tabs/PaymentEngagementDetailsTab.tsx | 113 ++++
.../tabs/PaymentGeneralInfoTab.tsx | 62 ++
.../tabs/PaymentTaskDetailsTab.tsx | 68 ++
.../payment-view/tabs/PaymentWorkLogTab.tsx | 43 ++
.../src/lib/models/WinningDetail.ts | 17 +
.../src/lib/services/wallet.spec.ts | 64 +-
.../wallet-admin/src/lib/services/wallet.ts | 171 ++++-
.../home/tabs/winnings/PaymentsListView.tsx | 29 +-
.../lib/components/filter-bar/FilterBar.tsx | 4 +-
src/libs/shared/lib/utils/index.ts | 1 +
.../lib/utils/payment-type-filter.utils.ts | 20 +
.../form-input/input-select/InputSelect.tsx | 24 +-
24 files changed, 1953 insertions(+), 577 deletions(-)
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/PaymentAgreementBanner.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
create mode 100644 src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx
create mode 100644 src/libs/shared/lib/utils/payment-type-filter.utils.ts
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
index dc00da034..aea44b5f1 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
+++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.spec.tsx
@@ -8,6 +8,8 @@ import {
waitFor,
} from '@testing-library/react'
+import { toPaymentTypeFilterValues } from '~/libs/shared/lib/utils/payment-type-filter.utils'
+
import { editPayment, getMemberHandle, getPayments } from '../../../lib/services/wallet'
import PaymentsListView from './PaymentsListView'
@@ -217,6 +219,9 @@ const TOPCODER_TAB_CATEGORIES = [
'ENGAGEMENT_PAYMENT',
]
+const TOPCODER_TAB_TYPE_FILTER_VALUES = toPaymentTypeFilterValues(TOPCODER_TAB_CATEGORIES)
+const APPROVER_TYPE_FILTER_VALUES = ['Task', 'Engagement']
+
function getApproverDefaultDateRangeForTest(): { dateFrom: string, dateTo: string } {
const dateTo = new Date()
const dateFrom = new Date()
@@ -283,7 +288,7 @@ describe('PaymentsListView', () => {
.toHaveBeenCalled()
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
+ category: APPROVER_TYPE_FILTER_VALUES,
dateFrom: approverDates.dateFrom,
dateTo: approverDates.dateTo,
status: ['ON_HOLD_ADMIN'],
@@ -340,7 +345,7 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
+ category: APPROVER_TYPE_FILTER_VALUES,
dateFrom: approverDates.dateFrom,
dateTo: approverDates.dateTo,
status: ['ON_HOLD_ADMIN'],
@@ -362,7 +367,7 @@ describe('PaymentsListView', () => {
})
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- category: TOPCODER_TAB_CATEGORIES,
+ category: TOPCODER_TAB_TYPE_FILTER_VALUES,
status: ALL_STATUS_FILTER_VALUES,
}))
})
@@ -396,7 +401,7 @@ describe('PaymentsListView', () => {
expect(mockFilterBar.mock.calls.at(-1)?.[0].selectedValueOverrides)
.toEqual(expect.objectContaining({
- category: ['TASK_PAYMENT', 'ENGAGEMENT_PAYMENT'],
+ category: APPROVER_TYPE_FILTER_VALUES,
dateFrom: approverDates.dateFrom,
dateTo: approverDates.dateTo,
status: ['PAID'],
@@ -511,6 +516,10 @@ describe('PaymentsListView', () => {
expect(typeFilter.options.some((option: any) => option.value === 'TOPGEAR_PAYMENT'))
.toBe(false)
+ expect(typeFilter.options.some((option: any) => option.value === 'Task'))
+ .toBe(true)
+ expect(typeFilter.options.find((option: any) => option.value === 'Task')?.label)
+ .toBe('Task Payment')
expect(screen.getByRole('tab', { name: 'Topgear' }))
.toBeTruthy()
diff --git a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
index 51dfb9b8c..9bd52dbb8 100644
--- a/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
+++ b/src/apps/wallet-admin/src/home/tabs/payments/PaymentsListView.tsx
@@ -7,6 +7,10 @@ import React, { FC, useCallback, useEffect } from 'react'
import { Collapsible, ConfirmModal, InputText, LoadingCircles } from '~/libs/ui'
import { UserProfile } from '~/libs/core'
import { downloadBlob } from '~/libs/shared'
+import {
+ toPaymentTypeCategories,
+ toPaymentTypeFilterValues,
+} from '~/libs/shared/lib/utils/payment-type-filter.utils'
import { editPayment, exportSearchResults, getMemberHandle, getPayments } from '../../../lib/services/wallet'
import { Winning, WinningDetail, WinningsType } from '../../../lib/models/WinningDetail'
@@ -74,11 +78,16 @@ const STATUS_FILTER_OPTIONS: { label: string, value: string }[] = [
const ALL_STATUS_FILTER_VALUES: ReadonlyArray = STATUS_FILTER_OPTIONS.map(option => option.value)
const TOPCODER_TYPE_FILTER_OPTIONS: { label: string, value: string }[] = [
- { label: 'Task Payment', value: 'TASK_PAYMENT' },
- { label: 'Contest Payment', value: 'CONTEST_PAYMENT' },
- { label: 'Copilot Payment', value: 'COPILOT_PAYMENT' },
- { label: 'Review Board Payment', value: 'REVIEW_BOARD_PAYMENT' },
- { label: 'Engagement Payment', value: 'ENGAGEMENT_PAYMENT' },
+ { label: 'Task Payment', value: 'Task' },
+ { label: 'Contest Payment', value: 'Contest' },
+ { label: 'Copilot Payment', value: 'Copilot' },
+ { label: 'Review Board Payment', value: 'Review Board' },
+ { label: 'Engagement Payment', value: 'Engagement' },
+]
+
+const APPROVER_TYPE_FILTER_OPTIONS: { label: string, value: string }[] = [
+ { label: 'Task Payments', value: 'Task' },
+ { label: 'Engagement Payments', value: 'Engagement' },
]
function normalizeFilterRecord(filters: Record): Record {
@@ -344,7 +353,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
const dateFrom = submittedFilters.dateFrom?.[0] ?? approverDefaultDates.dateFrom
const dateTo = submittedFilters.dateTo?.[0] ?? approverDefaultDates.dateTo
- const pickedApproverTypes = (submittedFilters.category ?? [])
+ const pickedApproverTypes = toPaymentTypeCategories(submittedFilters.category ?? [])
.filter(c => approverAllowedCategories.includes(c))
const categories = pickedApproverTypes.length > 0
? pickedApproverTypes
@@ -392,7 +401,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
}
}
- const pickedTopcoderTypes = (submittedFilters.category ?? [])
+ const pickedTopcoderTypes = toPaymentTypeCategories(submittedFilters.category ?? [])
.filter(c => TOPCODER_PAYMENT_CATEGORIES.includes(c))
const categories = pickedTopcoderTypes.length > 0
? pickedTopcoderTypes
@@ -453,8 +462,8 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
? { status: draftFilters.status }
: { status: [restrictedDefaultStatus ?? 'ON_HOLD_ADMIN'] }),
...(draftFilters.category !== undefined
- ? { category: draftFilters.category }
- : { category: [...approverAllowedCategories] }),
+ ? { category: toPaymentTypeFilterValues(draftFilters.category) }
+ : { category: toPaymentTypeFilterValues([...approverAllowedCategories]) }),
dateFrom: draftFilters.dateFrom !== undefined
? draftFilters.dateFrom[0]
: approverDefaultDates.dateFrom,
@@ -471,7 +480,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
}
if (draftFilters.category !== undefined) {
- overrides.category = draftFilters.category
+ overrides.category = toPaymentTypeFilterValues(draftFilters.category)
}
if (draftFilters.dateFrom?.[0]) {
@@ -503,8 +512,8 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
const approverDefaults: Record = {
category: draftFilters.category !== undefined
- ? draftFilters.category
- : [...approverAllowedCategories],
+ ? toPaymentTypeFilterValues(draftFilters.category)
+ : toPaymentTypeFilterValues([...approverAllowedCategories]),
dateFrom: draftFilters.dateFrom !== undefined
? draftFilters.dateFrom[0]
: approverDefaultDates.dateFrom,
@@ -520,8 +529,8 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
const topcoderDefaults: Record = {
category: draftFilters.category !== undefined
- ? draftFilters.category
- : [...TOPCODER_PAYMENT_CATEGORIES],
+ ? toPaymentTypeFilterValues(draftFilters.category)
+ : toPaymentTypeFilterValues([...TOPCODER_PAYMENT_CATEGORIES]),
status: draftFilters.status !== undefined
? draftFilters.status
: [...ALL_STATUS_FILTER_VALUES],
@@ -862,12 +871,10 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
handleFilter,
statusFilter,
{
+ displayValueInTrigger: true,
key: 'category',
label: 'Payment Type',
- options: [
- { label: 'Task Payments', value: taskPaymentCategory },
- { label: 'Engagement Payments', value: engagementPaymentCategory },
- ],
+ options: APPROVER_TYPE_FILTER_OPTIONS,
type: 'multi_dropdown',
},
{
@@ -891,6 +898,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
if (paymentListingTab === 'topcoder') {
filtersOut.push({
+ displayValueInTrigger: true,
key: 'category',
label: 'Type',
options: TOPCODER_TYPE_FILTER_OPTIONS,
@@ -1090,10 +1098,11 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
content: (
setConfirmFlow(undefined)}
/>
),
showButtons: false,
- title: 'Payment Details',
+ title: 'PAYMENT DETAILS',
})
}}
/>
@@ -1150,7 +1159,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
)}
{confirmFlow && (
= (props: FilterBarProps) => {
name={filter.key}
label={filter.label}
dirty
+ displayValueInTrigger={filter.displayValueInTrigger}
placeholder={filter.label}
/>
)
@@ -152,6 +154,7 @@ const FilterBar: React.FC = (props: FilterBarProps) => {
name={filter.key}
label={filter.label}
placeholder={filter.label}
+ displayValueInTrigger={filter.displayValueInTrigger}
options={baseOptions}
values={valuesFromParent}
onChange={(values: string[]) => {
diff --git a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx
index 0d92b04df..0a2892b17 100644
--- a/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx
+++ b/src/apps/wallet-admin/src/lib/components/filter-bar/FilterCheckboxMultiselect.tsx
@@ -27,6 +27,7 @@ export interface FilterCheckboxMultiselectOption {
interface FilterCheckboxMultiselectProps {
readonly className?: string
+ readonly displayValueInTrigger?: boolean
readonly label: string
readonly name: string
readonly onChange: (values: string[]) => void
@@ -55,6 +56,7 @@ const modifiers = [sameWidthModifier]
function getDisplayText(
options: ReadonlyArray,
values: string[],
+ displayValueInTrigger: boolean = false,
): string {
if (options.length === 0) {
return ''
@@ -69,7 +71,17 @@ function getDisplayText(
}
if (values.length === 1) {
- return options.find(option => option.value === values[0])?.label ?? ''
+ const option = options.find(item => item.value === values[0])
+
+ if (!option) {
+ return ''
+ }
+
+ if (displayValueInTrigger) {
+ return option.value ?? option.label ?? ''
+ }
+
+ return option.label ?? option.value ?? ''
}
return `${values.length} selected`
@@ -96,7 +108,11 @@ const FilterCheckboxMultiselect: FC = (props: Fi
[props.options],
)
const allSelected = props.options.length > 0 && props.values.length === props.options.length
- const displayText = getDisplayText(props.options, props.values)
+ const displayText = getDisplayText(
+ props.options,
+ props.values,
+ props.displayValueInTrigger,
+ )
const triggerLabel = displayText || (props.placeholder ?? props.label)
const toggleMenu = (toggle?: boolean): void => {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentAgreementBanner.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentAgreementBanner.tsx
new file mode 100644
index 000000000..48b81ed68
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentAgreementBanner.tsx
@@ -0,0 +1,78 @@
+import { FC } from 'react'
+import classNames from 'classnames'
+
+import { IconOutline } from '~/libs/ui'
+
+import { PaymentAgreementSummary } from '../../models/WinningDetail'
+
+import {
+ formatAgreementBreakdown,
+ formatCurrencyAmount,
+} from './payment-view.utils'
+import styles from './PaymentView.module.scss'
+
+interface PaymentAgreementBannerProps {
+ readonly summary: PaymentAgreementSummary
+}
+
+const PaymentAgreementBanner: FC = (
+ props: PaymentAgreementBannerProps,
+) => {
+ const breakdown = formatAgreementBreakdown(props.summary)
+ const differenceLabel = props.summary.status === 'under'
+ ? `$${props.summary.differenceAmount.toLocaleString()} less`
+ : `$${props.summary.differenceAmount.toLocaleString()} more`
+
+ return (
+
+
+ {props.summary.status === 'match' && (
+
+ )}
+ {props.summary.status === 'under' && (
+
+ )}
+ {props.summary.status === 'over' && (
+
+ )}
+
+
+
+ {props.summary.status === 'match'
+ ? 'PAYMENT MATCHES AGREEMENT'
+ : 'PAYMENT DOESN\'T MATCH AGREEMENT'}
+
+
+ Expected:
+ {' '}
+ {formatCurrencyAmount(props.summary.expectedAmount)}
+ {' '}
+ (
+ {breakdown}
+ )
+
+
+ Actual:
+ {' '}
+ {formatCurrencyAmount(props.summary.actualAmount)}
+ {props.summary.status !== 'match' && (
+ <>
+ {' '}
+ (
+ {differenceLabel}
+ )
+ >
+ )}
+
+
+
+ )
+}
+
+export default PaymentAgreementBanner
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx
new file mode 100644
index 000000000..4a4d3358f
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx
@@ -0,0 +1,103 @@
+import classNames from 'classnames'
+import { FC } from 'react'
+
+import { formatCurrencyAmount, formatOptionalText } from './payment-view.utils'
+
+import styles from './PaymentView.module.scss'
+
+interface PaymentDetailsSummaryRowProps {
+ readonly approverLabel?: string
+ readonly budgetApproverHandle?: string
+ readonly columns?: 2 | 4 | 5
+ readonly creatorLabel?: string
+ readonly handle: string
+ readonly paymentAmount: number
+ readonly paymentApproverHandle?: string
+ readonly paymentCreatorHandle?: string
+ readonly secondaryApproverLabel?: string
+ readonly isPoints?: boolean
+}
+
+const DEFAULT_CREATOR_LABEL = 'Payment Creator'
+const DEFAULT_APPROVER_LABEL = 'Payment Approver'
+
+const PaymentDetailsSummaryRow: FC = (
+ props: PaymentDetailsSummaryRowProps,
+) => {
+ const columns = props.columns ?? 4
+ const usesCompactSummary = columns === 2
+ const usesBudgetApproverColumn = columns === 5
+ const usesBudgetApproverLabel = props.approverLabel === 'Budget Approver'
+
+ if (usesCompactSummary) {
+ return (
+
+
+ Handle
+ {props.handle}
+
+
+ {props.isPoints ? 'Points' : 'Payment'}
+
+ {props.isPoints
+ ? String(props.paymentAmount)
+ : formatCurrencyAmount(props.paymentAmount)}
+
+
+
+ )
+ }
+
+ return (
+
+
+ Handle
+ {props.handle}
+
+
+ {props.isPoints ? 'Points' : 'Payment'}
+
+ {props.isPoints
+ ? String(props.paymentAmount)
+ : formatCurrencyAmount(props.paymentAmount)}
+
+
+
+
+ {props.creatorLabel ?? DEFAULT_CREATOR_LABEL}
+
+
+ {formatOptionalText(props.paymentCreatorHandle)}
+
+
+
+
+ {props.approverLabel ?? DEFAULT_APPROVER_LABEL}
+
+
+ {formatOptionalText(
+ usesBudgetApproverColumn || usesBudgetApproverLabel
+ ? props.budgetApproverHandle
+ : props.paymentApproverHandle,
+ )}
+
+
+ {usesBudgetApproverColumn && (
+
+
+ {props.secondaryApproverLabel ?? DEFAULT_APPROVER_LABEL}
+
+
+ {formatOptionalText(props.paymentApproverHandle)}
+
+
+ )}
+
+ )
+}
+
+export default PaymentDetailsSummaryRow
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx
new file mode 100644
index 000000000..375746257
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx
@@ -0,0 +1,36 @@
+import { FC } from 'react'
+import classNames from 'classnames'
+
+import styles from './PaymentView.module.scss'
+
+export interface PaymentDetailsTabOption {
+ id: string
+ label: string
+}
+
+interface PaymentDetailsTabsProps {
+ readonly activeTabId: string
+ readonly onTabChange: (tabId: string) => void
+ readonly tabs: ReadonlyArray
+}
+
+const PaymentDetailsTabs: FC = (props: PaymentDetailsTabsProps) => (
+
+ {props.tabs.map(tab => (
+ props.onTabChange(tab.id)}
+ >
+ {tab.label}
+
+ ))}
+
+)
+
+export default PaymentDetailsTabs
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.module.scss b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.module.scss
index 59db5e6f0..33734927c 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.module.scss
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.module.scss
@@ -1,65 +1,250 @@
+@import '@libs/ui/styles/includes';
+
.formContainer {
display: flex;
flex-direction: column;
+ gap: 20px;
}
-.infoGroup {
+.summaryRow {
display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: 20px;
- margin-bottom: 20px;
+ grid-template-columns: repeat(4, minmax(0, 1fr));
+ gap: 16px;
+}
+
+.summaryRowTwo {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.summaryRowFive {
+ gap: 12px;
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+
+ .summaryLabel {
+ font-size: 11px;
+ letter-spacing: 0.01em;
+ line-height: 1.2;
+ white-space: nowrap;
+ }
+
+ .summaryValue {
+ font-size: 15px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
}
-.infoItem {
+.summaryItem {
display: flex;
flex-direction: column;
- gap: 2px;
+ gap: 4px;
+ min-width: 0;
}
-.label {
- font-weight: bold;
- margin-bottom: 5px;
+.summaryLabel {
+ color: $black-60;
+ font-size: 12px;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
+.summaryValue {
+ color: $black-100;
+ font-size: 16px;
+ font-weight: 600;
+}
+
+.agreementBanner {
+ align-items: center;
+ border-radius: 4px;
+ display: grid;
+ gap: 12px;
+ grid-template-columns: auto 1fr;
+ padding: 12px 16px;
+}
+
+.agreementBannerMatch {
+ background: #defbe6;
+ color: #0e6027;
+}
+
+.agreementBannerUnder {
+ background: #fcf4d6;
+ color: #684e00;
+}
+
+.agreementBannerOver {
+ background: #fff0f7;
+ color: #8c384c;
+}
+
+.agreementBannerIconColumn {
+ align-self: center;
+ display: flex;
+ flex-shrink: 0;
+ justify-content: center;
+}
+
+.agreementBannerIcon {
+ color: currentColor;
+ flex-shrink: 0;
+ width: 26px;
+
+ svg {
+ @include icon-size(18);
+ }
}
-.inputGroup {
+.agreementBannerContent {
display: flex;
flex-direction: column;
- gap: 20px;
+ gap: 4px;
+ min-width: 0;
}
-.section {
- border-top: 1px solid #e6e6e6;
- padding-top: 20px;
+.agreementBannerTitle {
+ font-size: 14px;
+ font-weight: 700;
+ letter-spacing: 0.02em;
}
-.sectionTitle {
- font-size: 18px;
- margin: 0 0 16px;
+.agreementBannerLine {
+ font-size: 14px;
+ margin: 0;
+
+ strong {
+ font-weight: 700;
+ }
}
-.sectionGrid {
- display: grid;
+.tabList {
+ border-bottom: 1px solid $black-20;
+ display: flex;
+ gap: 24px;
+}
+
+.tabButton {
+ background: transparent;
+ border: none;
+ color: $black-60;
+ cursor: pointer;
+ font-size: 14px;
+ font-weight: 600;
+ margin-bottom: -1px;
+ padding: 8px 0;
+}
+
+.tabButtonActive {
+ border-bottom: 2px solid $turq-160;
+ color: $black-100;
+}
+
+.tabPanel {
+ min-height: 180px;
+}
+
+.tabPanelContent {
+ display: flex;
+ flex-direction: column;
gap: 20px;
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
-.helperText {
- color: #5b5b5b;
+.detailsGrid {
+ display: grid;
+ gap: 20px 32px;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.infoItem,
+.infoItemFull {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.infoItemFull {
+ grid-column: 1 / -1;
+}
+
+.label {
+ color: $black-60;
+ font-size: 12px;
+ font-weight: 600;
+}
+
+.value,
+.linkValue {
+ color: $black-100;
+ font-size: 14px;
margin: 0;
}
+.linkValue {
+ color: $link-blue-dark;
+ text-decoration: none;
+ word-break: break-word;
+
+ &:hover {
+ text-decoration: underline;
+ }
+}
+
.remarksValue {
+ color: $black-100;
+ font-size: 14px;
margin: 0;
overflow-wrap: anywhere;
white-space: pre-wrap;
}
-.container {
- margin: 8px 0;
+.helperText {
+ color: $black-60;
+ margin: 0;
+}
+
+.auditTableWrap {
+ overflow-x: auto;
+}
+
+.auditTable {
+ border-collapse: collapse;
+ width: 100%;
+
+ th {
+ border-bottom: 1px solid $black-20;
+ color: $black-60;
+ font-size: 12px;
+ font-weight: 700;
+ padding: 10px 12px;
+ text-align: left;
+ text-transform: uppercase;
+ }
+
+ td {
+ border-bottom: 1px solid $black-10;
+ color: $black-100;
+ font-size: 14px;
+ padding: 12px;
+ vertical-align: top;
+ }
+
+ tbody tr:nth-child(even) {
+ background: $black-5;
+ }
+}
+
+.footer {
+ display: flex;
+ justify-content: center;
+ padding-top: 8px;
+}
- .content {
- display: flex;
- flex-direction: column;
- margin-bottom: 0;
+@media (max-width: 768px) {
+ .summaryRow,
+ .summaryRowTwo,
+ .summaryRowFive,
+ .detailsGrid {
+ grid-template-columns: 1fr;
}
}
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
index 351ba2813..ab9606e6e 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
@@ -6,15 +6,20 @@ import {
waitFor,
within,
} from '@testing-library/react'
+import userEvent from '@testing-library/user-event'
import { Winning } from '../../models/WinningDetail'
import {
+ fetchAuditLogs,
+ fetchChallengePaymentSummary,
fetchWinningPaymentDetails,
+ getMemberHandle,
} from '../../services/wallet'
import { PaymentView } from '.'
jest.mock('../../services/wallet', () => ({
fetchAuditLogs: jest.fn(),
+ fetchChallengePaymentSummary: jest.fn(),
fetchPayoutAuditLogs: jest.fn(),
fetchWinningPaymentDetails: jest.fn(),
getMemberHandle: jest.fn(),
@@ -29,15 +34,13 @@ jest.mock('~/libs/ui', () => ({
{props.label}
),
- Collapsible: (props: {
- children: React.ReactNode
- header: React.ReactNode
- }) => (
-
- {props.header}
- {props.children}
-
- ),
+ IconOutline: {
+ CheckIcon: () => check-icon ,
+ },
+ IconSolid: {
+ ExclamationIcon: () => exclamation-icon ,
+ XCircleIcon: () => x-icon ,
+ },
}), { virtual: true })
jest.mock('~/config/environments/default.env', () => ({
@@ -55,6 +58,12 @@ jest.mock('~/config', () => ({
const mockedFetchWinningPaymentDetails = (
fetchWinningPaymentDetails as jest.MockedFunction
)
+const mockedFetchChallengePaymentSummary = (
+ fetchChallengePaymentSummary as jest.MockedFunction
+)
+const mockedFetchAuditLogs = fetchAuditLogs as jest.MockedFunction
+const mockedGetMemberHandle = getMemberHandle as jest.MockedFunction
+
const expectedWorkManagerLink
= 'https://challenges.example.com/projects/project-789/engagements/engagement-456/assignments'
+ '?assignmentId=assignment-123'
@@ -63,27 +72,27 @@ const expectedProjectLink
describe('PaymentView', () => {
const payment: Winning = {
- createDate: 'Mar 21, 2026',
+ createDate: '15/5/2026',
currency: 'USD',
- datePaid: '-',
+ datePaid: '30/5/2026',
description: 'Wipro - US Foods - Week Ending: Mar 21, 2026',
details: [{
currency: 'USD',
datePaid: '',
- grossAmount: '463.75',
+ grossAmount: '2000',
id: 'payment-1',
installmentNumber: 1,
status: 'OWED',
- totalAmount: '463.75',
+ totalAmount: '2000',
}],
externalId: 'assignment-123',
- grossAmount: '$463.75',
- grossAmountNumber: 463.75,
- handle: 'vikashchaudhary26',
+ grossAmount: '$2,000.00',
+ grossAmountNumber: 2000,
+ handle: 'disnadiji',
id: 'winning-1',
- releaseDate: 'Apr 11, 2026',
- releaseDateObj: new Date('2026-04-11T00:00:00.000Z'),
- status: 'Owed',
+ releaseDate: '15/5/2026',
+ releaseDateObj: new Date('2026-05-15T00:00:00.000Z'),
+ status: 'On Hold (Admin)',
type: 'engagement payment',
}
@@ -92,60 +101,49 @@ describe('PaymentView', () => {
engagementDetails: {
assignmentId: 'assignment-123',
billingStartDate: '2026-02-16T00:00:00.000Z',
- durationMonths: 3,
+ durationMonths: 12,
engagementId: 'engagement-456',
- engagementTitle: 'Snowflake Developer - Vikash',
- otherRemarks: 'Complete onboarding within the first week. Docs: https://google.com',
+ paymentCycle: 'weekly',
projectId: 'project-789',
- projectName: 'Wipro - US Foods',
- ratePerHour: '10.60',
- standardHoursPerWeek: 43.75,
+ projectName: 'Test Project Engagement BA',
+ paymentApproverHandle: 'TonyJ',
+ ratePerHour: '50',
+ standardHoursPerDay: 8,
},
- paymentCreatorHandle: 'copilot-manager',
+ paymentCreatorHandle: 'wendell',
workLog: {
- hoursWorked: 43.75,
- remarks: 'Completed sprint support and bug triage. Reference: https://example.com/worklog',
+ hoursWorked: 40,
+ remarks: 'Member worked 40 hours this week.',
},
})
+ mockedFetchAuditLogs.mockResolvedValue([])
+ mockedFetchChallengePaymentSummary.mockResolvedValue({})
+ mockedGetMemberHandle.mockResolvedValue(new Map())
})
afterEach(() => {
jest.clearAllMocks()
})
- it('renders engagement details and a work-manager assignee link for engagement payments', async () => {
- render( )
+ it('renders engagement payment details with tabs and agreement match banner', async () => {
+ render( )
await waitFor(() => {
expect(mockedFetchWinningPaymentDetails)
.toHaveBeenCalledWith(payment)
})
- expect(await screen.findByRole('heading', { name: 'Engagement Details' }))
+ expect(await screen.findByText('PAYMENT MATCHES AGREEMENT'))
.toBeTruthy()
- await waitFor(() => {
- expect(screen.getAllByText('43.75'))
- .toHaveLength(2)
- })
- expect(await screen.findByText(/Completed sprint support and bug triage\./))
+ expect(screen.getByText('disnadiji'))
.toBeTruthy()
-
- const workLogHeading = await screen.findByRole('heading', {
- name: 'Work Log / Manager Inputs',
- })
- const workLogSection = workLogHeading.parentElement
-
- if (!workLogSection) {
- throw new Error('Expected work log section to be rendered.')
- }
-
- expect(screen.getAllByText('Payment Creator'))
- .toHaveLength(1)
- expect(within(workLogSection)
- .getByText('Payment Creator'))
+ expect(screen.getByText('wendell'))
+ .toBeTruthy()
+ expect(screen.getByText('Payment Approver'))
+ .toBeTruthy()
+ expect(screen.getByText('TonyJ'))
.toBeTruthy()
- expect(within(workLogSection)
- .getByText('copilot-manager'))
+ expect(screen.getByRole('tab', { name: 'Engagement Details' }))
.toBeTruthy()
const descriptionLink = await screen.findByRole('link', {
@@ -155,48 +153,49 @@ describe('PaymentView', () => {
expect(descriptionLink.getAttribute('href'))
.toBe(expectedWorkManagerLink)
+ await userEvent.click(screen.getByRole('tab', { name: 'Engagement Details' }))
+
const projectLink = await screen.findByRole('link', {
- name: 'Wipro - US Foods',
+ name: 'Test Project Engagement BA',
})
expect(projectLink.getAttribute('href'))
.toBe(expectedProjectLink)
- expect(projectLink.getAttribute('target'))
- .toBe('_blank')
-
- const remarksLink = await screen.findByRole('link', {
- name: 'https://google.com',
- })
-
- expect(remarksLink.getAttribute('href'))
- .toBe('https://google.com')
- expect(remarksLink.getAttribute('target'))
- .toBe('_blank')
+ expect(screen.getByText('Weekly'))
+ .toBeTruthy()
+ expect(screen.getByText('8'))
+ .toBeTruthy()
- const workLogRemarksLink = await screen.findByRole('link', {
- name: 'https://example.com/worklog',
- })
+ await userEvent.click(screen.getByRole('tab', { name: 'Work Log' }))
- expect(workLogRemarksLink.getAttribute('href'))
- .toBe('https://example.com/worklog')
- expect(workLogRemarksLink.getAttribute('target'))
- .toBe('_blank')
+ expect(await screen.findByText('Member worked 40 hours this week.'))
+ .toBeTruthy()
+ expect(screen.getAllByText('Payment Creator'))
+ .toHaveLength(1)
+ expect(screen.queryByText('Payment Approver'))
+ .not.toBeNull()
})
- it('renders task details section for task payments', async () => {
+ it('renders task payment details with five-column summary and task details tab', async () => {
const taskPayment: Winning = {
...payment,
- description: 'Build a cool widget for the dashboard',
+ description: 'Build a responsive front-end interface for General Electric.',
externalId: 'challenge-uuid-1',
type: 'task payment',
}
+ mockedFetchChallengePaymentSummary.mockResolvedValue({
+ budgetApproverHandle: 'kartik',
+ })
+
mockedFetchWinningPaymentDetails.mockResolvedValue({
+ paymentCreatorHandle: 'chAVGA5xBDH6Gxz1JMJ67Np7CBSAtoaL@clients',
taskDetails: {
- paymentApproverHandle: 'approver-handle',
- paymentCreatorHandle: 'task-creator',
+ paymentApproverHandle: 'TonyJ',
+ paymentCreatorHandle: 'wendell',
projectId: '42',
- projectName: 'My Awesome Project',
+ projectName: 'General Electric Front End Task',
+ taskDescription: 'Deliver clean, production-ready HTML, CSS, and JavaScript.',
},
})
@@ -207,20 +206,240 @@ describe('PaymentView', () => {
.toHaveBeenCalledWith(taskPayment)
})
- expect(await screen.findByRole('heading', { name: 'Task Details' }))
- .toBeTruthy()
+ await waitFor(() => {
+ expect(mockedFetchChallengePaymentSummary)
+ .toHaveBeenCalledWith('challenge-uuid-1')
+ })
- expect(await screen.findByRole('heading', { name: 'Task Details' }))
+ expect(screen.getByText('Task Creator'))
+ .toBeTruthy()
+ expect(screen.getByText('Budget Approver'))
.toBeTruthy()
- expect(await screen.findByText('task-creator'))
+ expect(screen.getByText('Payment Approver'))
.toBeTruthy()
- expect(await screen.findByText('approver-handle'))
+ expect(screen.queryByText('Payment Creator'))
+ .toBeNull()
+ expect(await screen.findByText('wendell'))
.toBeTruthy()
+ expect(screen.queryByText('chAVGA5xBDH6Gxz1JMJ67Np7CBSAtoaL@clients'))
+ .toBeNull()
+ expect(await screen.findByText('kartik'))
+ .toBeTruthy()
+ expect(await screen.findByText('TonyJ'))
+ .toBeTruthy()
+ expect(screen.queryByText('PAYMENT MATCHES AGREEMENT'))
+ .toBeNull()
+ expect(await screen.findByRole('tab', { name: 'Task Details' }))
+ .toBeTruthy()
+
+ await waitFor(() => {
+ expect(screen.queryByText('Loading task details...'))
+ .toBeNull()
+ })
+
+ await userEvent.click(screen.getByRole('tab', { name: 'Task Details' }))
+
+ const taskDetailsPanel = screen.getByRole('tabpanel')
- const projectLink = await screen.findByRole('link', { name: 'My Awesome Project' })
+ expect(within(taskDetailsPanel).getByText('Task Creator'))
+ .toBeTruthy()
+ expect(within(taskDetailsPanel).getByText('wendell'))
+ .toBeTruthy()
+ expect(within(taskDetailsPanel).getByText('Project Name'))
+ .toBeTruthy()
+ expect(within(taskDetailsPanel).getByText('Task Description'))
+ .toBeTruthy()
+ expect(within(taskDetailsPanel).getByText(
+ 'Deliver clean, production-ready HTML, CSS, and JavaScript.',
+ ))
+ .toBeTruthy()
+ const projectLink = within(taskDetailsPanel).getByRole('link', {
+ name: 'General Electric Front End Task',
+ })
expect(projectLink.getAttribute('href'))
- .toBe('https://challenges.example.com/projects/42/challenges/challenge-uuid-1/view')
- expect(projectLink.getAttribute('target'))
- .toBe('_blank')
+ .toBe('https://challenges.example.com/projects/42')
+ })
+
+ it('renders contest payment details with challenge creator and budget approver labels', async () => {
+ const contestPayment: Winning = {
+ ...payment,
+ description: 'Test Contest Task BA - Week Ending: May 02, 2026',
+ externalId: 'contest-challenge-1',
+ type: 'contest payment',
+ }
+
+ mockedFetchChallengePaymentSummary.mockResolvedValue({
+ budgetApproverHandle: 'kartik',
+ creatorHandle: 'wendell',
+ })
+
+ render( )
+
+ await waitFor(() => {
+ expect(mockedFetchChallengePaymentSummary)
+ .toHaveBeenCalledWith('contest-challenge-1')
+ })
+
+ expect(mockedFetchWinningPaymentDetails)
+ .not.toHaveBeenCalled()
+
+ expect(screen.getByText('Challenge Creator'))
+ .toBeTruthy()
+ expect(screen.getByText('Budget Approver'))
+ .toBeTruthy()
+ expect(screen.queryByText('Payment Creator'))
+ .toBeNull()
+ expect(screen.queryByText('Payment Approver'))
+ .toBeNull()
+ expect(await screen.findByText('wendell'))
+ .toBeTruthy()
+ expect(await screen.findByText('kartik'))
+ .toBeTruthy()
+ expect(screen.queryByText('PAYMENT MATCHES AGREEMENT'))
+ .toBeNull()
+ expect(screen.queryByRole('tab', { name: 'Engagement Details' }))
+ .toBeNull()
+
+ const descriptionLink = await screen.findByRole('link', {
+ name: 'Test Contest Task BA - Week Ending: May 02, 2026',
+ })
+
+ expect(descriptionLink.getAttribute('href'))
+ .toBe('https://www.example.com/challenges/contest-challenge-1')
+
+ await userEvent.click(screen.getByRole('tab', { name: 'Audit History' }))
+
+ await waitFor(() => {
+ expect(mockedFetchAuditLogs)
+ .toHaveBeenCalledWith(contestPayment.id)
+ })
+ })
+
+ it.each([
+ ['copilot payment', 'copilot-challenge-1', 'Copilot challenge payment'],
+ ['review board payment', 'review-board-1', 'Review board challenge payment'],
+ ])('renders %s with challenge payment summary and tabs', async (paymentType, externalId, description) => {
+ const styledPayment: Winning = {
+ ...payment,
+ description,
+ externalId,
+ type: paymentType,
+ }
+
+ mockedFetchChallengePaymentSummary.mockResolvedValue({
+ budgetApproverHandle: 'kartik',
+ creatorHandle: 'wendell',
+ })
+
+ render( )
+
+ await waitFor(() => {
+ expect(mockedFetchChallengePaymentSummary)
+ .toHaveBeenCalledWith(externalId)
+ })
+
+ expect(mockedFetchWinningPaymentDetails)
+ .not.toHaveBeenCalled()
+
+ expect(screen.getByText('Challenge Creator'))
+ .toBeTruthy()
+ expect(screen.getByText('Budget Approver'))
+ .toBeTruthy()
+ expect(await screen.findByText('wendell'))
+ .toBeTruthy()
+ expect(await screen.findByText('kartik'))
+ .toBeTruthy()
+ expect(screen.queryByRole('tab', { name: 'Task Details' }))
+ .toBeNull()
+
+ const descriptionLink = await screen.findByRole('link', { name: description })
+ expect(descriptionLink.getAttribute('href'))
+ .toBe(`https://www.example.com/challenges/${externalId}`)
+ })
+
+ it('renders topgear payment details with handle and payment summary only', async () => {
+ const topgearPayment: Winning = {
+ ...payment,
+ description: 'Test Project Topgeader BA - Week Ending: May 02, 2026',
+ externalId: 'topgear-challenge-1',
+ type: 'topgear payment',
+ }
+
+ render( )
+
+ expect(screen.getByText('Handle'))
+ .toBeTruthy()
+ expect(screen.getByText('Payment'))
+ .toBeTruthy()
+ expect(screen.getByText('disnadiji'))
+ .toBeTruthy()
+ expect(screen.queryByText('Payment Creator'))
+ .toBeNull()
+ expect(screen.queryByText('Challenge Creator'))
+ .toBeNull()
+ expect(screen.queryByText('Task Creator'))
+ .toBeNull()
+ expect(screen.queryByRole('tab', { name: 'Task Details' }))
+ .toBeNull()
+ expect(screen.getByRole('tab', { name: 'General Info' }))
+ .toBeTruthy()
+ expect(screen.getByRole('tab', { name: 'Audit History' }))
+ .toBeTruthy()
+
+ const descriptionLink = screen.getByRole('link', {
+ name: 'Test Project Topgeader BA - Week Ending: May 02, 2026',
+ })
+
+ expect(descriptionLink.getAttribute('href'))
+ .toBe('https://www.example.com/challenges/topgear-challenge-1')
+
+ expect(mockedFetchWinningPaymentDetails)
+ .not.toHaveBeenCalled()
+
+ await userEvent.click(screen.getByRole('tab', { name: 'Audit History' }))
+
+ await waitFor(() => {
+ expect(mockedFetchAuditLogs)
+ .toHaveBeenCalledWith(topgearPayment.id)
+ })
+ })
+
+ it('renders taas payment details with handle and payment summary only', async () => {
+ const taasPayment: Winning = {
+ ...payment,
+ description: 'Test Project TaaS BA - Week Ending: May 02, 2026',
+ externalId: 'taas-challenge-1',
+ type: 'taas payment',
+ }
+
+ render( )
+
+ expect(screen.getByText('Handle'))
+ .toBeTruthy()
+ expect(screen.getByText('Payment'))
+ .toBeTruthy()
+ expect(screen.queryByText('Payment Creator'))
+ .toBeNull()
+ expect(screen.getByRole('tab', { name: 'General Info' }))
+ .toBeTruthy()
+ expect(screen.getByRole('tab', { name: 'Audit History' }))
+ .toBeTruthy()
+
+ const descriptionLink = screen.getByRole('link', {
+ name: 'Test Project TaaS BA - Week Ending: May 02, 2026',
+ })
+
+ expect(descriptionLink.getAttribute('href'))
+ .toBe('https://www.example.com/challenges/taas-challenge-1')
+
+ expect(mockedFetchWinningPaymentDetails)
+ .not.toHaveBeenCalled()
+
+ await userEvent.click(screen.getByRole('tab', { name: 'Audit History' }))
+
+ await waitFor(() => {
+ expect(mockedFetchAuditLogs)
+ .toHaveBeenCalledWith(taasPayment.id)
+ })
})
})
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index a597eee66..fd8a3c9b0 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -1,57 +1,98 @@
-/* eslint-disable react/no-array-index-key */
-/* eslint-disable unicorn/no-null */
-/* eslint-disable max-len */
/* eslint-disable react/jsx-no-bind */
-/* eslint-disable complexity */
-/* eslint-disable ordered-imports/ordered-imports */
import React from 'react'
-import { Button, Collapsible } from '~/libs/ui'
+import { Button } from '~/libs/ui'
import { TOPCODER_URL } from '~/config/environments/default.env'
import { WinningsAudit } from '../../models/WinningsAudit'
import { Winning, WinningPaymentDetails } from '../../models/WinningDetail'
-import { PayoutAudit } from '../../models/PayoutAudit'
import {
fetchAuditLogs,
- fetchPayoutAuditLogs,
+ fetchChallengePaymentSummary,
fetchWinningPaymentDetails,
getMemberHandle,
} from '../../services/wallet'
+import PaymentAgreementBanner from './PaymentAgreementBanner'
+import PaymentDetailsSummaryRow from './PaymentDetailsSummaryRow'
+import PaymentDetailsTabs, { PaymentDetailsTabOption } from './PaymentDetailsTabs'
+import PaymentAuditHistoryTab from './tabs/PaymentAuditHistoryTab'
+import PaymentEngagementDetailsTab from './tabs/PaymentEngagementDetailsTab'
+import PaymentGeneralInfoTab from './tabs/PaymentGeneralInfoTab'
+import PaymentTaskDetailsTab from './tabs/PaymentTaskDetailsTab'
+import PaymentWorkLogTab from './tabs/PaymentWorkLogTab'
import {
buildWorkAppChallengeUrl,
buildWorkManagerAssignmentUrl,
buildWorkManagerProjectUrl,
- formatOptionalDate,
- formatOptionalText,
- renderOptionalLinkedText,
+ getPaymentDetailsSummaryConfig,
+ isChallengePaymentType,
+ resolvePaymentAgreementSummary,
+ resolvePaymentApproverHandle,
+ resolveTaskCreatorHandle,
} from './payment-view.utils'
import styles from './PaymentView.module.scss'
interface PaymentViewProps {
isPoints?: boolean
+ onClose?: () => void
payment: Winning
}
+type PaymentDetailsTabId
+ = 'general'
+ | 'engagement'
+ | 'work-log'
+ | 'task-details'
+ | 'audit'
+
const PaymentView: React.FC = (props: PaymentViewProps) => {
- const [view, setView] = React.useState<'details' | 'audit' | 'external_transaction'>('details')
+ const [activeTab, setActiveTab] = React.useState('general')
const [auditLines, setAuditLines] = React.useState([])
- const [externalTransactionAudit, setExternalTransactionAudit] = React.useState([])
+ const [isAuditLoading, setIsAuditLoading] = React.useState(false)
const [paymentDetails, setPaymentDetails] = React.useState()
const [isPaymentDetailsLoading, setIsPaymentDetailsLoading] = React.useState(false)
const [paymentDetailsError, setPaymentDetailsError] = React.useState()
+ const [challengeCreatorHandle, setChallengeCreatorHandle] = React.useState()
+ const [challengeBudgetApproverHandle, setChallengeBudgetApproverHandle] = React.useState()
const isEngagementPayment = props.payment.type.toLowerCase() === 'engagement payment'
const isTaskPayment = props.payment.type.toLowerCase() === 'task payment'
- const hasEngagementDetails = Boolean(paymentDetails?.engagementDetails)
+ const isChallengePayment = isChallengePaymentType(props.payment.type)
+ const shouldFetchChallengeSummary = isChallengePayment || isTaskPayment
+ const shouldFetchPaymentDetails = isEngagementPayment || isTaskPayment
+ const summaryConfig = getPaymentDetailsSummaryConfig(props.payment.type)
- const handleToggleView = (newView: 'audit' | 'details' | 'external_transaction'): void => {
- setView(newView)
- }
+ const agreementSummary = isEngagementPayment
+ ? resolvePaymentAgreementSummary(props.payment, paymentDetails)
+ : undefined
+
+ const tabs = React.useMemo((): PaymentDetailsTabOption[] => {
+ if (isEngagementPayment) {
+ return [
+ { id: 'general', label: 'General Info' },
+ { id: 'engagement', label: 'Engagement Details' },
+ { id: 'work-log', label: 'Work Log' },
+ { id: 'audit', label: 'Audit History' },
+ ]
+ }
+
+ if (isTaskPayment) {
+ return [
+ { id: 'general', label: 'General Info' },
+ { id: 'task-details', label: 'Task Details' },
+ { id: 'audit', label: 'Audit History' },
+ ]
+ }
+
+ return [
+ { id: 'general', label: 'General Info' },
+ { id: 'audit', label: 'Audit History' },
+ ]
+ }, [isEngagementPayment, isTaskPayment])
React.useEffect(() => {
- if (!isEngagementPayment && !isTaskPayment) {
+ if (!shouldFetchPaymentDetails) {
setPaymentDetails(undefined)
setIsPaymentDetailsLoading(false)
setPaymentDetailsError(undefined)
@@ -72,7 +113,11 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
.catch(() => {
if (!ignore) {
setPaymentDetails(undefined)
- setPaymentDetailsError(isTaskPayment ? 'Unable to load task details.' : 'Unable to load engagement details.')
+ setPaymentDetailsError(
+ isTaskPayment
+ ? 'Unable to load task details.'
+ : 'Unable to load engagement details.',
+ )
}
})
.finally(() => {
@@ -84,34 +129,85 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
return () => {
ignore = true
}
- }, [isEngagementPayment, isTaskPayment, props.payment])
+ }, [isTaskPayment, props.payment, shouldFetchPaymentDetails])
React.useEffect(() => {
- if (view === 'audit') {
- fetchAuditLogs(props.payment.id)
- .then(auditLogs => {
- const userIds = auditLogs.map(log => log.userId)
- getMemberHandle(userIds)
- .then((handles: Map) => {
- auditLogs.forEach((log: WinningsAudit) => {
- log.userId = handles.get(parseInt(log.userId, 10)) ?? log.userId
- })
- })
- .catch(() => undefined)
- .finally(() => {
- setAuditLines(auditLogs)
+ if (!shouldFetchChallengeSummary || !props.payment.externalId) {
+ setChallengeCreatorHandle(undefined)
+ setChallengeBudgetApproverHandle(undefined)
+ return undefined
+ }
+
+ let ignore = false
+
+ fetchChallengePaymentSummary(props.payment.externalId)
+ .then(summary => {
+ if (!ignore) {
+ if (isChallengePayment) {
+ setChallengeCreatorHandle(summary.creatorHandle)
+ }
+
+ setChallengeBudgetApproverHandle(summary.budgetApproverHandle)
+ }
+ })
+ .catch(() => {
+ if (!ignore) {
+ setChallengeCreatorHandle(undefined)
+ setChallengeBudgetApproverHandle(undefined)
+ }
+ })
+
+ return () => {
+ ignore = true
+ }
+ }, [
+ isChallengePayment,
+ props.payment.externalId,
+ shouldFetchChallengeSummary,
+ ])
+
+ React.useEffect(() => {
+ if (activeTab !== 'audit') {
+ return undefined
+ }
+
+ let ignore = false
+ setIsAuditLoading(true)
+
+ fetchAuditLogs(props.payment.id)
+ .then(auditLogs => {
+ const userIds = auditLogs.map(log => log.userId)
+
+ return getMemberHandle(userIds)
+ .then((handles: Map) => {
+ auditLogs.forEach((log: WinningsAudit) => {
+ log.userId = handles.get(parseInt(log.userId, 10)) ?? log.userId
})
- })
- .catch(() => {
+
+ return auditLogs
+ })
+ .catch(() => auditLogs)
+ })
+ .then(auditLogs => {
+ if (!ignore) {
+ setAuditLines(auditLogs)
+ }
+ })
+ .catch(() => {
+ if (!ignore) {
setAuditLines([])
- })
- } else if (view === 'external_transaction') {
- fetchPayoutAuditLogs(props.payment.id)
- .then(payoutAudit => {
- setExternalTransactionAudit(payoutAudit)
- })
+ }
+ })
+ .finally(() => {
+ if (!ignore) {
+ setIsAuditLoading(false)
+ }
+ })
+
+ return () => {
+ ignore = true
}
- }, [props.payment.id, view])
+ }, [activeTab, props.payment.id])
const formatAction = (action: string): React.ReactNode => {
const fromIndex = action.indexOf('from')
@@ -121,6 +217,7 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
const beforeFrom = action.substring(0, fromIndex)
const fromValue = action.substring(fromIndex + 5, toIndex)
const toValue = action.substring(toIndex + 3)
+
return (
<>
{beforeFrom}
@@ -143,359 +240,113 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
: isTaskPayment
? buildWorkAppChallengeUrl(paymentDetails?.taskDetails?.projectId, props.payment.externalId)
: `${TOPCODER_URL}/challenges/${props.payment.externalId}`
- const projectLink = buildWorkManagerProjectUrl(paymentDetails?.engagementDetails)
+
+ const taskCreatorHandle = resolveTaskCreatorHandle(paymentDetails)
+
+ const budgetApproverHandle = shouldFetchChallengeSummary
+ ? challengeBudgetApproverHandle
+ : undefined
+
+ const paymentApproverHandle = resolvePaymentApproverHandle(
+ paymentDetails,
+ isTaskPayment,
+ )
+
+ const renderTabContent = (): React.ReactNode => {
+ if (activeTab === 'general') {
+ return (
+
+ )
+ }
+
+ if (activeTab === 'engagement') {
+ return (
+
+ )
+ }
+
+ if (activeTab === 'work-log') {
+ return (
+
+ )
+ }
+
+ if (activeTab === 'task-details') {
+ return (
+
+ )
+ }
+
+ return (
+
+ )
+ }
return (
-
- {view === 'details' && (
- <>
-
-
-
Payment ID
-
{props.payment.id}
-
-
-
Handle
-
{props.payment.handle}
-
-
-
Type
-
{props.payment.type}
-
-
-
-
{props.isPoints ? 'Points' : 'Payment'}
-
- {props.isPoints ? `${props.payment.grossAmountNumber}` : props.payment.grossAmountNumber.toLocaleString(undefined, {
- currency: 'USD',
- style: 'currency',
- })}
-
-
-
-
-
Payment Status
-
{props.payment.status}
-
-
-
-
Release Date
-
{props.payment.releaseDateObj.toLocaleDateString()}
-
-
- {props.payment.datePaid !== '-' && (
-
-
Date Paid
-
{props.payment.datePaid}
-
- )}
-
- {isEngagementPayment && (
-
-
Engagement Details
- {isPaymentDetailsLoading
- ?
Loading engagement details...
- : undefined}
- {!isPaymentDetailsLoading && paymentDetailsError
- ?
{paymentDetailsError}
- : undefined}
- {!isPaymentDetailsLoading && !paymentDetailsError && !hasEngagementDetails
- ? (
-
- Engagement details are unavailable for this payment.
-
- )
- : undefined}
- {!isPaymentDetailsLoading && !paymentDetailsError && hasEngagementDetails && (
-
-
-
-
Billing Start Date
-
- {formatOptionalDate(paymentDetails?.engagementDetails?.billingStartDate)}
-
-
-
-
Duration
-
- {paymentDetails?.engagementDetails?.durationMonths
- ? `${paymentDetails.engagementDetails.durationMonths} month${paymentDetails.engagementDetails.durationMonths === 1 ? '' : 's'}`
- : '-'}
-
-
-
-
Rate per Hour
-
- {paymentDetails?.engagementDetails?.ratePerHour
- ? Number(paymentDetails.engagementDetails.ratePerHour)
- .toLocaleString(undefined, {
- currency: 'USD',
- style: 'currency',
- })
- : '-'}
-
-
-
-
Standard Hours per Week
-
- {formatOptionalText(paymentDetails?.engagementDetails?.standardHoursPerWeek)}
-
-
-
-
Other Remarks
-
- {renderOptionalLinkedText(paymentDetails?.engagementDetails?.otherRemarks)}
-
-
-
- )}
-
- )}
-
- {isEngagementPayment && (
-
-
Work Log / Manager Inputs
- {isPaymentDetailsLoading
- ?
Loading work log...
- : (
-
-
-
Hours Worked
-
- {formatOptionalText(paymentDetails?.workLog?.hoursWorked)}
-
-
-
-
Remarks
-
- {renderOptionalLinkedText(paymentDetails?.workLog?.remarks)}
-
-
-
-
Payment Creator
-
- {formatOptionalText(paymentDetails?.paymentCreatorHandle)}
-
-
-
- )}
-
- )}
-
- {isTaskPayment && (
-
-
Task Details
- {isPaymentDetailsLoading
- ?
Loading task details...
- : undefined}
- {!isPaymentDetailsLoading && paymentDetailsError
- ?
{paymentDetailsError}
- : undefined}
- {!isPaymentDetailsLoading && !paymentDetailsError && (
-
-
-
Task Creator
-
- {formatOptionalText(paymentDetails?.taskDetails?.paymentCreatorHandle)}
-
-
-
-
Task Description
-
- {props.payment.description
- ? props.payment.description.substring(0, 500)
- : '-'}
-
-
-
-
Project Name
- {buildWorkManagerProjectUrl(paymentDetails?.taskDetails) && paymentDetails?.taskDetails?.projectName
- ? (
-
- {paymentDetails.taskDetails.projectName}
-
- )
- : (
-
- {formatOptionalText(paymentDetails?.taskDetails?.projectName)}
-
- )}
-
-
-
Payment Approver
-
- {formatOptionalText(paymentDetails?.taskDetails?.paymentApproverHandle)}
-
-
-
- )}
-
- )}
-
-
- handleToggleView('audit')} label='View Audit' />
- {props.payment.status.toUpperCase() === 'PAID' && (
- handleToggleView('external_transaction')}
- label='External Transaction Details'
- />
- )}
-
- >
- )}
-
- {view === 'audit' && (
- <>
-
- {auditLines
- && auditLines.length > 0
- && auditLines.map(line => (
-
- {
- new Date(line.createdAt)
- .toLocaleString()
- }
-
- )
- }
- containerClass={styles.container}
- contentClass={styles.content}
- >
-
-
-
- User:
- {line.userId}
-
-
- Action:
- {formatAction(line.action)}
-
-
- Note:
- {line.note}
-
-
-
-
- ))}
- {(auditLines === undefined || auditLines.length === 0) && (
-
-
No audit data available
-
- )}
-
-
- handleToggleView('details')} label='Back to Details' />
-
- >
- )}
-
- {view === 'external_transaction' && (
- <>
-
- {externalTransactionAudit
- && externalTransactionAudit.length > 0
- && externalTransactionAudit.map((externalTransaction: PayoutAudit, index: number) => (
- <>
-
Internal Record}
- containerClass={styles.container}
- contentClass={styles.content}
- >
-
-
-
- Provider Used:
- {' '}
- {externalTransaction.paymentMethodUsed}
-
-
- Status:
- {externalTransaction.status}
-
-
- Processed At:
- {externalTransaction.createdAt}
-
-
- Total Amount Processed:
- {' '}
- {externalTransaction.totalNetAmount}
-
-
-
-
-
External Record}
- containerClass={styles.container}
- contentClass={styles.content}
- >
-
-
-
- {JSON.stringify(
- externalTransaction.externalTransactionDetails,
- undefined,
- 2,
- )}
-
-
-
-
- >
- ))}
- {externalTransactionAudit === undefined && (
-
-
No external transaction data is available
-
- )}
-
-
- handleToggleView('details')} label='Back to Details' />
-
- >
- )}
+
+ {agreementSummary && (
+
+ )}
+
setActiveTab(tabId as PaymentDetailsTabId)}
+ tabs={tabs}
+ />
+
+ {renderTabContent()}
+ {props.onClose && (
+
+
+
+ )}
)
}
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts b/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
index 8c5b25425..bf7f3378a 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
@@ -2,7 +2,27 @@ import React from 'react'
import { EnvironmentConfig } from '~/config'
-import { PaymentEngagementDetails } from '../../models/WinningDetail'
+import {
+ PaymentAgreementSummary,
+ PaymentEngagementDetails,
+ PaymentWorkLog,
+ Winning,
+} from '../../models/WinningDetail'
+
+const WEEKLY_WORK_DAYS = 5
+
+function parseRatePerHour(value?: string): number | undefined {
+ if (!value) {
+ return undefined
+ }
+
+ const parsedValue = Number(String(value)
+ .replace(/[^0-9.-]/g, ''))
+
+ return Number.isFinite(parsedValue) && parsedValue > 0
+ ? parsedValue
+ : undefined
+}
export function buildWorkManagerAssignmentUrl(
engagementDetails?: PaymentEngagementDetails,
@@ -151,9 +171,277 @@ export function formatOptionalDate(
return value
}
- return date.toLocaleDateString('en-US', {
+ return date.toLocaleDateString('en-GB', {
+ day: 'numeric',
+ month: 'numeric',
+ year: 'numeric',
+ })
+}
+
+export function formatCurrencyAmount(
+ amount: number,
+ currency: string = 'USD',
+): string {
+ return amount.toLocaleString(undefined, {
+ currency,
+ style: 'currency',
+ })
+}
+
+export function formatAuditTimestamp(value: string): string {
+ const date = new Date(value)
+
+ if (Number.isNaN(date.getTime())) {
+ return value
+ }
+
+ const datePart = date.toLocaleDateString('en-GB', {
day: '2-digit',
- month: 'short',
+ month: '2-digit',
year: 'numeric',
})
+ const timePart = date.toLocaleTimeString('en-US', {
+ hour: 'numeric',
+ minute: '2-digit',
+ })
+
+ return `${datePart}, ${timePart}`
+}
+
+export function getEngagementHoursPerDay(
+ engagementDetails?: PaymentEngagementDetails,
+): number | undefined {
+ if (engagementDetails?.standardHoursPerDay !== undefined) {
+ return engagementDetails.standardHoursPerDay
+ }
+
+ if (engagementDetails?.standardHoursPerWeek !== undefined) {
+ return engagementDetails.standardHoursPerWeek / WEEKLY_WORK_DAYS
+ }
+
+ return undefined
+}
+
+export function getEngagementWorkDays(
+ engagementDetails?: PaymentEngagementDetails,
+): number {
+ const cycle = engagementDetails?.paymentCycle?.trim()
+ .toLowerCase()
+
+ if (cycle === 'weekly') {
+ return WEEKLY_WORK_DAYS
+ }
+
+ return WEEKLY_WORK_DAYS
+}
+
+export function buildEngagementAgreementSummary(
+ payment: Winning,
+ engagementDetails?: PaymentEngagementDetails,
+ workLog?: PaymentWorkLog,
+): PaymentAgreementSummary | undefined {
+ const ratePerHour = parseRatePerHour(engagementDetails?.ratePerHour)
+
+ if (!ratePerHour) {
+ return undefined
+ }
+
+ const hoursWorked = workLog?.hoursWorked
+ let workDays = getEngagementWorkDays(engagementDetails)
+ let hoursPerDay = getEngagementHoursPerDay(engagementDetails)
+ let expectedAmount: number | undefined
+
+ if (hoursWorked !== undefined && hoursWorked > 0) {
+ expectedAmount = Number((ratePerHour * hoursWorked).toFixed(2))
+ workDays = 1
+ hoursPerDay = hoursWorked
+ } else if (hoursPerDay !== undefined && hoursPerDay > 0) {
+ expectedAmount = Number((ratePerHour * workDays * hoursPerDay).toFixed(2))
+ }
+
+ if (expectedAmount === undefined || hoursPerDay === undefined) {
+ return undefined
+ }
+
+ const actualAmount = payment.grossAmountNumber
+ const difference = Number((actualAmount - expectedAmount).toFixed(2))
+ const differenceAmount = Math.abs(difference)
+
+ let status: PaymentAgreementSummary['status'] = 'match'
+
+ if (difference > 0.01) {
+ status = 'over'
+ } else if (difference < -0.01) {
+ status = 'under'
+ }
+
+ return {
+ actualAmount,
+ differenceAmount,
+ expectedAmount,
+ hoursPerDay,
+ ratePerHour,
+ status,
+ workDays,
+ }
+}
+
+export function formatAgreementBreakdown(
+ summary: PaymentAgreementSummary,
+): string {
+ const rate = formatCurrencyAmount(summary.ratePerHour)
+
+ if (summary.workDays === 1) {
+ return `${rate} x ${summary.hoursPerDay} hours`
+ }
+
+ return `${rate} x ${summary.workDays} days x ${summary.hoursPerDay} hours`
+}
+
+export function formatPaymentCycle(
+ engagementDetails?: PaymentEngagementDetails,
+): string {
+ const cycle = engagementDetails?.paymentCycle?.trim()
+
+ if (!cycle) {
+ return 'Weekly'
+ }
+
+ return cycle.charAt(0)
+ .toUpperCase() + cycle.slice(1)
+ .toLowerCase()
+}
+
+export function isContestPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'contest payment'
+}
+
+export function isCopilotPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'copilot payment'
+}
+
+export function isReviewBoardPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'review board payment'
+}
+
+/** Challenge payments: 4-column summary (Challenge Creator / Budget Approver) + General Info / Audit */
+export function isChallengePaymentType(type: string): boolean {
+ return isContestPaymentType(type)
+ || isCopilotPaymentType(type)
+ || isReviewBoardPaymentType(type)
+}
+
+export function isEngagementPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'engagement payment'
+}
+
+export function isTaskPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'task payment'
+}
+
+export function isTopgearPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'topgear payment'
+}
+
+export function isTaasPaymentType(type: string): boolean {
+ return type.toLowerCase() === 'taas payment'
+}
+
+export function usesCompactPaymentSummary(type: string): boolean {
+ return isTopgearPaymentType(type) || isTaasPaymentType(type)
+}
+
+/**
+ * Task creator handle for task payments — always from `taskDetails.paymentCreatorHandle`.
+ * Root-level `paymentCreatorHandle` is a client id and must not be shown.
+ */
+export function resolveTaskCreatorHandle(
+ paymentDetails?: {
+ taskDetails?: { paymentCreatorHandle?: string }
+ },
+): string | undefined {
+ return paymentDetails?.taskDetails?.paymentCreatorHandle
+}
+
+/**
+ * Payment approver handle from finance payment-details.
+ * Engagement payments return it on `engagementDetails`; task payments on `taskDetails`.
+ */
+export function resolvePaymentApproverHandle(
+ paymentDetails?: {
+ engagementDetails?: { paymentApproverHandle?: string }
+ taskDetails?: { paymentApproverHandle?: string }
+ },
+ isTaskPayment: boolean = false,
+): string | undefined {
+ if (isTaskPayment) {
+ return paymentDetails?.taskDetails?.paymentApproverHandle
+ }
+
+ return paymentDetails?.engagementDetails?.paymentApproverHandle
+}
+
+export interface PaymentDetailsSummaryConfig {
+ approverLabel?: string
+ columns: 2 | 4 | 5
+ creatorLabel?: string
+ secondaryApproverLabel?: string
+}
+
+export function getPaymentDetailsSummaryConfig(type: string): PaymentDetailsSummaryConfig {
+ if (usesCompactPaymentSummary(type)) {
+ return {
+ columns: 2,
+ }
+ }
+
+ if (isChallengePaymentType(type)) {
+ return {
+ approverLabel: 'Budget Approver',
+ columns: 4,
+ creatorLabel: 'Challenge Creator',
+ }
+ }
+
+ if (isTaskPaymentType(type)) {
+ return {
+ approverLabel: 'Budget Approver',
+ columns: 5,
+ creatorLabel: 'Task Creator',
+ secondaryApproverLabel: 'Payment Approver',
+ }
+ }
+
+ if (isEngagementPaymentType(type)) {
+ return {
+ approverLabel: 'Payment Approver',
+ columns: 4,
+ creatorLabel: 'Payment Creator',
+ }
+ }
+
+ return {
+ approverLabel: 'Payment Approver',
+ columns: 4,
+ creatorLabel: 'Payment Creator',
+ }
+}
+
+export function resolvePaymentAgreementSummary(
+ payment: Winning,
+ paymentDetails?: {
+ agreementSummary?: PaymentAgreementSummary
+ engagementDetails?: PaymentEngagementDetails
+ workLog?: PaymentWorkLog
+ },
+): PaymentAgreementSummary | undefined {
+ if (paymentDetails?.agreementSummary) {
+ return paymentDetails.agreementSummary
+ }
+
+ return buildEngagementAgreementSummary(
+ payment,
+ paymentDetails?.engagementDetails,
+ paymentDetails?.workLog,
+ )
}
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx
new file mode 100644
index 000000000..ab84f6c13
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx
@@ -0,0 +1,51 @@
+import { FC, ReactNode } from 'react'
+
+import { WinningsAudit } from '../../../models/WinningsAudit'
+import { formatAuditTimestamp } from '../payment-view.utils'
+
+import styles from '../PaymentView.module.scss'
+
+interface PaymentAuditHistoryTabProps {
+ readonly auditLines: WinningsAudit[]
+ readonly formatAction: (action: string) => ReactNode
+ readonly isLoading: boolean
+}
+
+const PaymentAuditHistoryTab: FC
= (
+ props: PaymentAuditHistoryTabProps,
+) => {
+ if (props.isLoading) {
+ return Loading audit history...
+ }
+
+ if (props.auditLines.length === 0) {
+ return No audit data available
+ }
+
+ return (
+
+
+
+
+ Date
+ User
+ Action
+ Note
+
+
+
+ {props.auditLines.map(line => (
+
+ {formatAuditTimestamp(line.createdAt)}
+ {line.userId}
+ {props.formatAction(line.action)}
+ {line.note || '-'}
+
+ ))}
+
+
+
+ )
+}
+
+export default PaymentAuditHistoryTab
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx
new file mode 100644
index 000000000..ee052a263
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx
@@ -0,0 +1,113 @@
+import { FC } from 'react'
+
+import { PaymentEngagementDetails } from '../../../models/WinningDetail'
+import {
+ formatOptionalDate,
+ formatOptionalText,
+ formatPaymentCycle,
+ getEngagementHoursPerDay,
+ renderOptionalLinkedText,
+} from '../payment-view.utils'
+
+import styles from '../PaymentView.module.scss'
+
+interface PaymentEngagementDetailsTabProps {
+ readonly engagementDetails?: PaymentEngagementDetails
+ readonly errorMessage?: string
+ readonly isLoading: boolean
+ readonly projectLink?: string
+}
+
+const PaymentEngagementDetailsTab: FC = (
+ props: PaymentEngagementDetailsTabProps,
+) => {
+ if (props.isLoading) {
+ return Loading engagement details...
+ }
+
+ if (props.errorMessage) {
+ return {props.errorMessage}
+ }
+
+ if (!props.engagementDetails) {
+ return (
+
+ Engagement details are unavailable for this payment.
+
+ )
+ }
+
+ const hoursPerDay = getEngagementHoursPerDay(props.engagementDetails)
+
+ return (
+
+
+
+
Project Name
+ {props.projectLink && props.engagementDetails.projectName
+ ? (
+
+ {props.engagementDetails.projectName}
+
+ )
+ : (
+
+ {formatOptionalText(props.engagementDetails.projectName)}
+
+ )}
+
+
+
Rate per Hour
+
+ {props.engagementDetails.ratePerHour
+ ? Number(props.engagementDetails.ratePerHour)
+ .toLocaleString(undefined, {
+ currency: 'USD',
+ style: 'currency',
+ })
+ : '-'}
+
+
+
+
Duration
+
+ {props.engagementDetails.durationMonths
+ ? `${props.engagementDetails.durationMonths} month${props.engagementDetails.durationMonths === 1 ? '' : 's'}`
+ : '-'}
+
+
+
+
Standard Hours per Day
+
+ {formatOptionalText(hoursPerDay)}
+
+
+
+
Billing Start Date
+
+ {formatOptionalDate(props.engagementDetails.billingStartDate)}
+
+
+
+
Payment Cycle
+
+ {formatPaymentCycle(props.engagementDetails)}
+
+
+
+
+
Other Remarks
+
+ {renderOptionalLinkedText(props.engagementDetails.otherRemarks)}
+
+
+
+ )
+}
+
+export default PaymentEngagementDetailsTab
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx
new file mode 100644
index 000000000..0b8ed2fcc
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx
@@ -0,0 +1,62 @@
+import { FC } from 'react'
+
+import { Winning } from '../../../models/WinningDetail'
+
+import styles from '../PaymentView.module.scss'
+
+interface PaymentGeneralInfoTabProps {
+ readonly createDate: string
+ readonly description: string
+ readonly descriptionLink?: string
+ readonly payment: Winning
+}
+
+const PaymentGeneralInfoTab: FC = (props: PaymentGeneralInfoTabProps) => (
+
+
+
+
+
Payment Status
+
{props.payment.status}
+
+
+
Create Date
+
{props.createDate}
+
+
+
Payment Type
+
{props.payment.type}
+
+
+
Release Date
+
{props.payment.releaseDateObj.toLocaleDateString('en-GB')}
+
+
+
Payment ID
+
{props.payment.id}
+
+ {props.payment.datePaid !== '-' && (
+
+
Date Paid
+
{props.payment.datePaid}
+
+ )}
+
+
+)
+
+export default PaymentGeneralInfoTab
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
new file mode 100644
index 000000000..855c6b2ed
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
@@ -0,0 +1,68 @@
+import { FC } from 'react'
+
+import { Winning, WinningPaymentDetails } from '../../../models/WinningDetail'
+import { formatOptionalText, resolveTaskCreatorHandle } from '../payment-view.utils'
+
+import styles from '../PaymentView.module.scss'
+
+interface PaymentTaskDetailsTabProps {
+ readonly errorMessage?: string
+ readonly isLoading: boolean
+ readonly payment: Winning
+ readonly paymentDetails?: WinningPaymentDetails
+ readonly projectLink?: string
+}
+
+const PaymentTaskDetailsTab: FC = (
+ props: PaymentTaskDetailsTabProps,
+) => {
+ if (props.isLoading) {
+ return Loading task details...
+ }
+
+ if (props.errorMessage) {
+ return {props.errorMessage}
+ }
+
+ const taskDescription = props.paymentDetails?.taskDetails?.taskDescription
+ ?? props.payment.description
+ const taskCreatorHandle = resolveTaskCreatorHandle(props.paymentDetails)
+
+ return (
+
+
+
Task Creator
+
+ {formatOptionalText(taskCreatorHandle)}
+
+
+
+
+
Task Description
+
+ {formatOptionalText(taskDescription)}
+
+
+
+ )
+}
+
+export default PaymentTaskDetailsTab
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx
new file mode 100644
index 000000000..21d75f898
--- /dev/null
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx
@@ -0,0 +1,43 @@
+import { FC } from 'react'
+
+import { PaymentWorkLog } from '../../../models/WinningDetail'
+import { formatOptionalText, renderOptionalLinkedText } from '../payment-view.utils'
+
+import styles from '../PaymentView.module.scss'
+
+interface PaymentWorkLogTabProps {
+ readonly errorMessage?: string
+ readonly isLoading: boolean
+ readonly workLog?: PaymentWorkLog
+}
+
+const PaymentWorkLogTab: FC = (props: PaymentWorkLogTabProps) => {
+ if (props.isLoading) {
+ return Loading work log...
+ }
+
+ if (props.errorMessage) {
+ return {props.errorMessage}
+ }
+
+ return (
+
+
+
+
Hours Worked
+
+ {formatOptionalText(props.workLog?.hoursWorked)}
+
+
+
+
Remarks
+
+ {renderOptionalLinkedText(props.workLog?.remarks)}
+
+
+
+
+ )
+}
+
+export default PaymentWorkLogTab
diff --git a/src/apps/wallet-admin/src/lib/models/WinningDetail.ts b/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
index 3a5881f22..def0be388 100644
--- a/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
+++ b/src/apps/wallet-admin/src/lib/models/WinningDetail.ts
@@ -29,8 +29,11 @@ export interface PaymentEngagementDetails {
billingStartDate?: string
durationMonths?: number
ratePerHour?: string
+ standardHoursPerDay?: number
standardHoursPerWeek?: number
+ paymentCycle?: string
otherRemarks?: string
+ paymentApproverHandle?: string
}
export interface PaymentWorkLog {
@@ -43,9 +46,23 @@ export interface PaymentTaskDetails {
projectName?: string
paymentApproverHandle?: string
paymentCreatorHandle?: string
+ taskDescription?: string
+}
+
+export type PaymentAgreementStatus = 'match' | 'under' | 'over'
+
+export interface PaymentAgreementSummary {
+ status: PaymentAgreementStatus
+ expectedAmount: number
+ actualAmount: number
+ differenceAmount: number
+ ratePerHour: number
+ workDays: number
+ hoursPerDay: number
}
export interface WinningPaymentDetails {
+ agreementSummary?: PaymentAgreementSummary
engagementDetails?: PaymentEngagementDetails
paymentCreatorHandle?: string
workLog?: PaymentWorkLog
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.spec.ts b/src/apps/wallet-admin/src/lib/services/wallet.spec.ts
index 36dfe701f..f90c96489 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.spec.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.spec.ts
@@ -2,8 +2,14 @@
import { xhrGetAsync } from '~/libs/core'
import { Winning } from '../models/WinningDetail'
-import { fetchWinningPaymentDetails } from './wallet'
+import { fetchChallengePaymentSummary, fetchWinningPaymentDetails } from './wallet'
+jest.mock('~/config/environments/default.env', () => ({
+ CHALLENGE_API_URL: 'https://example.com/v6/challenges',
+ CHALLENGE_API_VERSION: 'v5',
+}), {
+ virtual: true,
+})
jest.mock('~/config', () => ({
EnvironmentConfig: {
API: {
@@ -15,6 +21,14 @@ jest.mock('~/config', () => ({
virtual: true,
})
jest.mock('~/libs/core', () => ({
+ xhrCreateInstance: jest.fn(() => ({
+ defaults: {
+ headers: {
+ common: {},
+ },
+ },
+ get: jest.fn(),
+ })),
xhrDeleteAsync: jest.fn(),
xhrGetAsync: jest.fn(),
xhrPatchAsync: jest.fn(),
@@ -185,3 +199,51 @@ describe('fetchWinningPaymentDetails', () => {
)
})
})
+
+describe('fetchChallengePaymentSummary', () => {
+ beforeEach(() => {
+ jest.clearAllMocks()
+ })
+
+ it('maps challenge createdBy and approvalApprovedBy to summary handles', async () => {
+ const mockedGetAsync = xhrGetAsync as jest.Mock
+
+ mockedGetAsync.mockResolvedValueOnce({
+ approvalApprovedBy: 'kartik',
+ createdBy: 'wendell',
+ })
+
+ const result = await fetchChallengePaymentSummary('challenge-1')
+
+ expect(result)
+ .toEqual({
+ budgetApproverHandle: 'kartik',
+ creatorHandle: 'wendell',
+ })
+ expect(mockedGetAsync)
+ .toHaveBeenCalledWith(
+ 'https://example.com/v6/challenges/challenge-1',
+ expect.any(Object),
+ )
+ })
+
+ it('resolves numeric user ids through the member API', async () => {
+ const mockedGetAsync = xhrGetAsync as jest.Mock
+
+ mockedGetAsync
+ .mockResolvedValueOnce({
+ approvalApprovedBy: '2002',
+ createdBy: '1001',
+ })
+ .mockResolvedValueOnce([{ handle: 'wendell', userId: 1001 }])
+ .mockResolvedValueOnce([{ handle: 'kartik', userId: 2002 }])
+
+ const result = await fetchChallengePaymentSummary('challenge-1')
+
+ expect(result)
+ .toEqual({
+ budgetApproverHandle: 'kartik',
+ creatorHandle: 'wendell',
+ })
+ })
+})
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.ts b/src/apps/wallet-admin/src/lib/services/wallet.ts
index 4f14fb0c4..94bb6be31 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.ts
@@ -1,6 +1,13 @@
/* eslint-disable camelcase */
import { EnvironmentConfig } from '~/config'
-import { xhrDeleteAsync, xhrGetAsync, xhrPatchAsync, xhrPostAsync } from '~/libs/core'
+import { CHALLENGE_API_URL, CHALLENGE_API_VERSION } from '~/config/environments/default.env'
+import {
+ xhrCreateInstance,
+ xhrDeleteAsync,
+ xhrGetAsync,
+ xhrPatchAsync,
+ xhrPostAsync,
+} from '~/libs/core'
import { postAsyncWithBlobHandling } from '~/libs/core/lib/xhr/xhr-functions/xhr.functions'
import { WalletDetails } from '../models/WalletDetails'
@@ -20,6 +27,22 @@ import ApiResponse from '../models/ApiResponse'
const baseUrl = `${EnvironmentConfig.TC_FINANCE_API}`
const memberApiBaseUrl = `${EnvironmentConfig.API.V6}/members`
const engagementsApiBaseUrl = `${EnvironmentConfig.API.V6}/engagements/engagements`
+const challengeApiBaseUrl = CHALLENGE_API_URL.replace(/\/$/, '')
+const challengeApiXhr = xhrCreateInstance()
+
+if (CHALLENGE_API_VERSION) {
+ challengeApiXhr.defaults.headers.common['app-version'] = CHALLENGE_API_VERSION
+}
+
+interface ChallengePaymentSummaryResponse {
+ approvalApprovedBy?: string
+ createdBy?: string
+}
+
+export interface ChallengePaymentSummary {
+ budgetApproverHandle?: string
+ creatorHandle?: string
+}
interface EngagementAssignmentContextResponse {
assignmentId: string
@@ -103,6 +126,37 @@ function normalizeOptionalNumber(value: unknown): number | undefined {
* @remarks This keeps the finance payment-details response contract stable even
* when wallet-admin has to recover missing engagement metadata on the client.
*/
+// eslint-disable-next-line complexity
+function mergeEngagementDetails(
+ primary?: PaymentEngagementDetails,
+ fallback?: PaymentEngagementDetails,
+): PaymentEngagementDetails | undefined {
+ if (!primary && !fallback) {
+ return undefined
+ }
+
+ return {
+ ...fallback,
+ ...primary,
+ assignmentId: primary?.assignmentId ?? fallback?.assignmentId,
+ billingStartDate: primary?.billingStartDate ?? fallback?.billingStartDate,
+ durationMonths: primary?.durationMonths ?? fallback?.durationMonths,
+ engagementId: primary?.engagementId ?? fallback?.engagementId,
+ engagementTitle: primary?.engagementTitle ?? fallback?.engagementTitle,
+ otherRemarks: primary?.otherRemarks ?? fallback?.otherRemarks,
+ paymentApproverHandle:
+ primary?.paymentApproverHandle ?? fallback?.paymentApproverHandle,
+ paymentCycle: primary?.paymentCycle ?? fallback?.paymentCycle,
+ projectId: primary?.projectId ?? fallback?.projectId,
+ projectName: primary?.projectName ?? fallback?.projectName,
+ ratePerHour: primary?.ratePerHour ?? fallback?.ratePerHour,
+ standardHoursPerDay:
+ primary?.standardHoursPerDay ?? fallback?.standardHoursPerDay,
+ standardHoursPerWeek:
+ primary?.standardHoursPerWeek ?? fallback?.standardHoursPerWeek,
+ }
+}
+
function mapAssignmentContextToEngagementDetails(
context: EngagementAssignmentContextResponse,
): PaymentEngagementDetails {
@@ -279,13 +333,12 @@ export async function fetchWinningPaymentDetails(
const paymentDetails = response.data || {}
- if (
- winning.type.toLowerCase() !== 'engagement payment'
- || paymentDetails.engagementDetails
- ) {
+ if (winning.type.toLowerCase() !== 'engagement payment') {
return paymentDetails
}
+ let engagementDetails = paymentDetails.engagementDetails
+
const assignmentLookupId
= normalizeOptionalString(winning.assignmentId)
|| normalizeOptionalString(winning.externalId)
@@ -296,37 +349,40 @@ export async function fetchWinningPaymentDetails(
`${engagementsApiBaseUrl}/assignments/${assignmentLookupId}/context`,
)
- return {
- ...paymentDetails,
- engagementDetails: mapAssignmentContextToEngagementDetails(assignmentContext),
- }
+ engagementDetails = mergeEngagementDetails(
+ engagementDetails,
+ mapAssignmentContextToEngagementDetails(assignmentContext),
+ )
} catch {}
}
- const engagementId = normalizeOptionalString(winning.externalId)
-
- if (!engagementId) {
- return paymentDetails
+ if (!engagementDetails?.ratePerHour) {
+ const engagementId = normalizeOptionalString(winning.externalId)
+
+ if (engagementId) {
+ try {
+ const engagement = await xhrGetAsync(
+ `${engagementsApiBaseUrl}/${engagementId}`,
+ )
+ const fallbackEngagementDetails = buildEngagementDetailsFromEngagement(
+ engagement,
+ winning,
+ )
+
+ engagementDetails = mergeEngagementDetails(
+ engagementDetails,
+ fallbackEngagementDetails,
+ )
+ } catch {}
+ }
}
- try {
- const engagement = await xhrGetAsync(
- `${engagementsApiBaseUrl}/${engagementId}`,
- )
- const engagementDetails = buildEngagementDetailsFromEngagement(
- engagement,
- winning,
- )
-
- return engagementDetails
- ? {
- ...paymentDetails,
- engagementDetails,
- }
- : paymentDetails
- } catch {
- return paymentDetails
- }
+ return engagementDetails
+ ? {
+ ...paymentDetails,
+ engagementDetails,
+ }
+ : paymentDetails
}
export async function editPayment(updates: {
@@ -533,6 +589,59 @@ export async function removePaymentProvider(type: string): Promise {
+ if (/^\d+$/.test(userRef)) {
+ const handleMap = await getMemberHandle([userRef])
+
+ return handleMap.get(parseInt(userRef, 10)) ?? userRef
+ }
+
+ return userRef
+}
+
+/**
+ * Loads challenge creator and budget approver handles for wallet-admin challenge
+ * payments from challenge-api.
+ *
+ * @param challengeId challenge id stored on the winning `externalId`.
+ * @returns `creatorHandle` from `createdBy` and `budgetApproverHandle` from
+ * `approvalApprovedBy`, each resolved to a member handle when needed.
+ * @remarks Challenge payments should not use finance `paymentCreatorHandle`
+ * because finance can return a client id instead of the creator handle.
+ */
+export async function fetchChallengePaymentSummary(
+ challengeId: string,
+): Promise {
+ const normalizedChallengeId = normalizeOptionalString(challengeId)
+
+ if (!normalizedChallengeId) {
+ return {}
+ }
+
+ try {
+ const challenge = await xhrGetAsync(
+ `${challengeApiBaseUrl}/${normalizedChallengeId}`,
+ challengeApiXhr,
+ )
+ const createdBy = normalizeOptionalString(challenge.createdBy)
+ const approvalApprovedBy = normalizeOptionalString(challenge.approvalApprovedBy)
+
+ const [creatorHandle, budgetApproverHandle] = await Promise.all([
+ createdBy ? resolveUserRefAsMemberHandle(createdBy) : Promise.resolve(undefined),
+ approvalApprovedBy
+ ? resolveUserRefAsMemberHandle(approvalApprovedBy)
+ : Promise.resolve(undefined),
+ ])
+
+ return {
+ budgetApproverHandle,
+ creatorHandle,
+ }
+ } catch {
+ return {}
+ }
+}
+
export async function getMemberHandle(userIds: string[]): Promise> {
const BATCH_SIZE = 50
diff --git a/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx b/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx
index 850d83202..8307c9e54 100644
--- a/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx
+++ b/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx
@@ -4,6 +4,7 @@ import React, { FC, useCallback, useEffect } from 'react'
import { Collapsible, LoadingCircles } from '~/libs/ui'
import { UserProfile } from '~/libs/core'
+import { toPaymentTypeCategories } from '~/libs/shared/lib/utils/payment-type-filter.utils'
import { getPayments } from '../../../lib/services/wallet'
import { Winning, WinningDetail } from '../../../lib/models/WinningDetail'
@@ -163,12 +164,22 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
const fetchWinnings = useCallback(async () => {
setIsLoading(true)
try {
- const payments = await getPayments(props.profile.userId.toString(), pagination.pageSize, (pagination.currentPage - 1) * pagination.pageSize, filters)
+ const apiFilters = { ...filters }
+ if (apiFilters.category?.length) {
+ apiFilters.category = toPaymentTypeCategories(apiFilters.category)
+ }
+
+ const payments = await getPayments(
+ props.profile.userId.toString(),
+ pagination.pageSize,
+ (pagination.currentPage - 1) * pagination.pageSize,
+ apiFilters,
+ )
const winningsData = convertToWinnings(payments.winnings)
setWinnings(winningsData)
setPagination(payments.pagination)
- } catch (apiError) {
- console.error('Failed to fetch winnings:', apiError)
+ } catch {
+ setWinnings([])
} finally {
setIsLoading(false)
}
@@ -221,28 +232,30 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
type: 'dropdown',
},
{
+ displayValueInTrigger: true,
+
key: 'category',
label: 'Type',
options: [
{
label: 'Task Payment',
- value: 'TASK_PAYMENT',
+ value: 'Task',
},
{
label: 'Contest Payment',
- value: 'CONTEST_PAYMENT',
+ value: 'Contest',
},
{
label: 'Copilot Payment',
- value: 'COPILOT_PAYMENT',
+ value: 'Copilot',
},
{
label: 'Review Board Payment',
- value: 'REVIEW_BOARD_PAYMENT',
+ value: 'Review Board',
},
{
label: 'Engagement Payment',
- value: 'ENGAGEMENT_PAYMENT',
+ value: 'Engagement',
},
{
label: 'All',
diff --git a/src/apps/wallet/src/lib/components/filter-bar/FilterBar.tsx b/src/apps/wallet/src/lib/components/filter-bar/FilterBar.tsx
index b82ae5a5c..035946632 100644
--- a/src/apps/wallet/src/lib/components/filter-bar/FilterBar.tsx
+++ b/src/apps/wallet/src/lib/components/filter-bar/FilterBar.tsx
@@ -15,6 +15,7 @@ type Filter = {
key: string
label: string
type: 'input' | 'dropdown' | 'member_autocomplete'
+ displayValueInTrigger?: boolean
options?: FilterOptions[]
}
@@ -31,7 +32,7 @@ const FilterBar: React.FC = (props: FilterBarProps) => {
) {
setSelectedValue(new Map(selectedValue.set(filter.key, event.target.value)))
props.onFilterChange(filter.key, [event.target.value])
@@ -39,6 +40,7 @@ const FilterBar: React.FC = (props: FilterBarProps) => {
name={filter.key}
label={filter.label}
dirty
+ displayValueInTrigger={filter.displayValueInTrigger}
placeholder={filter.label}
/>
)
diff --git a/src/libs/shared/lib/utils/index.ts b/src/libs/shared/lib/utils/index.ts
index 9ffcb9309..ebdebdc1b 100644
--- a/src/libs/shared/lib/utils/index.ts
+++ b/src/libs/shared/lib/utils/index.ts
@@ -6,3 +6,4 @@ export * from './industry'
export * from './rich-text'
export * from './string'
export * from './text-format'
+export * from './payment-type-filter.utils'
diff --git a/src/libs/shared/lib/utils/payment-type-filter.utils.ts b/src/libs/shared/lib/utils/payment-type-filter.utils.ts
new file mode 100644
index 000000000..99911c510
--- /dev/null
+++ b/src/libs/shared/lib/utils/payment-type-filter.utils.ts
@@ -0,0 +1,20 @@
+export const PAYMENT_TYPE_CATEGORY_BY_FILTER_VALUE: Record = {
+ Contest: 'CONTEST_PAYMENT',
+ Copilot: 'COPILOT_PAYMENT',
+ Engagement: 'ENGAGEMENT_PAYMENT',
+ 'Review Board': 'REVIEW_BOARD_PAYMENT',
+ Task: 'TASK_PAYMENT',
+}
+
+export const PAYMENT_TYPE_FILTER_VALUE_BY_CATEGORY: Record = Object.fromEntries(
+ Object.entries(PAYMENT_TYPE_CATEGORY_BY_FILTER_VALUE)
+ .map(([filterValue, category]) => [category, filterValue]),
+)
+
+export function toPaymentTypeFilterValues(categories: string[]): string[] {
+ return categories.map(category => PAYMENT_TYPE_FILTER_VALUE_BY_CATEGORY[category] ?? category)
+}
+
+export function toPaymentTypeCategories(filterValues: string[]): string[] {
+ return filterValues.map(value => PAYMENT_TYPE_CATEGORY_BY_FILTER_VALUE[value] ?? value)
+}
diff --git a/src/libs/ui/lib/components/form/form-groups/form-input/input-select/InputSelect.tsx b/src/libs/ui/lib/components/form/form-groups/form-input/input-select/InputSelect.tsx
index c94fc36c9..a4a7b9f01 100644
--- a/src/libs/ui/lib/components/form/form-groups/form-input/input-select/InputSelect.tsx
+++ b/src/libs/ui/lib/components/form/form-groups/form-input/input-select/InputSelect.tsx
@@ -43,6 +43,7 @@ interface InputSelectProps {
readonly tabIndex?: number
readonly value?: string
readonly classNameWrapper?: string
+ readonly displayValueInTrigger?: boolean
readonly preventAutoFocus?: boolean
}
@@ -76,10 +77,27 @@ const InputSelect: FC = (props: InputSelectProps) => {
const selectedOption: InputSelectOption | undefined = props.options.find(option => option.value === props.value)
- const label: (option: InputSelectOption) => ReactNode = (option?: InputSelectOption) => (
+ const menuLabel: (option: InputSelectOption) => ReactNode = (option?: InputSelectOption) => (
option ? option.label ?? option.value : ''
)
+ const triggerLabel: (option?: InputSelectOption) => ReactNode = (option?: InputSelectOption) => {
+ if (!option) {
+ return ''
+ }
+
+ if (
+ props.displayValueInTrigger
+ && option.label !== undefined
+ && option.value
+ && option.value !== option.label
+ ) {
+ return option.value
+ }
+
+ return menuLabel(option)
+ }
+
const toggleMenu = (toggle?: boolean): void => {
setTimeout(setMenuIsVisible, 150, (wasVisible: boolean) => {
const isVisible = typeof toggle === 'boolean' ? toggle : !wasVisible
@@ -170,7 +188,7 @@ const InputSelect: FC = (props: InputSelectProps) => {
ref={buttonRef}
>
- {selectedOption ? label(selectedOption) : ''}
+ {selectedOption ? triggerLabel(selectedOption) : ''}
{!selectedOption && !!props.placeholder
@@ -204,7 +222,7 @@ const InputSelect: FC = (props: InputSelectProps) => {
onClick={select(option)}
key={option.value}
>
- {label(option)}
+ {menuLabel(option)}
))}
From 58a3e13de484f0f6ff389aafe11e22c994249c87 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 14:36:31 +0530
Subject: [PATCH 21/56] fix linting errors
---
.../payment-view/PaymentDetailsSummaryRow.tsx | 3 +-
.../payment-view/PaymentDetailsTabs.tsx | 1 +
.../payment-view/PaymentView.spec.tsx | 28 +++++++++++--------
.../components/payment-view/PaymentView.tsx | 18 ++++++------
.../tabs/PaymentAuditHistoryTab.tsx | 1 -
.../tabs/PaymentEngagementDetailsTab.tsx | 5 ++--
.../tabs/PaymentGeneralInfoTab.tsx | 1 -
.../tabs/PaymentTaskDetailsTab.tsx | 1 -
.../payment-view/tabs/PaymentWorkLogTab.tsx | 1 -
9 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx
index 4a4d3358f..49d158af3 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsSummaryRow.tsx
@@ -1,8 +1,7 @@
-import classNames from 'classnames'
import { FC } from 'react'
+import classNames from 'classnames'
import { formatCurrencyAmount, formatOptionalText } from './payment-view.utils'
-
import styles from './PaymentView.module.scss'
interface PaymentDetailsSummaryRowProps {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx
index 375746257..91d116cd0 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentDetailsTabs.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable react/jsx-no-bind */
import { FC } from 'react'
import classNames from 'classnames'
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
index ab9606e6e..0f1b866ae 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
@@ -103,10 +103,10 @@ describe('PaymentView', () => {
billingStartDate: '2026-02-16T00:00:00.000Z',
durationMonths: 12,
engagementId: 'engagement-456',
+ paymentApproverHandle: 'TonyJ',
paymentCycle: 'weekly',
projectId: 'project-789',
projectName: 'Test Project Engagement BA',
- paymentApproverHandle: 'TonyJ',
ratePerHour: '50',
standardHoursPerDay: 8,
},
@@ -241,21 +241,27 @@ describe('PaymentView', () => {
const taskDetailsPanel = screen.getByRole('tabpanel')
- expect(within(taskDetailsPanel).getByText('Task Creator'))
+ expect(within(taskDetailsPanel)
+ .getByText('Task Creator'))
.toBeTruthy()
- expect(within(taskDetailsPanel).getByText('wendell'))
+ expect(within(taskDetailsPanel)
+ .getByText('wendell'))
.toBeTruthy()
- expect(within(taskDetailsPanel).getByText('Project Name'))
+ expect(within(taskDetailsPanel)
+ .getByText('Project Name'))
.toBeTruthy()
- expect(within(taskDetailsPanel).getByText('Task Description'))
+ expect(within(taskDetailsPanel)
+ .getByText('Task Description'))
.toBeTruthy()
- expect(within(taskDetailsPanel).getByText(
- 'Deliver clean, production-ready HTML, CSS, and JavaScript.',
- ))
+ expect(within(taskDetailsPanel)
+ .getByText(
+ 'Deliver clean, production-ready HTML, CSS, and JavaScript.',
+ ))
.toBeTruthy()
- const projectLink = within(taskDetailsPanel).getByRole('link', {
- name: 'General Electric Front End Task',
- })
+ const projectLink = within(taskDetailsPanel)
+ .getByRole('link', {
+ name: 'General Electric Front End Task',
+ })
expect(projectLink.getAttribute('href'))
.toBe('https://challenges.example.com/projects/42')
})
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index fd8a3c9b0..860f19fbf 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -12,14 +12,7 @@ import {
fetchWinningPaymentDetails,
getMemberHandle,
} from '../../services/wallet'
-import PaymentAgreementBanner from './PaymentAgreementBanner'
-import PaymentDetailsSummaryRow from './PaymentDetailsSummaryRow'
-import PaymentDetailsTabs, { PaymentDetailsTabOption } from './PaymentDetailsTabs'
-import PaymentAuditHistoryTab from './tabs/PaymentAuditHistoryTab'
-import PaymentEngagementDetailsTab from './tabs/PaymentEngagementDetailsTab'
-import PaymentGeneralInfoTab from './tabs/PaymentGeneralInfoTab'
-import PaymentTaskDetailsTab from './tabs/PaymentTaskDetailsTab'
-import PaymentWorkLogTab from './tabs/PaymentWorkLogTab'
+
import {
buildWorkAppChallengeUrl,
buildWorkManagerAssignmentUrl,
@@ -30,7 +23,14 @@ import {
resolvePaymentApproverHandle,
resolveTaskCreatorHandle,
} from './payment-view.utils'
-
+import PaymentAgreementBanner from './PaymentAgreementBanner'
+import PaymentAuditHistoryTab from './tabs/PaymentAuditHistoryTab'
+import PaymentDetailsSummaryRow from './PaymentDetailsSummaryRow'
+import PaymentDetailsTabs, { PaymentDetailsTabOption } from './PaymentDetailsTabs'
+import PaymentEngagementDetailsTab from './tabs/PaymentEngagementDetailsTab'
+import PaymentGeneralInfoTab from './tabs/PaymentGeneralInfoTab'
+import PaymentTaskDetailsTab from './tabs/PaymentTaskDetailsTab'
+import PaymentWorkLogTab from './tabs/PaymentWorkLogTab'
import styles from './PaymentView.module.scss'
interface PaymentViewProps {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx
index ab84f6c13..345515341 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentAuditHistoryTab.tsx
@@ -2,7 +2,6 @@ import { FC, ReactNode } from 'react'
import { WinningsAudit } from '../../../models/WinningsAudit'
import { formatAuditTimestamp } from '../payment-view.utils'
-
import styles from '../PaymentView.module.scss'
interface PaymentAuditHistoryTabProps {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx
index ee052a263..15f405932 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentEngagementDetailsTab.tsx
@@ -8,7 +8,6 @@ import {
getEngagementHoursPerDay,
renderOptionalLinkedText,
} from '../payment-view.utils'
-
import styles from '../PaymentView.module.scss'
interface PaymentEngagementDetailsTabProps {
@@ -77,7 +76,9 @@ const PaymentEngagementDetailsTab: FC = (
Duration
{props.engagementDetails.durationMonths
- ? `${props.engagementDetails.durationMonths} month${props.engagementDetails.durationMonths === 1 ? '' : 's'}`
+ ? `${props.engagementDetails.durationMonths} month${
+ props.engagementDetails.durationMonths === 1 ? '' : 's'
+ }`
: '-'}
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx
index 0b8ed2fcc..78e932629 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentGeneralInfoTab.tsx
@@ -1,7 +1,6 @@
import { FC } from 'react'
import { Winning } from '../../../models/WinningDetail'
-
import styles from '../PaymentView.module.scss'
interface PaymentGeneralInfoTabProps {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
index 855c6b2ed..14df8ceb8 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
@@ -2,7 +2,6 @@ import { FC } from 'react'
import { Winning, WinningPaymentDetails } from '../../../models/WinningDetail'
import { formatOptionalText, resolveTaskCreatorHandle } from '../payment-view.utils'
-
import styles from '../PaymentView.module.scss'
interface PaymentTaskDetailsTabProps {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx
index 21d75f898..6284f63d7 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentWorkLogTab.tsx
@@ -2,7 +2,6 @@ import { FC } from 'react'
import { PaymentWorkLog } from '../../../models/WinningDetail'
import { formatOptionalText, renderOptionalLinkedText } from '../payment-view.utils'
-
import styles from '../PaymentView.module.scss'
interface PaymentWorkLogTabProps {
From 3043abf690d8f4ec84ab3270574676ededd1938c Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 16:39:50 +0530
Subject: [PATCH 22/56] yarn lock
---
yarn.lock | 2916 +++++++++++++++++++++++++++--------------------------
1 file changed, 1464 insertions(+), 1452 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index cfdce4785..6c45456e0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13,12 +13,11 @@
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
"@apideck/better-ajv-errors@^0.3.1":
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097"
- integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.7.tgz#89238f689d81a644139a47e0ebc2e236bca1ff2c"
+ integrity sha512-TajUJwGWbDwkCx/CZi7tRE8PVB7simCvKJfHUsSdvps+aTM/PDPP4gkLmKnc+x3CE//y9i/nj74GqdL/hwk7Iw==
dependencies:
- json-schema "^0.4.0"
- jsonpointer "^5.0.0"
+ jsonpointer "^5.0.1"
leven "^3.1.0"
"@aw-web-design/x-default-browser@1.4.126":
@@ -28,34 +27,34 @@
dependencies:
default-browser-id "3.0.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.8.3":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
- integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0", "@babel/code-frame@^7.8.3":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c"
+ integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==
dependencies:
- "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.28.5"
js-tokens "^4.0.0"
picocolors "^1.1.1"
-"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f"
- integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==
+"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.3":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.3.tgz#e3f5347f0589596c91d227ccb6a541d37fb1307b"
+ integrity sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==
"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.18.9", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.28.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e"
- integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==
- dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.5"
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-module-transforms" "^7.28.3"
- "@babel/helpers" "^7.28.4"
- "@babel/parser" "^7.28.5"
- "@babel/template" "^7.27.2"
- "@babel/traverse" "^7.28.5"
- "@babel/types" "^7.28.5"
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322"
+ integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==
+ dependencies:
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helpers" "^7.28.6"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
+ "@babel/types" "^7.29.0"
"@jridgewell/remapping" "^2.3.5"
convert-source-map "^2.0.0"
debug "^4.1.0"
@@ -64,21 +63,21 @@
semver "^6.3.1"
"@babel/eslint-parser@^7.16.3":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz#0b8883a4a1c2cbed7b3cd9d7765d80e8f480b9ae"
- integrity sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz#6a294a4add732ebe7ded8a8d2792dd03dd81dc3f"
+ integrity sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
-"@babel/generator@^7.23.0", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298"
- integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==
+"@babel/generator@^7.23.0", "@babel/generator@^7.29.0", "@babel/generator@^7.7.2":
+ version "7.29.1"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50"
+ integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==
dependencies:
- "@babel/parser" "^7.28.5"
- "@babel/types" "^7.28.5"
+ "@babel/parser" "^7.29.0"
+ "@babel/types" "^7.29.0"
"@jridgewell/gen-mapping" "^0.3.12"
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
@@ -90,31 +89,31 @@
dependencies:
"@babel/types" "^7.27.3"
-"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d"
- integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==
+"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
+ integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
dependencies:
- "@babel/compat-data" "^7.27.2"
+ "@babel/compat-data" "^7.28.6"
"@babel/helper-validator-option" "^7.27.1"
browserslist "^4.24.0"
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3", "@babel/helper-create-class-features-plugin@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46"
- integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.28.6":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz#67328947d956f06fc7b48def269bf0489155fd42"
+ integrity sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
"@babel/helper-member-expression-to-functions" "^7.28.5"
"@babel/helper-optimise-call-expression" "^7.27.1"
- "@babel/helper-replace-supers" "^7.27.1"
+ "@babel/helper-replace-supers" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
- "@babel/traverse" "^7.28.5"
+ "@babel/traverse" "^7.29.0"
semver "^6.3.1"
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1":
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997"
integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==
@@ -123,23 +122,23 @@
regexpu-core "^6.3.1"
semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.6.5":
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753"
- integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==
+"@babel/helper-define-polyfill-provider@^0.6.5", "@babel/helper-define-polyfill-provider@^0.6.8":
+ version "0.6.8"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz#cf1e4462b613f2b54c41e6ff758d5dfcaa2c85d1"
+ integrity sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==
dependencies:
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
- debug "^4.4.1"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ debug "^4.4.3"
lodash.debounce "^4.0.8"
- resolve "^1.22.10"
+ resolve "^1.22.11"
"@babel/helper-globals@^7.28.0":
version "7.28.0"
resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674"
integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
-"@babel/helper-member-expression-to-functions@^7.27.1", "@babel/helper-member-expression-to-functions@^7.28.5":
+"@babel/helper-member-expression-to-functions@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz#f3e07a10be37ed7a63461c63e6929575945a6150"
integrity sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==
@@ -147,22 +146,22 @@
"@babel/traverse" "^7.28.5"
"@babel/types" "^7.28.5"
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
- integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
+ integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
dependencies:
- "@babel/traverse" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6"
- integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==
+"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e"
+ integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-validator-identifier" "^7.27.1"
- "@babel/traverse" "^7.28.3"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-validator-identifier" "^7.28.5"
+ "@babel/traverse" "^7.28.6"
"@babel/helper-optimise-call-expression@^7.27.1":
version "7.27.1"
@@ -171,10 +170,10 @@
dependencies:
"@babel/types" "^7.27.1"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
- integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8"
+ integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==
"@babel/helper-remap-async-to-generator@^7.27.1":
version "7.27.1"
@@ -185,14 +184,14 @@
"@babel/helper-wrap-function" "^7.27.1"
"@babel/traverse" "^7.27.1"
-"@babel/helper-replace-supers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0"
- integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==
+"@babel/helper-replace-supers@^7.27.1", "@babel/helper-replace-supers@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44"
+ integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==
dependencies:
- "@babel/helper-member-expression-to-functions" "^7.27.1"
+ "@babel/helper-member-expression-to-functions" "^7.28.5"
"@babel/helper-optimise-call-expression" "^7.27.1"
- "@babel/traverse" "^7.27.1"
+ "@babel/traverse" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1":
version "7.27.1"
@@ -207,7 +206,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5":
+"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
@@ -218,28 +217,28 @@
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
"@babel/helper-wrap-function@^7.27.1":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz#fe4872092bc1438ffd0ce579e6f699609f9d0a7a"
- integrity sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz#4e349ff9222dab69a93a019cc296cdd8442e279a"
+ integrity sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==
dependencies:
- "@babel/template" "^7.27.2"
- "@babel/traverse" "^7.28.3"
- "@babel/types" "^7.28.2"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/helpers@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827"
- integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==
+"@babel/helpers@^7.28.6":
+ version "7.29.2"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.2.tgz#9cfbccb02b8e229892c0b07038052cc1a8709c49"
+ integrity sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==
dependencies:
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.4"
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.29.0"
-"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08"
- integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==
+"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.3.tgz#116f70a77958307fceac27747573032f8a62f88e"
+ integrity sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==
dependencies:
- "@babel/types" "^7.28.5"
+ "@babel/types" "^7.29.0"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5":
version "7.28.5"
@@ -263,6 +262,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
+"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@^7.29.3":
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz#2e14f9335803d892ccb67ef487e23cf9726156fe"
+ integrity sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
+
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd"
@@ -272,13 +279,13 @@
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
"@babel/plugin-transform-optional-chaining" "^7.27.1"
-"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a"
- integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f"
+ integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/traverse" "^7.28.3"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
"@babel/plugin-proposal-class-properties@^7.16.0":
version "7.18.6"
@@ -289,13 +296,13 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-proposal-decorators@^7.16.4":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.0.tgz#419c8acc31088e05a774344c021800f7ddc39bf0"
- integrity sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz#d159f26f78740e47bf3ef075882b155b2d54ca81"
+ integrity sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-syntax-decorators" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-syntax-decorators" "^7.28.6"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0":
version "7.18.6"
@@ -373,33 +380,33 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.27.1.tgz#ee7dd9590aeebc05f9d4c8c0560007b05979a63d"
- integrity sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==
+"@babel/plugin-syntax-decorators@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.28.6.tgz#8c3293a0fef033e4c786b35ce1e159fc1d676153"
+ integrity sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-flow@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz#6c83cf0d7d635b716827284b7ecd5aead9237662"
- integrity sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz#447559a225e66c4cd477a3ffb1a74d8c1fe25a62"
+ integrity sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-syntax-import-assertions@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd"
- integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==
+"@babel/plugin-syntax-import-assertions@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507"
+ integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07"
- integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==
+"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503"
+ integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-import-meta@^7.10.4":
version "7.10.4"
@@ -415,12 +422,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"
- integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6", "@babel/plugin-syntax-jsx@^7.7.2":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee"
+ integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
@@ -478,12 +485,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-typescript@^7.27.1", "@babel/plugin-syntax-typescript@^7.7.2":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18"
- integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==
+"@babel/plugin-syntax-typescript@^7.28.6", "@babel/plugin-syntax-typescript@^7.7.2":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2"
+ integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
version "7.18.6"
@@ -500,22 +507,22 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-async-generator-functions@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2"
- integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==
+"@babel/plugin-transform-async-generator-functions@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f"
+ integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-remap-async-to-generator" "^7.27.1"
- "@babel/traverse" "^7.28.0"
+ "@babel/traverse" "^7.29.0"
-"@babel/plugin-transform-async-to-generator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7"
- integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==
+"@babel/plugin-transform-async-to-generator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77"
+ integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-remap-async-to-generator" "^7.27.1"
"@babel/plugin-transform-block-scoped-functions@^7.27.1":
@@ -525,50 +532,50 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-block-scoping@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6"
- integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==
+"@babel/plugin-transform-block-scoping@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99"
+ integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925"
- integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==
+"@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72"
+ integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-class-static-block@^7.28.3":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852"
- integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==
+"@babel/plugin-transform-class-static-block@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70"
+ integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.28.3"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-classes@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c"
- integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==
+"@babel/plugin-transform-classes@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7"
+ integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
- "@babel/helper-compilation-targets" "^7.27.2"
+ "@babel/helper-compilation-targets" "^7.28.6"
"@babel/helper-globals" "^7.28.0"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/helper-replace-supers" "^7.27.1"
- "@babel/traverse" "^7.28.4"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/helper-replace-supers" "^7.28.6"
+ "@babel/traverse" "^7.28.6"
-"@babel/plugin-transform-computed-properties@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa"
- integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==
+"@babel/plugin-transform-computed-properties@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2"
+ integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/template" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/template" "^7.28.6"
-"@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5":
+"@babel/plugin-transform-destructuring@^7.28.5":
version "7.28.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7"
integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==
@@ -576,13 +583,13 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/traverse" "^7.28.5"
-"@babel/plugin-transform-dotall-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d"
- integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==
+"@babel/plugin-transform-dotall-regex@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61"
+ integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-duplicate-keys@^7.27.1":
version "7.27.1"
@@ -591,13 +598,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec"
- integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==
+"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1"
+ integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-dynamic-import@^7.27.1":
version "7.27.1"
@@ -606,20 +613,20 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-explicit-resource-management@^7.28.0":
- version "7.28.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a"
- integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==
+"@babel/plugin-transform-explicit-resource-management@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7"
+ integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-transform-destructuring" "^7.28.0"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-transform-destructuring" "^7.28.5"
-"@babel/plugin-transform-exponentiation-operator@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe"
- integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==
+"@babel/plugin-transform-exponentiation-operator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091"
+ integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-export-namespace-from@^7.27.1":
version "7.27.1"
@@ -653,12 +660,12 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/traverse" "^7.27.1"
-"@babel/plugin-transform-json-strings@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c"
- integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==
+"@babel/plugin-transform-json-strings@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038"
+ integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-literals@^7.27.1":
version "7.27.1"
@@ -667,12 +674,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-logical-assignment-operators@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e"
- integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==
+"@babel/plugin-transform-logical-assignment-operators@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605"
+ integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-member-expression-literals@^7.27.1":
version "7.27.1"
@@ -689,23 +696,23 @@
"@babel/helper-module-transforms" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832"
- integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==
+"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1"
+ integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==
dependencies:
- "@babel/helper-module-transforms" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-modules-systemjs@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2"
- integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==
+"@babel/plugin-transform-modules-systemjs@^7.29.4":
+ version "7.29.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz#f621105da99919c15cf4bde6fcc7346ef95e7b20"
+ integrity sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==
dependencies:
- "@babel/helper-module-transforms" "^7.28.3"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-validator-identifier" "^7.28.5"
- "@babel/traverse" "^7.28.5"
+ "@babel/traverse" "^7.29.0"
"@babel/plugin-transform-modules-umd@^7.27.1":
version "7.27.1"
@@ -715,13 +722,13 @@
"@babel/helper-module-transforms" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1"
- integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a"
+ integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-new-target@^7.27.1":
version "7.27.1"
@@ -730,30 +737,30 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d"
- integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==
+"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757"
+ integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-numeric-separator@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6"
- integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==
+"@babel/plugin-transform-numeric-separator@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f"
+ integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-object-rest-spread@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d"
- integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==
+"@babel/plugin-transform-object-rest-spread@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7"
+ integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==
dependencies:
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-transform-destructuring" "^7.28.0"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-transform-destructuring" "^7.28.5"
"@babel/plugin-transform-parameters" "^7.27.7"
- "@babel/traverse" "^7.28.4"
+ "@babel/traverse" "^7.28.6"
"@babel/plugin-transform-object-super@^7.27.1":
version "7.27.1"
@@ -763,19 +770,19 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/helper-replace-supers" "^7.27.1"
-"@babel/plugin-transform-optional-catch-binding@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c"
- integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==
+"@babel/plugin-transform-optional-catch-binding@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c"
+ integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26"
- integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==
+"@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd"
+ integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
"@babel/plugin-transform-parameters@^7.27.7":
@@ -785,22 +792,22 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af"
- integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==
+"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411"
+ integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-private-property-in-object@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11"
- integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==
+"@babel/plugin-transform-private-property-in-object@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811"
+ integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.27.1"
- "@babel/helper-create-class-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-annotate-as-pure" "^7.27.3"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-property-literals@^7.27.1":
version "7.27.1"
@@ -831,15 +838,15 @@
"@babel/plugin-transform-react-jsx" "^7.27.1"
"@babel/plugin-transform-react-jsx@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0"
- integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz#f51cb70a90b9529fbb71ee1f75ea27b7078eed62"
+ integrity sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.27.1"
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
- "@babel/plugin-syntax-jsx" "^7.27.1"
- "@babel/types" "^7.27.1"
+ "@babel/helper-annotate-as-pure" "^7.27.3"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
+ "@babel/plugin-syntax-jsx" "^7.28.6"
+ "@babel/types" "^7.28.6"
"@babel/plugin-transform-react-pure-annotations@^7.27.1":
version "7.27.1"
@@ -849,20 +856,20 @@
"@babel/helper-annotate-as-pure" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-regenerator@^7.28.4":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51"
- integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==
+"@babel/plugin-transform-regenerator@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b"
+ integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
-"@babel/plugin-transform-regexp-modifiers@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09"
- integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==
+"@babel/plugin-transform-regexp-modifiers@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b"
+ integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-reserved-words@^7.27.1":
version "7.27.1"
@@ -872,12 +879,12 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-runtime@^7.16.4", "@babel/plugin-transform-runtime@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz#ae3e21fbefe2831ebac04dfa6b463691696afe17"
- integrity sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz#a5fded13cc656700804bfd6e5ebd7fffd5266803"
+ integrity sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==
dependencies:
- "@babel/helper-module-imports" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
babel-plugin-polyfill-corejs2 "^0.4.14"
babel-plugin-polyfill-corejs3 "^0.13.0"
babel-plugin-polyfill-regenerator "^0.6.5"
@@ -890,12 +897,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-spread@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08"
- integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==
+"@babel/plugin-transform-spread@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6"
+ integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==
dependencies:
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
"@babel/plugin-transform-sticky-regex@^7.27.1":
@@ -920,15 +927,15 @@
"@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-transform-typescript@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz#441c5f9a4a1315039516c6c612fc66d5f4594e72"
- integrity sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz#1e93d96da8adbefdfdade1d4956f73afa201a158"
+ integrity sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.3"
- "@babel/helper-create-class-features-plugin" "^7.28.5"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-class-features-plugin" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
- "@babel/plugin-syntax-typescript" "^7.27.1"
+ "@babel/plugin-syntax-typescript" "^7.28.6"
"@babel/plugin-transform-unicode-escapes@^7.27.1":
version "7.27.1"
@@ -937,13 +944,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-unicode-property-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956"
- integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==
+"@babel/plugin-transform-unicode-property-regex@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821"
+ integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/plugin-transform-unicode-regex@^7.27.1":
version "7.27.1"
@@ -953,88 +960,89 @@
"@babel/helper-create-regexp-features-plugin" "^7.27.1"
"@babel/helper-plugin-utils" "^7.27.1"
-"@babel/plugin-transform-unicode-sets-regex@^7.27.1":
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1"
- integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==
+"@babel/plugin-transform-unicode-sets-regex@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e"
+ integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.27.1"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin" "^7.28.5"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.23.2", "@babel/preset-env@^7.28.5":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0"
- integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==
+ version "7.29.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.5.tgz#c48b7ed94582c8b685e21b8b42de8633ec289268"
+ integrity sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==
dependencies:
- "@babel/compat-data" "^7.28.5"
- "@babel/helper-compilation-targets" "^7.27.2"
- "@babel/helper-plugin-utils" "^7.27.1"
+ "@babel/compat-data" "^7.29.3"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-plugin-utils" "^7.28.6"
"@babel/helper-validator-option" "^7.27.1"
"@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5"
"@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1"
+ "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array" "^7.29.3"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1"
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3"
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6"
"@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
- "@babel/plugin-syntax-import-assertions" "^7.27.1"
- "@babel/plugin-syntax-import-attributes" "^7.27.1"
+ "@babel/plugin-syntax-import-assertions" "^7.28.6"
+ "@babel/plugin-syntax-import-attributes" "^7.28.6"
"@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
"@babel/plugin-transform-arrow-functions" "^7.27.1"
- "@babel/plugin-transform-async-generator-functions" "^7.28.0"
- "@babel/plugin-transform-async-to-generator" "^7.27.1"
+ "@babel/plugin-transform-async-generator-functions" "^7.29.0"
+ "@babel/plugin-transform-async-to-generator" "^7.28.6"
"@babel/plugin-transform-block-scoped-functions" "^7.27.1"
- "@babel/plugin-transform-block-scoping" "^7.28.5"
- "@babel/plugin-transform-class-properties" "^7.27.1"
- "@babel/plugin-transform-class-static-block" "^7.28.3"
- "@babel/plugin-transform-classes" "^7.28.4"
- "@babel/plugin-transform-computed-properties" "^7.27.1"
+ "@babel/plugin-transform-block-scoping" "^7.28.6"
+ "@babel/plugin-transform-class-properties" "^7.28.6"
+ "@babel/plugin-transform-class-static-block" "^7.28.6"
+ "@babel/plugin-transform-classes" "^7.28.6"
+ "@babel/plugin-transform-computed-properties" "^7.28.6"
"@babel/plugin-transform-destructuring" "^7.28.5"
- "@babel/plugin-transform-dotall-regex" "^7.27.1"
+ "@babel/plugin-transform-dotall-regex" "^7.28.6"
"@babel/plugin-transform-duplicate-keys" "^7.27.1"
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1"
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0"
"@babel/plugin-transform-dynamic-import" "^7.27.1"
- "@babel/plugin-transform-explicit-resource-management" "^7.28.0"
- "@babel/plugin-transform-exponentiation-operator" "^7.28.5"
+ "@babel/plugin-transform-explicit-resource-management" "^7.28.6"
+ "@babel/plugin-transform-exponentiation-operator" "^7.28.6"
"@babel/plugin-transform-export-namespace-from" "^7.27.1"
"@babel/plugin-transform-for-of" "^7.27.1"
"@babel/plugin-transform-function-name" "^7.27.1"
- "@babel/plugin-transform-json-strings" "^7.27.1"
+ "@babel/plugin-transform-json-strings" "^7.28.6"
"@babel/plugin-transform-literals" "^7.27.1"
- "@babel/plugin-transform-logical-assignment-operators" "^7.28.5"
+ "@babel/plugin-transform-logical-assignment-operators" "^7.28.6"
"@babel/plugin-transform-member-expression-literals" "^7.27.1"
"@babel/plugin-transform-modules-amd" "^7.27.1"
- "@babel/plugin-transform-modules-commonjs" "^7.27.1"
- "@babel/plugin-transform-modules-systemjs" "^7.28.5"
+ "@babel/plugin-transform-modules-commonjs" "^7.28.6"
+ "@babel/plugin-transform-modules-systemjs" "^7.29.4"
"@babel/plugin-transform-modules-umd" "^7.27.1"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0"
"@babel/plugin-transform-new-target" "^7.27.1"
- "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1"
- "@babel/plugin-transform-numeric-separator" "^7.27.1"
- "@babel/plugin-transform-object-rest-spread" "^7.28.4"
+ "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6"
+ "@babel/plugin-transform-numeric-separator" "^7.28.6"
+ "@babel/plugin-transform-object-rest-spread" "^7.28.6"
"@babel/plugin-transform-object-super" "^7.27.1"
- "@babel/plugin-transform-optional-catch-binding" "^7.27.1"
- "@babel/plugin-transform-optional-chaining" "^7.28.5"
+ "@babel/plugin-transform-optional-catch-binding" "^7.28.6"
+ "@babel/plugin-transform-optional-chaining" "^7.28.6"
"@babel/plugin-transform-parameters" "^7.27.7"
- "@babel/plugin-transform-private-methods" "^7.27.1"
- "@babel/plugin-transform-private-property-in-object" "^7.27.1"
+ "@babel/plugin-transform-private-methods" "^7.28.6"
+ "@babel/plugin-transform-private-property-in-object" "^7.28.6"
"@babel/plugin-transform-property-literals" "^7.27.1"
- "@babel/plugin-transform-regenerator" "^7.28.4"
- "@babel/plugin-transform-regexp-modifiers" "^7.27.1"
+ "@babel/plugin-transform-regenerator" "^7.29.0"
+ "@babel/plugin-transform-regexp-modifiers" "^7.28.6"
"@babel/plugin-transform-reserved-words" "^7.27.1"
"@babel/plugin-transform-shorthand-properties" "^7.27.1"
- "@babel/plugin-transform-spread" "^7.27.1"
+ "@babel/plugin-transform-spread" "^7.28.6"
"@babel/plugin-transform-sticky-regex" "^7.27.1"
"@babel/plugin-transform-template-literals" "^7.27.1"
"@babel/plugin-transform-typeof-symbol" "^7.27.1"
"@babel/plugin-transform-unicode-escapes" "^7.27.1"
- "@babel/plugin-transform-unicode-property-regex" "^7.27.1"
+ "@babel/plugin-transform-unicode-property-regex" "^7.28.6"
"@babel/plugin-transform-unicode-regex" "^7.27.1"
- "@babel/plugin-transform-unicode-sets-regex" "^7.27.1"
+ "@babel/plugin-transform-unicode-sets-regex" "^7.28.6"
"@babel/preset-modules" "0.1.6-no-external-plugins"
- babel-plugin-polyfill-corejs2 "^0.4.14"
- babel-plugin-polyfill-corejs3 "^0.13.0"
- babel-plugin-polyfill-regenerator "^0.6.5"
- core-js-compat "^3.43.0"
+ babel-plugin-polyfill-corejs2 "^0.4.15"
+ babel-plugin-polyfill-corejs3 "^0.14.0"
+ babel-plugin-polyfill-regenerator "^0.6.6"
+ core-js-compat "^3.48.0"
semver "^6.3.1"
"@babel/preset-flow@^7.22.15":
@@ -1079,9 +1087,9 @@
"@babel/plugin-transform-typescript" "^7.28.5"
"@babel/register@^7.22.15":
- version "7.28.3"
- resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.28.3.tgz#abd8a3753480c799bdaf9c9092d6745d16e052c2"
- integrity sha512-CieDOtd8u208eI49bYl4z1J22ySFw87IGwE+IswFEExH7e3rLgKb0WNQeumnacQ1+VoDJLYI5QFA3AJZuyZQfA==
+ version "7.29.3"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.29.3.tgz#726233ed488d52bb67aa8fd0dc5cdf19d10a2584"
+ integrity sha512-F6C1KpIdoImKQfsD6HSxZ+mS4YY/2Q+JsqrmTC5ApVkTR2rG+nnbpjhWwzA5bDNu8mJjB3AryqDaWFLd4gCbJQ==
dependencies:
clone-deep "^4.0.1"
find-cache-dir "^2.0.0"
@@ -1089,42 +1097,37 @@
pirates "^4.0.6"
source-map-support "^0.5.16"
-"@babel/runtime@^7.10.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.26.7", "@babel/runtime@^7.28.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
- version "7.28.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326"
- integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==
+"@babel/runtime@^7.10.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.21.0", "@babel/runtime@^7.26.7", "@babel/runtime@^7.28.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+ version "7.29.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.29.2.tgz#9a6e2d05f4b6692e1801cd4fb176ad823930ed5e"
+ integrity sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==
-"@babel/runtime@^7.18.6":
+"@babel/template@^7.28.6", "@babel/template@^7.3.3":
version "7.28.6"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b"
- integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==
-
-"@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3":
- version "7.27.2"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
- integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57"
+ integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==
dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/parser" "^7.27.2"
- "@babel/types" "^7.27.1"
+ "@babel/code-frame" "^7.28.6"
+ "@babel/parser" "^7.28.6"
+ "@babel/types" "^7.28.6"
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b"
- integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a"
+ integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==
dependencies:
- "@babel/code-frame" "^7.27.1"
- "@babel/generator" "^7.28.5"
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
"@babel/helper-globals" "^7.28.0"
- "@babel/parser" "^7.28.5"
- "@babel/template" "^7.27.2"
- "@babel/types" "^7.28.5"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.29.0"
debug "^4.3.1"
-"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
- version "7.28.5"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b"
- integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==
+"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.23.0", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
+ integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.28.5"
@@ -1151,10 +1154,15 @@
resolved "https://registry.yarnpkg.com/@bedrock-layout/use-stateful-ref/-/use-stateful-ref-1.4.1.tgz#c543c61d15885e19506f068618a4d6427a5bf817"
integrity sha512-4eKO2KdQEXcR5LI4QcxqlJykJUDQJWDeWYAukIn6sRQYoabcfI5kDl61PUi6FR6o8VFgQ8IEP7HleKqWlSe8SQ==
+"@borewit/text-codec@^0.2.1":
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.2.2.tgz#75025f735c0983b3a871668804a57387e3649375"
+ integrity sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==
+
"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.20.1":
- version "6.20.1"
- resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz#4cfbc8b2e1e25f890ec34a081037e58b4e44143e"
- integrity sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==
+ version "6.20.2"
+ resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.20.2.tgz#36200d33f3e403ef4f76cf67b4cc7ec560e61c7b"
+ integrity sha512-G5FPkgIiLjOgZMjqVjvuKQ1rGPtHogLldJr33eFJdVLtmwY+giGrlv/ewljLz6b9BSQLkjxuwBc6g6omDM+YxQ==
dependencies:
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.0.0"
@@ -1180,9 +1188,9 @@
"@lezer/java" "^1.0.0"
"@codemirror/language@^6.0.0", "@codemirror/language@^6.12.2":
- version "6.12.2"
- resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.2.tgz#7db5a46757411cf251e8f450474c05710c27d42c"
- integrity sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==
+ version "6.12.3"
+ resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.3.tgz#0b220182973a4c19850b29f7dd82aec1bbae3d7e"
+ integrity sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.23.0"
@@ -1192,18 +1200,18 @@
style-mod "^4.0.0"
"@codemirror/lint@^6.0.0", "@codemirror/lint@^6.9.5":
- version "6.9.5"
- resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.5.tgz#c7da006f3335a33014799a7375c82df558e89f90"
- integrity sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA==
+ version "6.9.6"
+ resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.6.tgz#eae25d5dfac28595521a2b38ebad223f14b7b6d1"
+ integrity sha512-6Kp7r6XfCi/D/5sdXieMfg9pJU1bUEx96WITuLU6ESaKizCz0QHFMjY/TaFSbigDdEAIgi93itLBIUETP4oK+A==
dependencies:
"@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.35.0"
+ "@codemirror/view" "^6.42.0"
crelt "^1.0.5"
"@codemirror/search@^6.0.0", "@codemirror/search@^6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.6.0.tgz#3b83a1e35391e1575a83a3b485e3f95263ddaa0b"
- integrity sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.7.0.tgz#c6bea0ab0e882395d03a760b1a7d3959b1f3a4ac"
+ integrity sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.37.0"
@@ -1226,10 +1234,10 @@
"@codemirror/view" "^6.0.0"
"@lezer/highlight" "^1.0.0"
-"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.37.0", "@codemirror/view@^6.40.0":
- version "6.40.0"
- resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.40.0.tgz#97198fd717ebf471ef594a5bd557a9f2d1d4d165"
- integrity sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg==
+"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.37.0", "@codemirror/view@^6.40.0", "@codemirror/view@^6.42.0":
+ version "6.43.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.43.0.tgz#a577da65f1d5d8f7cbf08e14849284c12f38365a"
+ integrity sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==
dependencies:
"@codemirror/state" "^6.6.0"
crelt "^1.0.6"
@@ -1404,24 +1412,24 @@
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
"@emnapi/core@^1.4.3":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.7.1.tgz#3a79a02dbc84f45884a1806ebb98e5746bdfaac4"
- integrity sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467"
+ integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==
dependencies:
- "@emnapi/wasi-threads" "1.1.0"
+ "@emnapi/wasi-threads" "1.2.1"
tslib "^2.4.0"
"@emnapi/runtime@^1.4.3":
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.7.1.tgz#a73784e23f5d57287369c808197288b52276b791"
- integrity sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c"
+ integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==
dependencies:
tslib "^2.4.0"
-"@emnapi/wasi-threads@1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf"
- integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==
+"@emnapi/wasi-threads@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548"
+ integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==
dependencies:
tslib "^2.4.0"
@@ -1646,9 +1654,9 @@
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0":
- version "4.9.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3"
- integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595"
+ integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==
dependencies:
eslint-visitor-keys "^3.4.3"
@@ -1687,32 +1695,32 @@
resolved "https://registry.yarnpkg.com/@filestack/loader/-/loader-1.0.9.tgz#eaab7e6536a41c8fd1e918ba064e24fd7a12bb32"
integrity sha512-zvXbZSgeybT1p3ds5NZ5GQYPVnKacgb2YGWe7psdPs/JE1v3SL1j2SXYaHA/f/Qwc8Y1fjzz53maKP0vwDHrvA==
-"@floating-ui/core@^1.7.3":
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7"
- integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==
+"@floating-ui/core@^1.7.5":
+ version "1.7.5"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622"
+ integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==
dependencies:
- "@floating-ui/utils" "^0.2.10"
+ "@floating-ui/utils" "^0.2.11"
-"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.6.1", "@floating-ui/dom@^1.7.4":
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.4.tgz#ee667549998745c9c3e3e84683b909c31d6c9a77"
- integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==
+"@floating-ui/dom@^1.0.1", "@floating-ui/dom@^1.6.1", "@floating-ui/dom@^1.7.6":
+ version "1.7.6"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf"
+ integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==
dependencies:
- "@floating-ui/core" "^1.7.3"
- "@floating-ui/utils" "^0.2.10"
+ "@floating-ui/core" "^1.7.5"
+ "@floating-ui/utils" "^0.2.11"
"@floating-ui/react-dom@^2.0.0":
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.6.tgz#189f681043c1400561f62972f461b93f01bf2231"
- integrity sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==
+ version "2.1.8"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.8.tgz#5fb5a20d10aafb9505f38c24f38d00c8e1598893"
+ integrity sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==
dependencies:
- "@floating-ui/dom" "^1.7.4"
+ "@floating-ui/dom" "^1.7.6"
-"@floating-ui/utils@^0.2.10":
- version "0.2.10"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c"
- integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
+"@floating-ui/utils@^0.2.11":
+ version "0.2.11"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f"
+ integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==
"@hapi/address@^5.1.1":
version "5.1.1"
@@ -1737,9 +1745,9 @@
integrity sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==
"@hapi/tlds@^1.1.1":
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/@hapi/tlds/-/tlds-1.1.4.tgz#df4a7b59082b54ba4f3b7b38f781e2ac3cbc359a"
- integrity sha512-Fq+20dxsxLaUn5jSSWrdtSRcIUba2JquuorF9UW1wIJS5cSUwxIsO2GIhaWynPRflvxSzFN+gxKte2HEW1OuoA==
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/@hapi/tlds/-/tlds-1.1.6.tgz#c98ed89ca76aa030352d6d7102d0f250aed89cfb"
+ integrity sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==
"@hapi/topo@^6.0.2":
version "6.0.2"
@@ -1795,18 +1803,6 @@
resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==
-"@isaacs/balanced-match@^4.0.1":
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29"
- integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
-
-"@isaacs/brace-expansion@^5.0.0":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3"
- integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
- dependencies:
- "@isaacs/balanced-match" "^4.0.1"
-
"@isaacs/cliui@^8.0.2":
version "8.0.2"
resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
@@ -1831,9 +1827,9 @@
resolve-from "^5.0.0"
"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3":
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
- integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.6.tgz#8dc9afa2ac1506cb1a58f89940f1c124446c8df3"
+ integrity sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==
"@jackwilsdon/craco-use-babelrc@1.0.0":
version "1.0.0"
@@ -1946,10 +1942,10 @@
slash "^3.0.0"
strip-ansi "^6.0.0"
-"@jest/diff-sequences@30.0.1":
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be"
- integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==
+"@jest/diff-sequences@30.4.0":
+ version "30.4.0"
+ resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz#8be2d260e6241d6cddddd102c304fe13b4fc8e3e"
+ integrity sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==
"@jest/environment@^27.5.1":
version "27.5.1"
@@ -1971,10 +1967,10 @@
"@types/node" "*"
jest-mock "^29.7.0"
-"@jest/expect-utils@30.2.0":
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.2.0.tgz#4f95413d4748454fdb17404bf1141827d15e6011"
- integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==
+"@jest/expect-utils@30.4.1":
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.4.1.tgz#e0c7436d52b08610de9027841912dc3734ae80b2"
+ integrity sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==
dependencies:
"@jest/get-type" "30.1.0"
@@ -2041,13 +2037,13 @@
"@jest/types" "^29.6.3"
jest-mock "^29.7.0"
-"@jest/pattern@30.0.1":
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f"
- integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==
+"@jest/pattern@30.4.0":
+ version "30.4.0"
+ resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.4.0.tgz#fcb519eeacc25caa3768f787595a27afa15302ae"
+ integrity sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==
dependencies:
"@types/node" "*"
- jest-regex-util "30.0.1"
+ jest-regex-util "30.4.0"
"@jest/reporters@^27.5.1":
version "27.5.1"
@@ -2110,10 +2106,10 @@
strip-ansi "^6.0.0"
v8-to-istanbul "^9.0.1"
-"@jest/schemas@30.0.5":
- version "30.0.5"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473"
- integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==
+"@jest/schemas@30.4.1":
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.4.1.tgz#c3703fdd71357e2c83aa59bd38469e60a11529c6"
+ integrity sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==
dependencies:
"@sinclair/typebox" "^0.34.0"
@@ -2241,13 +2237,13 @@
slash "^3.0.0"
write-file-atomic "^4.0.2"
-"@jest/types@30.2.0":
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.2.0.tgz#1c678a7924b8f59eafd4c77d56b6d0ba976d62b8"
- integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==
+"@jest/types@30.4.1":
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.4.1.tgz#f79b647a85cb2ff4a90cc55984b31dae820db1f7"
+ integrity sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==
dependencies:
- "@jest/pattern" "30.0.1"
- "@jest/schemas" "30.0.5"
+ "@jest/pattern" "30.4.0"
+ "@jest/schemas" "30.4.1"
"@types/istanbul-lib-coverage" "^2.0.6"
"@types/istanbul-reports" "^3.0.4"
"@types/node" "*"
@@ -2350,9 +2346,9 @@
integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==
"@lezer/common@^1.0.0", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.3.0", "@lezer/common@^1.5.0":
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.1.tgz#6e8c114ff5d36a41148e146a253734d3bb8807d3"
- integrity sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.2.tgz#d6840db13779e3f1b42e70c9a97c4086d12fae22"
+ integrity sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==
"@lezer/highlight@^1.0.0":
version "1.2.3"
@@ -2371,9 +2367,9 @@
"@lezer/lr" "^1.0.0"
"@lezer/lr@^1.0.0":
- version "1.4.8"
- resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.8.tgz#333de9bc9346057323ff09beb4cda47ccc38a498"
- integrity sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==
+ version "1.4.10"
+ resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.10.tgz#b3acc36e5ad049b74ddb7719594e7e74d9161ff5"
+ integrity sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==
dependencies:
"@lezer/common" "^1.0.0"
@@ -2415,6 +2411,11 @@
dependencies:
eslint-scope "5.1.1"
+"@nodable/entities@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2"
+ integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -2441,94 +2442,94 @@
resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
-"@parcel/watcher-android-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
- integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
-
-"@parcel/watcher-darwin-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
- integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
-
-"@parcel/watcher-darwin-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8"
- integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
-
-"@parcel/watcher-freebsd-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
- integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
-
-"@parcel/watcher-linux-arm-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
- integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
-
-"@parcel/watcher-linux-arm-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
- integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
-
-"@parcel/watcher-linux-arm64-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
- integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
-
-"@parcel/watcher-linux-arm64-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
- integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
-
-"@parcel/watcher-linux-x64-glibc@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
- integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
-
-"@parcel/watcher-linux-x64-musl@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
- integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
-
-"@parcel/watcher-win32-arm64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
- integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
-
-"@parcel/watcher-win32-ia32@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
- integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
-
-"@parcel/watcher-win32-x64@2.5.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
- integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
+"@parcel/watcher-android-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz#5f32e0dba356f4ac9a11068d2a5c134ca3ba6564"
+ integrity sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==
+
+"@parcel/watcher-darwin-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz#88d3e720b59b1eceffce98dac46d7c40e8be5e8e"
+ integrity sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==
+
+"@parcel/watcher-darwin-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz#bf05d76a78bc15974f15ec3671848698b0838063"
+ integrity sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==
+
+"@parcel/watcher-freebsd-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz#8bc26e9848e7303ac82922a5ae1b1ef1bdb48a53"
+ integrity sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==
+
+"@parcel/watcher-linux-arm-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz#1328fee1deb0c2d7865079ef53a2ba4cc2f8b40a"
+ integrity sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==
+
+"@parcel/watcher-linux-arm-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz#bad0f45cb3e2157746db8b9d22db6a125711f152"
+ integrity sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz#b75913fbd501d9523c5f35d420957bf7d0204809"
+ integrity sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==
+
+"@parcel/watcher-linux-arm64-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz#da5621a6a576070c8c0de60dea8b46dc9c3827d4"
+ integrity sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==
+
+"@parcel/watcher-linux-x64-glibc@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz#ce437accdc4b30f93a090b4a221fd95cd9b89639"
+ integrity sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==
+
+"@parcel/watcher-linux-x64-musl@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz#02400c54b4a67efcc7e2327b249711920ac969e2"
+ integrity sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==
+
+"@parcel/watcher-win32-arm64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz#caae3d3c7583ca0a7171e6bd142c34d20ea1691e"
+ integrity sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==
+
+"@parcel/watcher-win32-ia32@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz#9ac922550896dfe47bfc5ae3be4f1bcaf8155d6d"
+ integrity sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==
+
+"@parcel/watcher-win32-x64@2.5.6":
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz#73fdafba2e21c448f0e456bbe13178d8fe11739d"
+ integrity sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==
"@parcel/watcher@^2.4.1":
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200"
- integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
+ version "2.5.6"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.6.tgz#3f932828c894f06d0ad9cfefade1756ecc6ef1f1"
+ integrity sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==
dependencies:
- detect-libc "^1.0.3"
+ detect-libc "^2.0.3"
is-glob "^4.0.3"
- micromatch "^4.0.5"
node-addon-api "^7.0.0"
+ picomatch "^4.0.3"
optionalDependencies:
- "@parcel/watcher-android-arm64" "2.5.1"
- "@parcel/watcher-darwin-arm64" "2.5.1"
- "@parcel/watcher-darwin-x64" "2.5.1"
- "@parcel/watcher-freebsd-x64" "2.5.1"
- "@parcel/watcher-linux-arm-glibc" "2.5.1"
- "@parcel/watcher-linux-arm-musl" "2.5.1"
- "@parcel/watcher-linux-arm64-glibc" "2.5.1"
- "@parcel/watcher-linux-arm64-musl" "2.5.1"
- "@parcel/watcher-linux-x64-glibc" "2.5.1"
- "@parcel/watcher-linux-x64-musl" "2.5.1"
- "@parcel/watcher-win32-arm64" "2.5.1"
- "@parcel/watcher-win32-ia32" "2.5.1"
- "@parcel/watcher-win32-x64" "2.5.1"
+ "@parcel/watcher-android-arm64" "2.5.6"
+ "@parcel/watcher-darwin-arm64" "2.5.6"
+ "@parcel/watcher-darwin-x64" "2.5.6"
+ "@parcel/watcher-freebsd-x64" "2.5.6"
+ "@parcel/watcher-linux-arm-glibc" "2.5.6"
+ "@parcel/watcher-linux-arm-musl" "2.5.6"
+ "@parcel/watcher-linux-arm64-glibc" "2.5.6"
+ "@parcel/watcher-linux-arm64-musl" "2.5.6"
+ "@parcel/watcher-linux-x64-glibc" "2.5.6"
+ "@parcel/watcher-linux-x64-musl" "2.5.6"
+ "@parcel/watcher-win32-arm64" "2.5.6"
+ "@parcel/watcher-win32-ia32" "2.5.6"
+ "@parcel/watcher-win32-x64" "2.5.6"
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
@@ -2919,10 +2920,10 @@
dependencies:
"@babel/runtime" "^7.13.10"
-"@remix-run/router@1.23.1":
- version "1.23.1"
- resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.1.tgz#0ce8857b024e24fc427585316383ad9d295b3a7f"
- integrity sha512-vDbaOzF7yT2Qs4vO6XV1MHcJv+3dgR1sT+l3B8xxOVhUC336prMvqrvsLL/9Dnw2xr6Qhz4J0dmS0llNAbnUmQ==
+"@remix-run/router@1.23.2":
+ version "1.23.2"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.23.2.tgz#156c4b481c0bee22a19f7924728a67120de06971"
+ integrity sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==
"@rollup/plugin-babel@^5.2.0":
version "5.3.1"
@@ -2967,55 +2968,55 @@
integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
"@rushstack/eslint-patch@^1.1.0":
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.15.0.tgz#8184bcb37791e6d3c3c13a9bfbe4af263f66665f"
- integrity sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.16.1.tgz#4f97581e114fc79f246cee3723a5c4edd3b62415"
+ integrity sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==
-"@sentry-internal/browser-utils@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz#d89bae423edd29c39f01285c8e2d59ce9289d9a6"
- integrity sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==
+"@sentry-internal/browser-utils@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.55.2.tgz#3463115ac048813d71565c6fa2a48e6d60f15e8b"
+ integrity sha512-GnKod+gL/Y+1FUM/RGV8q6le1CoyiGbT40MitEK7eVwWe+bfTRq1gN7ioupyHFMUg1RlQkDQ4/sENmio/uow5A==
dependencies:
- "@sentry/core" "8.55.0"
+ "@sentry/core" "8.55.2"
-"@sentry-internal/feedback@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.55.0.tgz#170b8e96a36ce6f71f53daad680f1a0c98381314"
- integrity sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==
+"@sentry-internal/feedback@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.55.2.tgz#16608bf305beb840b751f63473558cb57e9c9503"
+ integrity sha512-XQy//NWbL0mLLM5w8wNDWMNpXz39VUyW2397dUrH8++kR63WhUVAvTOtL0o0GMVadSAzl1b08oHP9zSUNFQwcg==
dependencies:
- "@sentry/core" "8.55.0"
+ "@sentry/core" "8.55.2"
-"@sentry-internal/replay-canvas@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz#e65430207a2f18e4a07c25c669ec758d11282aaf"
- integrity sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==
+"@sentry-internal/replay-canvas@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.55.2.tgz#66138ae5e31c8e77a72ceab12673bfd7ae99dd26"
+ integrity sha512-P/jGiuR7dRLG9IzD/463fLgiibyYceauav/9prRG0ZxJm1AtuO02OKball2Fs3bbzdzwHCTlcsUuL2ivDF4b5A==
dependencies:
- "@sentry-internal/replay" "8.55.0"
- "@sentry/core" "8.55.0"
+ "@sentry-internal/replay" "8.55.2"
+ "@sentry/core" "8.55.2"
-"@sentry-internal/replay@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.55.0.tgz#4c00b22cdf58cac5b3e537f8d4f675f2b021f475"
- integrity sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==
+"@sentry-internal/replay@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.55.2.tgz#c00cfa8117a6bad93f5522671049760e3780d0c8"
+ integrity sha512-+W43Z697EVe/OgpGW07B773sa8xO1UbpnW0Cr+E+3FMDb6ZbXlaBUoagPTUkkQPdwBe35SDh6r8y2M3EOPGbxg==
dependencies:
- "@sentry-internal/browser-utils" "8.55.0"
- "@sentry/core" "8.55.0"
+ "@sentry-internal/browser-utils" "8.55.2"
+ "@sentry/core" "8.55.2"
"@sentry/browser@8.x.x":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.55.0.tgz#9a489e2a54d29c65e6271b4ee594b43679cab7bd"
- integrity sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.55.2.tgz#95eff656e5a61f4a22605f88c03746c20c51cf47"
+ integrity sha512-xHuPIEKhx9zw5quWvv4YgZprnwoVMCfxIhmOIf6KJ9iizyUHeUDcKpLS59xERroqwX4RpvK+l/27AZu4zfZlzQ==
dependencies:
- "@sentry-internal/browser-utils" "8.55.0"
- "@sentry-internal/feedback" "8.55.0"
- "@sentry-internal/replay" "8.55.0"
- "@sentry-internal/replay-canvas" "8.55.0"
- "@sentry/core" "8.55.0"
+ "@sentry-internal/browser-utils" "8.55.2"
+ "@sentry-internal/feedback" "8.55.2"
+ "@sentry-internal/replay" "8.55.2"
+ "@sentry-internal/replay-canvas" "8.55.2"
+ "@sentry/core" "8.55.2"
-"@sentry/core@8.55.0":
- version "8.55.0"
- resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.55.0.tgz#4964920229fcf649237ef13b1533dfc4b9f6b22e"
- integrity sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==
+"@sentry/core@8.55.2":
+ version "8.55.2"
+ resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.55.2.tgz#1a841aefc9b96f7a8a05c30162fa6ebc7e1dc47a"
+ integrity sha512-YlEBwybUcOQ/KjMHDmof1vwweVnBtBxYlQp7DE3fOdtW4pqqdHWTnTntQs4VgYfxzjJYgtkd9LHlGtg8qy+JVQ==
"@sinclair/typebox@^0.24.1":
version "0.24.51"
@@ -3023,14 +3024,14 @@
integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
"@sinclair/typebox@^0.27.8":
- version "0.27.8"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
- integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
+ version "0.27.10"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6"
+ integrity sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==
"@sinclair/typebox@^0.34.0":
- version "0.34.41"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.41.tgz#aa51a6c1946df2c5a11494a2cdb9318e026db16c"
- integrity sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==
+ version "0.34.49"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.49.tgz#4f1369234f2ecf693866476c3b2e1b54d2a9d68e"
+ integrity sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==
"@sindresorhus/is@^4.0.0":
version "4.6.0"
@@ -3066,14 +3067,14 @@
"@sinonjs/commons" "^1.7.0"
"@sprig-technologies/sprig-browser@^2.39.0":
- version "2.39.0"
- resolved "https://registry.yarnpkg.com/@sprig-technologies/sprig-browser/-/sprig-browser-2.39.0.tgz#214b0bbdd63d3815b8443f4013829bca80d3a98d"
- integrity sha512-66mdsxc7DlkfWmBacTesvbaXMqgzJRR5B/tRpy2a7T0s5L8+ehAUj+SaivddtjGDClWD4Tf3rk6K7rV33U8PTA==
+ version "2.44.1"
+ resolved "https://registry.yarnpkg.com/@sprig-technologies/sprig-browser/-/sprig-browser-2.44.1.tgz#9bfa2ac58abe657990dd4486902ecbcde90e8b4a"
+ integrity sha512-bLj7uZn2yK/KZ9e7HwzplYndPcN+DGWZib5FGlZ6Zggygl8mfboky5vnZ4TqZXFTcwjjd/vBA1ywDahXyimoUA==
-"@standard-schema/spec@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.0.0.tgz#f193b73dc316c4170f2e82a881da0f550d551b9c"
- integrity sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==
+"@standard-schema/spec@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@standard-schema/spec/-/spec-1.1.0.tgz#a79b55dbaf8604812f52d140b2c9ab41bc150bb8"
+ integrity sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==
"@standard-schema/utils@^0.3.0":
version "0.3.0"
@@ -3998,84 +3999,96 @@
"@svgr/plugin-svgo" "^5.5.0"
loader-utils "^2.0.0"
-"@swc/core-darwin-arm64@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.3.tgz#bd0bd3ab7730e3ffa64cf200c0ed7c572cbaba97"
- integrity sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==
-
-"@swc/core-darwin-x64@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.3.tgz#502b1e1c680df6b962265ca81a0c1a23e6ff070f"
- integrity sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==
-
-"@swc/core-linux-arm-gnueabihf@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.3.tgz#e32cc6a2e06a75060d6f598ba2ca6f96c5c0cc43"
- integrity sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==
-
-"@swc/core-linux-arm64-gnu@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.3.tgz#9b9861bc44059e393d4baf98b3cd3d6c4ea6f521"
- integrity sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==
-
-"@swc/core-linux-arm64-musl@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.3.tgz#f6388743e5a159018bd468e8f710940b2614384b"
- integrity sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==
-
-"@swc/core-linux-x64-gnu@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.3.tgz#15fea551c7a3aeb1bdc3ad5c652d73c9321ddba8"
- integrity sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==
-
-"@swc/core-linux-x64-musl@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.3.tgz#d3f17bab4ffcadbb47f135e6a14d6f3e401af289"
- integrity sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==
-
-"@swc/core-win32-arm64-msvc@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.3.tgz#9da386df7fed00b3473bcf4281ff3fcd14726d2c"
- integrity sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==
-
-"@swc/core-win32-ia32-msvc@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.3.tgz#c398d4f0f10ffec2151a79733ee1ce86a945a1ea"
- integrity sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==
-
-"@swc/core-win32-x64-msvc@1.15.3":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.3.tgz#715596b034a654c82b03ef734a9b44c29bcd3a68"
- integrity sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==
+"@swc/core-darwin-arm64@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.33.tgz#d84134fb80417d41128739f0b9014542e3ed9dd3"
+ integrity sha512-N+L0uXhuO7FIfzqwgxmzv0zIpV0qEp8wPX3QQs2p4atjMoywup2JTeDlXPw+z9pWJGCae3JjM+tZ6myclI+2gA==
+
+"@swc/core-darwin-x64@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.33.tgz#0badb9834071f1c6005986571d4a96359c1d7cd0"
+ integrity sha512-/Il4QHSOhV4FekbsDtkrNmKbsX26oSysvgrRswa/RYOHXAkwXDbB4jaeKq6PsJLSPkzJ2KzQ061gtBnk0vNHfA==
+
+"@swc/core-linux-arm-gnueabihf@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.33.tgz#b7577a825b59d98b6a9a5c991d842046efe1c34a"
+ integrity sha512-C64hBnBxq4viOPQ8hlx+2lJ23bzZBGnjw7ryALmS+0Q3zHmwO8lw1/DArLENw4Q18/0w5wdEO1k3m1wWNtKGqQ==
+
+"@swc/core-linux-arm64-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.33.tgz#304c48321494a18c67b2913c273b08674ee70d8c"
+ integrity sha512-TRJfnJbX3jqpxRDRoieMzRiCBS5jOmXNb3iQXmcgjFEHKLnAgK1RZRU8Cq1MsPqO4jAJp/ld1G4O3fXuxv85uw==
+
+"@swc/core-linux-arm64-musl@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.33.tgz#d116cbc04ccb4f4ee810da6bca79d4423605dbcd"
+ integrity sha512-il7tYM+CpUNzieQbwAjFT1P8zqAhmGWNAGhQZBnxurXZ0aNn+5nqYFTEUKNZl7QibtT0uQXzTZrNGHCIj6Y1Og==
+
+"@swc/core-linux-ppc64-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.33.tgz#f5354dba36db9414305bab344c817d57b8b457c2"
+ integrity sha512-ZtNBwN0Z7CFj9Il0FcPaKdjgP7URyKu/3RfH46vq+0paOBqLj4NYldD6Qo//Duif/7IOtAraUfDOmp0PLAufog==
+
+"@swc/core-linux-s390x-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.33.tgz#016df9f4c9d7fd65b85ca9c558c5aec341f06da0"
+ integrity sha512-De1IyajoOmhOYYjw/lx66bKlyDpHZTueqwpDrWgf5O7T6d1ODeJJO9/OqMBmrBQc5C+dNnlmIufHsp4QVCWufA==
+
+"@swc/core-linux-x64-gnu@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.33.tgz#49f36558ede072e71999aa37f123367daed2a662"
+ integrity sha512-mGTH0YxmUN+x6vRN/I6NOk5X0ogNktkwPnJ94IMvR7QjhRDwL0O8RXEDhyUM0YtwWrryBOqaJQBX4zruxEPRGw==
+
+"@swc/core-linux-x64-musl@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.33.tgz#b096665f5cfeee2612325f301da5c1590b10d8f3"
+ integrity sha512-hj628ZkSEJf6zMf5VMbYrG2O6QqyTIp2qwY6VlCjvIa9lAEZ5c2lfPblCLVGYubTeLJDxadLB/CxqQYOQABeEQ==
+
+"@swc/core-win32-arm64-msvc@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.33.tgz#f3101263a0dbaa173ec47638c9719d0b89838bd2"
+ integrity sha512-GV2oohtN2/5+KSccl86VULu3aT+LrISC8uzgSq0FRnikpD+Zwc+sBlXmoKQ+Db6jI57ITUOIB8jRkdGMABC29g==
+
+"@swc/core-win32-ia32-msvc@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.33.tgz#eb981ef5613d42c9220559bdb0c8bc58cf6c3eb9"
+ integrity sha512-gtyvzSNR8DHKfFEA2uqb8Ld1myqi6uEg2jyeUq3ikn5ytYs7H8RpZYC8mdy4NXr8hfcdJfCLXPlYaqqfBXpoEQ==
+
+"@swc/core-win32-x64-msvc@1.15.33":
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.33.tgz#a2fed9956933027ceb368857bac4bb4ee203d47c"
+ integrity sha512-d6fRqQSkJI+kmMEBWaDQ7TMl8+YjLYbwRUPZQ9DY0ORBJeTzOrG0twvfvlZ2xgw6jA0ScQKgfBm4vHLSLl5Hqg==
"@swc/core@^1.3.82":
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.3.tgz#2d0a5c4ac4c180c3dbf2f6d5d958b9fcbaa9755f"
- integrity sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==
+ version "1.15.33"
+ resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.15.33.tgz#2a6571c8aca961925f14beae52b3f43c18370fc6"
+ integrity sha512-jOlwnFV2xhuuZeAUILGFULeR6vDPfijEJ57evfocwznQldLU3w2cZ9bSDryY9ip+AsM3r1NJKzf47V2NXebkeQ==
dependencies:
"@swc/counter" "^0.1.3"
- "@swc/types" "^0.1.25"
+ "@swc/types" "^0.1.26"
optionalDependencies:
- "@swc/core-darwin-arm64" "1.15.3"
- "@swc/core-darwin-x64" "1.15.3"
- "@swc/core-linux-arm-gnueabihf" "1.15.3"
- "@swc/core-linux-arm64-gnu" "1.15.3"
- "@swc/core-linux-arm64-musl" "1.15.3"
- "@swc/core-linux-x64-gnu" "1.15.3"
- "@swc/core-linux-x64-musl" "1.15.3"
- "@swc/core-win32-arm64-msvc" "1.15.3"
- "@swc/core-win32-ia32-msvc" "1.15.3"
- "@swc/core-win32-x64-msvc" "1.15.3"
+ "@swc/core-darwin-arm64" "1.15.33"
+ "@swc/core-darwin-x64" "1.15.33"
+ "@swc/core-linux-arm-gnueabihf" "1.15.33"
+ "@swc/core-linux-arm64-gnu" "1.15.33"
+ "@swc/core-linux-arm64-musl" "1.15.33"
+ "@swc/core-linux-ppc64-gnu" "1.15.33"
+ "@swc/core-linux-s390x-gnu" "1.15.33"
+ "@swc/core-linux-x64-gnu" "1.15.33"
+ "@swc/core-linux-x64-musl" "1.15.33"
+ "@swc/core-win32-arm64-msvc" "1.15.33"
+ "@swc/core-win32-ia32-msvc" "1.15.33"
+ "@swc/core-win32-x64-msvc" "1.15.33"
"@swc/counter@^0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
-"@swc/types@^0.1.25":
- version "0.1.25"
- resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.25.tgz#b517b2a60feb37dd933e542d93093719e4cf1078"
- integrity sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==
+"@swc/types@^0.1.26":
+ version "0.1.26"
+ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.26.tgz#2a976a1870caef1992316dda1464150ee36968b5"
+ integrity sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==
dependencies:
"@swc/counter" "^0.1.3"
@@ -4150,6 +4163,14 @@
dependencies:
prop-types "^15.6.2"
+"@tokenizer/inflate@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@tokenizer/inflate/-/inflate-0.4.1.tgz#fa6cdb8366151b3cc8426bf9755c1ea03a2fba08"
+ integrity sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==
+ dependencies:
+ debug "^4.4.3"
+ token-types "^6.1.1"
+
"@tokenizer/token@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
@@ -4160,11 +4181,6 @@
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
-"@trysound/sax@0.2.0":
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
- integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
-
"@tsconfig/node10@^1.0.7":
version "1.0.12"
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.12.tgz#be57ceac1e4692b41be9de6be8c32a106636dba4"
@@ -4186,9 +4202,9 @@
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
"@tybys/wasm-util@^0.10.0":
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414"
- integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==
+ version "0.10.2"
+ resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz#12b3a1b33db1f9cad4ddff1f604ab7dd00bf464e"
+ integrity sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==
dependencies:
tslib "^2.4.0"
@@ -4292,9 +4308,9 @@
"@types/node" "*"
"@types/debug@^4.0.0":
- version "4.1.12"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
- integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
+ version "4.1.13"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7"
+ integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==
dependencies:
"@types/ms" "*"
@@ -4365,9 +4381,9 @@
"@types/json-schema" "*"
"@types/estree@*", "@types/estree@^1.0.8":
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
- integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24"
+ integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==
"@types/estree@0.0.39":
version "0.0.39"
@@ -4380,9 +4396,9 @@
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.0.tgz#74f47555b3d804b54cb7030e6f9aa0c7485cfc5b"
- integrity sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz#1a77faffee9572d39124933259be2523837d7eaa"
+ integrity sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -4390,9 +4406,9 @@
"@types/send" "*"
"@types/express-serve-static-core@^4.17.33":
- version "4.19.7"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz#f1d306dcc03b1aafbfb6b4fe684cce8a31cffc10"
- integrity sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==
+ version "4.19.8"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz#99b960322a4d576b239a640ab52ef191989b036f"
+ integrity sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -4467,9 +4483,9 @@
integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==
"@types/http-cache-semantics@*":
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
- integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3"
+ integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==
"@types/http-errors@*":
version "2.0.5"
@@ -4546,9 +4562,9 @@
integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==
"@types/lodash@^4.14.167", "@types/lodash@^4.17.21":
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.21.tgz#b806831543d696b14f8112db600ea9d3a1df6ea4"
- integrity sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==
+ version "4.17.24"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.24.tgz#4ae334fc62c0e915ca8ed8e35dcc6d4eeb29215f"
+ integrity sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==
"@types/markdown-it@^12.2.3":
version "12.2.3"
@@ -4618,11 +4634,11 @@
"@types/node" "*"
"@types/node@*":
- version "25.0.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-25.0.0.tgz#c0e0022c3c7b41635c49322e6b3a0279fffa7d62"
- integrity sha512-rl78HwuZlaDIUSeUKkmogkhebA+8K1Hy7tddZuJ3D0xV8pZSfsYGTsliGUol1JPzu9EKnTxPC4L1fiWouStRew==
+ version "25.8.0"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-25.8.0.tgz#d13033397d1c186876bed4c9b9d7f3f962097eb3"
+ integrity sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==
dependencies:
- undici-types "~7.16.0"
+ undici-types ">=7.24.0 <7.24.7"
"@types/node@^18.0.0", "@types/node@^18.19.130":
version "18.19.130"
@@ -4667,9 +4683,9 @@
integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==
"@types/qs@*", "@types/qs@^6.9.5":
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5"
- integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==
+ version "6.15.1"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.15.1.tgz#8606884272c63f0db96986bd3548650d8a9388bf"
+ integrity sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==
"@types/range-parser@*":
version "1.2.7"
@@ -4792,11 +4808,11 @@
integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
"@types/sanitize-html@^2.16.0":
- version "2.16.0"
- resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.16.0.tgz#860d72c1ba8a5d044946f37559cc359c0a13b24e"
- integrity sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==
+ version "2.16.1"
+ resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.16.1.tgz#27b9ac6cc29838f7a048bfec0113e8ad00918d0a"
+ integrity sha512-n9wjs8bCOTyN/ynwD8s/nTcTreIHB1vf31vhLMGqUPNHaweKC4/fAl4Dj+hUlCTKYgm4P3k83fmiFfzkZ6sgMA==
dependencies:
- htmlparser2 "^8.0.0"
+ htmlparser2 "^10.1"
"@types/semver@^7.3.12", "@types/semver@^7.3.4":
version "7.7.1"
@@ -5040,10 +5056,10 @@
"@typescript-eslint/types" "5.62.0"
eslint-visitor-keys "^3.3.0"
-"@uiw/codemirror-extensions-basic-setup@4.25.8":
- version "4.25.8"
- resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.8.tgz#a3848e6e8ea13cec56cfe698e39701d4210ac0f7"
- integrity sha512-9Rr+liiBmK4xzZHszL+twNRJApthqmITBwDP3emNTtTrkBFN4gHlqfp+nodKmoVt1+bUH1qQCtyqt+7dbDTHiw==
+"@uiw/codemirror-extensions-basic-setup@4.25.9":
+ version "4.25.9"
+ resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.25.9.tgz#67e584f437ea40eb2fbbc29a1b489d451c6164e2"
+ integrity sha512-QFAqr+pu6lDmNpAlecODcF49TlsrZ0bj15zPzfhiqSDl+Um3EsDLFLppixC7kFLn+rdDM2LTvVjn5CPvefpRgw==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
"@codemirror/commands" "^6.0.0"
@@ -5054,21 +5070,21 @@
"@codemirror/view" "^6.0.0"
"@uiw/react-codemirror@^4.25.8":
- version "4.25.8"
- resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.25.8.tgz#40e8ab9df1955052365520a785372d9097d5924b"
- integrity sha512-A0aLOuJZm2yJ+U9GlMFwxwFciztjd5LhcAG4SMqFxdD58wH+sCQXuY4UU5J2hqgS390qAlShtUgREvJPUonbuQ==
+ version "4.25.9"
+ resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.25.9.tgz#f0c1f7c9b28c696dcb339e074fe8aa02912214c8"
+ integrity sha512-HftqCBUYShAOH0pGi1CHP8vfm5L8fQ3+0j0VI6lQD6QpK+UBu3J7nxfEN5O/BXMilMNf9ZyFJRvRcuMMOLHMng==
dependencies:
"@babel/runtime" "^7.18.6"
"@codemirror/commands" "^6.1.0"
"@codemirror/state" "^6.1.1"
"@codemirror/theme-one-dark" "^6.0.0"
- "@uiw/codemirror-extensions-basic-setup" "4.25.8"
+ "@uiw/codemirror-extensions-basic-setup" "4.25.9"
codemirror "^6.0.0"
"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8"
- integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.1.tgz#0e8f34854df7966b09304a18e808b23997bb9fc1"
+ integrity sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==
"@unrs/resolver-binding-android-arm-eabi@1.11.1":
version "1.11.1"
@@ -5390,14 +5406,7 @@ abab@^2.0.3, abab@^2.0.5, abab@^2.0.6:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
-abort-controller@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
- integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
- dependencies:
- event-target-shim "^5.0.0"
-
-accepts@~1.3.4, accepts@~1.3.8:
+accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
@@ -5429,9 +5438,9 @@ acorn-walk@^7.1.1, acorn-walk@^7.2.0:
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1:
- version "8.3.4"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7"
- integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==
+ version "8.3.5"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496"
+ integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==
dependencies:
acorn "^8.11.0"
@@ -5440,10 +5449,10 @@ acorn@^7.1.1, acorn@^7.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.9.0:
- version "8.15.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
- integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
+acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.16.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.9.0:
+ version "8.16.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a"
+ integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==
address@^1.0.1, address@^1.1.2:
version "1.2.2"
@@ -5505,20 +5514,20 @@ ajv-keywords@^5.1.0:
dependencies:
fast-deep-equal "^3.1.3"
-ajv@8.12.0:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ajv@8.18.0:
+ version "8.18.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.18.0.tgz#8864186b6738d003eb3a933172bb3833e10cefbc"
+ integrity sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==
dependencies:
- fast-deep-equal "^3.1.1"
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
- uri-js "^4.2.2"
ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.3:
- version "6.12.6"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
- integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ version "6.15.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492"
+ integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
@@ -5526,9 +5535,9 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.5.3:
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0:
- version "8.17.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
- integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ version "8.20.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9"
+ integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==
dependencies:
fast-deep-equal "^3.1.3"
fast-uri "^3.0.1"
@@ -5581,7 +5590,7 @@ ansi-regex@^5.0.1:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-ansi-regex@^6.0.1:
+ansi-regex@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1"
integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==
@@ -5895,14 +5904,13 @@ auto-css-modules-webpack-plugin@^1.1.1:
acorn-walk "^8.0.2"
autoprefixer@^10.4.12, autoprefixer@^10.4.13, autoprefixer@^10.4.22:
- version "10.4.22"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.22.tgz#90b27ab55ec0cf0684210d1f056f7d65dac55f16"
- integrity sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==
+ version "10.5.0"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.5.0.tgz#33d87e443430f020a0f85319d6ff1593cb291be9"
+ integrity sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==
dependencies:
- browserslist "^4.27.0"
- caniuse-lite "^1.0.30001754"
+ browserslist "^4.28.2"
+ caniuse-lite "^1.0.30001787"
fraction.js "^5.3.4"
- normalize-range "^0.1.2"
picocolors "^1.1.1"
postcss-value-parser "^4.2.0"
@@ -5914,17 +5922,18 @@ available-typed-arrays@^1.0.7:
possible-typed-array-names "^1.0.0"
axe-core@^4.10.0:
- version "4.11.0"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.0.tgz#16f74d6482e343ff263d4f4503829e9ee91a86b6"
- integrity sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==
+ version "4.11.4"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.11.4.tgz#5b535e381ff1e61ffdd615e5483d16186d3b46a5"
+ integrity sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==
-axios@*, axios@^1.13.2, axios@^1.15.0, axios@^1.7.4:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.15.0.tgz#0fcee91ef03d386514474904b27863b2c683bf4f"
- integrity sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==
+axios@*, axios@^1.13.5, axios@^1.15.0, axios@^1.7.4:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.16.1.tgz#517e29291d19d6e8cf919ff264f4fe157261ba12"
+ integrity sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==
dependencies:
- follow-redirects "^1.15.11"
+ follow-redirects "^1.16.0"
form-data "^4.0.5"
+ https-proxy-agent "^5.0.1"
proxy-from-env "^2.1.0"
axobject-query@^4.1.0:
@@ -6068,13 +6077,13 @@ babel-plugin-named-exports-order@^0.0.2:
resolved "https://registry.yarnpkg.com/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz#ae14909521cf9606094a2048239d69847540cb09"
integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==
-babel-plugin-polyfill-corejs2@^0.4.14:
- version "0.4.14"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f"
- integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==
+babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15:
+ version "0.4.17"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz#198f970f1c99a856b466d1187e88ce30bd199d91"
+ integrity sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==
dependencies:
- "@babel/compat-data" "^7.27.7"
- "@babel/helper-define-polyfill-provider" "^0.6.5"
+ "@babel/compat-data" "^7.28.6"
+ "@babel/helper-define-polyfill-provider" "^0.6.8"
semver "^6.3.1"
babel-plugin-polyfill-corejs3@^0.13.0:
@@ -6085,12 +6094,20 @@ babel-plugin-polyfill-corejs3@^0.13.0:
"@babel/helper-define-polyfill-provider" "^0.6.5"
core-js-compat "^3.43.0"
-babel-plugin-polyfill-regenerator@^0.6.5:
- version "0.6.5"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5"
- integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==
+babel-plugin-polyfill-corejs3@^0.14.0:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz#6ac08d2f312affb70c4c69c0fbba4cb417ee5587"
+ integrity sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.5"
+ "@babel/helper-define-polyfill-provider" "^0.6.8"
+ core-js-compat "^3.48.0"
+
+babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6:
+ version "0.6.8"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz#8a6bfd5dd54239362b3d06ce47ac52b2d95d7721"
+ integrity sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.6.8"
babel-plugin-react-css-modules@^5.2.6:
version "5.2.6"
@@ -6196,6 +6213,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+balanced-match@^4.0.2:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a"
+ integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
+
base64-arraybuffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
@@ -6206,10 +6228,10 @@ base64-js@^1.3.1:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-baseline-browser-mapping@^2.9.0:
- version "2.9.6"
- resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz#82de0f7ee5860df86d60daf0d9524ae7227eeee7"
- integrity sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==
+baseline-browser-mapping@^2.10.12:
+ version "2.10.30"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.30.tgz#58915c74388b05f3b3504026194ea9fa98f6e6b6"
+ integrity sha512-xjOFN16Ha1+Rz4nFYKqHU/LSB+gx/Vi3yQLX7r7sAW+Wa+8hhF2h4pvqTrTMc8+WcDBEunnUurr46Jvv0jk3Vg==
batch@0.6.1:
version "0.6.1"
@@ -6263,10 +6285,10 @@ bluebird@3.7.2, bluebird@^3.7.2:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-body-parser@~1.20.3:
- version "1.20.4"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f"
- integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==
+body-parser@~1.20.5:
+ version "1.20.5"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.5.tgz#303c8c34423d1d6fa799bc764e93c1e4dc6ebf64"
+ integrity sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==
dependencies:
bytes "~3.1.2"
content-type "~1.0.5"
@@ -6276,7 +6298,7 @@ body-parser@~1.20.3:
http-errors "~2.0.1"
iconv-lite "~0.4.24"
on-finished "~2.4.1"
- qs "~6.14.0"
+ qs "~6.15.1"
raw-body "~2.5.3"
type-is "~1.6.18"
unpipe "~1.0.0"
@@ -6321,20 +6343,27 @@ bplist-parser@^0.2.0:
big-integer "^1.6.44"
brace-expansion@^1.1.7:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843"
- integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.14.tgz#d9de602370d91347cd9ddad1224d4fd701eb348b"
+ integrity sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
-brace-expansion@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
- integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
+brace-expansion@^2.0.1, brace-expansion@^2.0.2:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae"
+ integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==
dependencies:
balanced-match "^1.0.0"
+brace-expansion@^5.0.5:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.6.tgz#ec68fe0a641a29d8711579caf641d05bae1f2285"
+ integrity sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==
+ dependencies:
+ balanced-match "^4.0.2"
+
braces@^3.0.2, braces@^3.0.3, braces@~3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
@@ -6364,16 +6393,16 @@ browserify-zlib@^0.1.4:
dependencies:
pako "~0.2.0"
-browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.26.3, browserslist@^4.27.0, browserslist@^4.28.0:
- version "4.28.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95"
- integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
+browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.24.0, browserslist@^4.28.1, browserslist@^4.28.2:
+ version "4.28.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2"
+ integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==
dependencies:
- baseline-browser-mapping "^2.9.0"
- caniuse-lite "^1.0.30001759"
- electron-to-chromium "^1.5.263"
- node-releases "^2.0.27"
- update-browserslist-db "^1.2.0"
+ baseline-browser-mapping "^2.10.12"
+ caniuse-lite "^1.0.30001782"
+ electron-to-chromium "^1.5.328"
+ node-releases "^2.0.36"
+ update-browserslist-db "^1.2.3"
bser@2.1.1:
version "2.1.1"
@@ -6400,14 +6429,6 @@ buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-buffer@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
- integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.2.1"
-
builtin-modules@^3.1.0, builtin-modules@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
@@ -6465,7 +6486,7 @@ caching-transform@^4.0.0:
package-hash "^4.0.0"
write-file-atomic "^3.0.0"
-call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
+call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
@@ -6473,14 +6494,14 @@ call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-
es-errors "^1.3.0"
function-bind "^1.1.2"
-call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
- integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8, call-bind@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.9.tgz#39a644700c80bc7d0ca9102fc6d1d43b2fd7eee7"
+ integrity sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==
dependencies:
- call-bind-apply-helpers "^1.0.0"
- es-define-property "^1.0.0"
- get-intrinsic "^1.2.4"
+ call-bind-apply-helpers "^1.0.2"
+ es-define-property "^1.0.1"
+ get-intrinsic "^1.3.0"
set-function-length "^1.2.2"
call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
@@ -6539,10 +6560,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001754, caniuse-lite@^1.0.30001759:
- version "1.0.30001760"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz#bdd1960fafedf8d5f04ff16e81460506ff9b798f"
- integrity sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001782, caniuse-lite@^1.0.30001787:
+ version "1.0.30001793"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz#238887ddf5fcfc8c36d872394d0a78a517312a72"
+ integrity sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==
capital-case@^1.0.4:
version "1.0.4"
@@ -6724,9 +6745,9 @@ ci-info@^3.2.0, ci-info@^3.6.1:
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
ci-info@^4.2.0:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.1.tgz#355ad571920810b5623e11d40232f443f16f1daa"
- integrity sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.4.0.tgz#7d54eff9f54b45b62401c26032696eb59c8bd18c"
+ integrity sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==
citty@^0.1.6:
version "0.1.6"
@@ -6736,11 +6757,9 @@ citty@^0.1.6:
consola "^3.2.3"
city-timezones@^1.3.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/city-timezones/-/city-timezones-1.3.2.tgz#76ead53649ad7fff7bf8512bc2c217054d966f36"
- integrity sha512-XztdL/2EWpfmgRIOzrKVOWFp6VdmaD9FNTZPINlez1etIn0mMNn01RMmSfOp6LUP/h1M2ZLX80N1O+WKwhzC+w==
- dependencies:
- lodash "^4.17.21"
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/city-timezones/-/city-timezones-1.3.4.tgz#a8c9aa1c7630ed99a2acee33640a205e1c230433"
+ integrity sha512-yLmtCxU4y5HLAw9XGIMcGEXO+R2KH1sb595wEQC/E9BxSDpazCD7v9ZQRySO7367IXWsWqt3z2xFVh3OkZdgEQ==
cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.3:
version "1.4.3"
@@ -6896,9 +6915,9 @@ codemirror-spell-checker@1.1.2:
typo-js "*"
codemirror@^5.65.15:
- version "5.65.20"
- resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.20.tgz#8aa77c2dbfeb2df9b0828bf8e7d64fdd566eeff0"
- integrity sha512-i5dLDDxwkFCbhjvL2pNjShsojoL3XHyDwsGv1jqETUoW+lzpBKKqNTUWgQwVAOa0tUm4BwekT455ujafi8payA==
+ version "5.65.21"
+ resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.21.tgz#cacf320606c5450ad3b3da34bb9c666afec21068"
+ integrity sha512-6teYk0bA0nR3QP0ihGMoxuKzpl5W80FpnHpBJpgy66NK3cZv5b/d/HY8PnRvfSsCG1MTfr92u2WUl+wT0E40mQ==
codemirror@^6.0.0:
version "6.0.2"
@@ -7118,9 +7137,9 @@ content-type@~1.0.4, content-type@~1.0.5:
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
contentful-resolve-response@^1.3.12:
- version "1.9.4"
- resolved "https://registry.yarnpkg.com/contentful-resolve-response/-/contentful-resolve-response-1.9.4.tgz#a0206be0218af38db5280894b7fc748cbfeb68d9"
- integrity sha512-8qu2dM2IMoVQhBhp81BVGB9ISantPmPTZ3EELGxuM8e/t+jSe+xmsVk5yHE+a9AYMBKSwgupBnkjGZE4RzFowQ==
+ version "1.9.8"
+ resolved "https://registry.yarnpkg.com/contentful-resolve-response/-/contentful-resolve-response-1.9.8.tgz#9daafd4d2c250558a24fa96dd3a66db903758712"
+ integrity sha512-gudcrg8Z2pt+Gf76miW0ebmamLhoIZkLAadLJPO5EHeSljwnbYDawffAeqiWnd8UR5Zi+cAzcWMEBtUT9GpBpg==
dependencies:
fast-copy "^3.0.2"
@@ -7179,17 +7198,17 @@ cookie@~0.7.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
-core-js-compat@^3.43.0:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3"
- integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==
+core-js-compat@^3.43.0, core-js-compat@^3.48.0:
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.49.0.tgz#06145447d92f4aaf258a0c44f24b47afaeaffef6"
+ integrity sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==
dependencies:
- browserslist "^4.28.0"
+ browserslist "^4.28.1"
core-js-pure@^3.23.3:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.47.0.tgz#1104df8a3b6eb9189fcc559b5a65b90f66e7e887"
- integrity sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.49.0.tgz#ff8436b7251a3832f5fdbbe3e10f7f2e58e51fb1"
+ integrity sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==
core-js@^1.0.0:
version "1.2.7"
@@ -7197,9 +7216,9 @@ core-js@^1.0.0:
integrity sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==
core-js@^3.19.2, core-js@^3.6.4:
- version "3.47.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.47.0.tgz#436ef07650e191afeb84c24481b298bd60eb4a17"
- integrity sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==
+ version "3.49.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.49.0.tgz#8b4d520ac034311fa21aa616f017ada0e0dbbddd"
+ integrity sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==
core-util-is@~1.0.0:
version "1.0.3"
@@ -7676,6 +7695,11 @@ date-format@4.0.3:
resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873"
integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ==
+dayjs@^1.11.7:
+ version "1.11.20"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.20.tgz#88d919fd639dc991415da5f4cb6f1b6650811938"
+ integrity sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==
+
debounce@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
@@ -7688,7 +7712,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.6.0, debug@^2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@4.4.3, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0, debug@^4.4.1:
+debug@4, debug@4.4.3, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0, debug@^4.4.3:
version "4.4.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
@@ -7720,9 +7744,9 @@ decimal.js@^10.2.1:
integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==
decode-named-character-reference@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed"
- integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f"
+ integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==
dependencies:
character-entities "^2.0.0"
@@ -7749,9 +7773,9 @@ dedent@^0.7.0:
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
dedent@^1.0.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.0.tgz#c1f9445335f0175a96587be245a282ff451446ca"
- integrity sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.7.2.tgz#34e2264ab538301e27cf7b07bf2369c19baa8dd9"
+ integrity sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==
deep-diff@^0.3.5:
version "0.3.8"
@@ -7903,10 +7927,10 @@ detect-indent@^6.1.0:
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
-detect-libc@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
- integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+detect-libc@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
+ integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
detect-newline@^3.0.0:
version "3.1.0"
@@ -7969,14 +7993,14 @@ diff-sequences@^29.6.3:
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
diff@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
- integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.4.tgz#7a6dbfda325f25f07517e9b518f897c08332e07d"
+ integrity sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==
diff@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
- integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.2.tgz#0a4742797281d09cfa699b79ea32d27723623bad"
+ integrity sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==
dir-glob@^3.0.1:
version "3.0.1"
@@ -8094,9 +8118,9 @@ domhandler@^5.0.2, domhandler@^5.0.3:
domelementtype "^2.3.0"
dompurify@^2.5.8:
- version "2.5.8"
- resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.8.tgz#2809d89d7e528dc7a071dea440d7376df676f824"
- integrity sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.9.tgz#80481ec22dfac67285cc274cb51a45c1e9fa9c42"
+ integrity sha512-i6mvVmWN4xo9LrhCOZrDgSs9noW6nOahbrmzjRbPF36YPyj5Ue5lgok0MHDWkG7xzpWFO2OYttXdzM7rJxHvNA==
domutils@^1.7.0:
version "1.7.0"
@@ -8115,7 +8139,7 @@ domutils@^2.5.2, domutils@^2.8.0:
domelementtype "^2.2.0"
domhandler "^4.2.0"
-domutils@^3.0.1:
+domutils@^3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.2.2.tgz#edbfe2b668b0c1d97c24baf0f1062b132221bc78"
integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
@@ -8283,10 +8307,10 @@ ejs@^3.1.6, ejs@^3.1.8:
dependencies:
jake "^10.8.5"
-electron-to-chromium@^1.5.263:
- version "1.5.267"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7"
- integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
+electron-to-chromium@^1.5.328:
+ version "1.5.357"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz#fb4ecbf08fe0082b7278d12d1f5da386436575b9"
+ integrity sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==
emittery@^0.10.2:
version "0.10.2"
@@ -8318,11 +8342,6 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
-
encodeurl@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
@@ -8344,20 +8363,20 @@ endent@^2.0.1:
fast-json-parse "^1.0.3"
objectorarray "^1.0.5"
-enhanced-resolve@^5.17.3, enhanced-resolve@^5.7.0:
- version "5.18.3"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
- integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
+enhanced-resolve@^5.20.0, enhanced-resolve@^5.7.0:
+ version "5.21.3"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz#fa7fed23679e9169dfb705b8e201924421c4414a"
+ integrity sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==
dependencies:
graceful-fs "^4.2.4"
- tapable "^2.2.0"
+ tapable "^2.3.3"
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-entities@^4.2.0, entities@^4.4.0:
+entities@^4.2.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
@@ -8367,6 +8386,11 @@ entities@^6.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694"
integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==
+entities@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-7.0.1.tgz#26e8a88889db63417dcb9a1e79a3f1bc92b5976b"
+ integrity sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==
+
entities@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
@@ -8391,10 +8415,10 @@ error-stack-parser@^2.0.6:
dependencies:
stackframe "^1.3.4"
-es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0:
- version "1.24.0"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
- integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
+es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0, es-abstract@^1.24.2:
+ version "1.24.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.2.tgz#2dbd38c180735ee983f77585140a2706a963ed9a"
+ integrity sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==
dependencies:
array-buffer-byte-length "^1.0.2"
arraybuffer.prototype.slice "^1.0.4"
@@ -8482,32 +8506,37 @@ es-get-iterator@^1.1.3:
stop-iteration-iterator "^1.0.0"
es-iterator-helpers@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75"
- integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.3.2.tgz#8f4ff1f3603cbd09fbdb72c747a679779a65cc7f"
+ integrity sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.3"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
define-properties "^1.2.1"
- es-abstract "^1.23.6"
+ es-abstract "^1.24.2"
es-errors "^1.3.0"
- es-set-tostringtag "^2.0.3"
+ es-set-tostringtag "^2.1.0"
function-bind "^1.1.2"
- get-intrinsic "^1.2.6"
+ get-intrinsic "^1.3.0"
globalthis "^1.0.4"
gopd "^1.2.0"
has-property-descriptors "^1.0.2"
has-proto "^1.2.0"
has-symbols "^1.1.0"
internal-slot "^1.1.0"
- iterator.prototype "^1.1.4"
- safe-array-concat "^1.1.3"
+ iterator.prototype "^1.1.5"
+ math-intrinsics "^1.1.0"
-es-module-lexer@^1.2.1, es-module-lexer@^1.4.1:
+es-module-lexer@^1.4.1:
version "1.7.0"
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a"
integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
+es-module-lexer@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz#1dfcbb5ea3bbfb63f28e1fc3676c3676d1c9624c"
+ integrity sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==
+
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
@@ -8515,7 +8544,7 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
dependencies:
es-errors "^1.3.0"
-es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0:
+es-set-tostringtag@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
@@ -8835,13 +8864,13 @@ eslint-config-react-important-stuff@^3.0.0:
eslint-plugin-react-hooks "^4.0.8"
eslint-import-resolver-node@^0.3.9:
- version "0.3.9"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac"
- integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==
+ version "0.3.10"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz#84ce3005abfc300588cf23bbac1aabec1fc6e8c1"
+ integrity sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==
dependencies:
debug "^3.2.7"
- is-core-module "^2.13.0"
- resolve "^1.22.4"
+ is-core-module "^2.16.1"
+ resolve "^2.0.0-next.6"
eslint-import-resolver-typescript@^3.10.1:
version "3.10.1"
@@ -9111,9 +9140,9 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.0, esquery@^1.4.2:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
- integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d"
+ integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==
dependencies:
estraverse "^5.1.0"
@@ -9170,11 +9199,6 @@ event-stream@=3.3.4:
stream-combiner "~0.0.4"
through "~2.3.1"
-event-target-shim@^5.0.0:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
- integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
-
eventemitter3@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
@@ -9186,11 +9210,11 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4:
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
eventemitter3@^5.0.0, eventemitter3@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
- integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb"
+ integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==
-events@^3.2.0, events@^3.3.0:
+events@^3.2.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
@@ -9267,16 +9291,16 @@ expect@^29.0.0, expect@^29.7.0:
jest-util "^29.7.0"
expect@^30.0.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/expect/-/expect-30.2.0.tgz#d4013bed267013c14bc1199cec8aa57cee9b5869"
- integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-30.4.1.tgz#897e0390a0b6c333dbcf3a24dee3ad49553577e0"
+ integrity sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==
dependencies:
- "@jest/expect-utils" "30.2.0"
+ "@jest/expect-utils" "30.4.1"
"@jest/get-type" "30.1.0"
- jest-matcher-utils "30.2.0"
- jest-message-util "30.2.0"
- jest-mock "30.2.0"
- jest-util "30.2.0"
+ jest-matcher-utils "30.4.1"
+ jest-message-util "30.4.1"
+ jest-mock "30.4.1"
+ jest-util "30.4.1"
express-fileupload@^1.5.2:
version "1.5.2"
@@ -9293,13 +9317,13 @@ express-interceptor@^1.2.0:
debug "^2.2.0"
express@^4.17.3, express@^4.22.1:
- version "4.22.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069"
- integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==
+ version "4.22.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.22.2.tgz#c17ae0981e5efc24b22272f0e041c4662503b700"
+ integrity sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "~1.20.3"
+ body-parser "~1.20.5"
content-disposition "~0.5.4"
content-type "~1.0.4"
cookie "~0.7.1"
@@ -9318,7 +9342,7 @@ express@^4.17.3, express@^4.22.1:
parseurl "~1.3.3"
path-to-regexp "~0.1.12"
proxy-addr "~2.0.7"
- qs "~6.14.0"
+ qs "~6.15.1"
range-parser "~1.2.1"
safe-buffer "5.2.1"
send "~0.19.0"
@@ -9393,16 +9417,28 @@ fast-levenshtein@^2.0.6:
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fast-uri@^3.0.1:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa"
- integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.2.tgz#8af3d4fc9d3e71b11572cc2673b514a7d1a8c8ec"
+ integrity sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==
+
+fast-xml-builder@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c"
+ integrity sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==
+ dependencies:
+ path-expression-matcher "^1.5.0"
+ xml-naming "^0.1.0"
-fast-xml-parser@^4.4.1:
- version "4.5.6"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.6.tgz#4ff57d4aca13a2d11aa42ad460495cf00f32b655"
- integrity sha512-Yd4vkROfJf8AuJrDIVMVmYfULKmIJszVsMv7Vo71aocsKgFxpdlpSHXSaInvyYfgw2PRuObQSW2GFpVMUjxu9A==
+fast-xml-parser@^5.3.6:
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz#64d71f0f8d4bf23621dffd762aef7e98c1884fc1"
+ integrity sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==
dependencies:
- strnum "^1.0.5"
+ "@nodable/entities" "^2.1.0"
+ fast-xml-builder "^1.2.0"
+ path-expression-matcher "^1.5.0"
+ strnum "^2.3.0"
+ xml-naming "^0.1.0"
fastest-levenshtein@^1.0.12:
version "1.0.16"
@@ -9415,9 +9451,9 @@ fastparse@^1.1.2:
integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
fastq@^1.6.0:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
- integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675"
+ integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==
dependencies:
reusify "^1.0.4"
@@ -9492,9 +9528,9 @@ fetch-retry@^5.0.2:
integrity sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==
fflate@^0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea"
- integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.3.tgz#bc27d8eb30343d4d512abb03480202ce65d825fc"
+ integrity sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==
file-entry-cache@^6.0.1:
version "6.0.1"
@@ -9526,19 +9562,20 @@ file-system-cache@2.3.0:
fs-extra "11.1.1"
ramda "0.29.0"
-file-type@^16.5.4:
- version "16.5.4"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd"
- integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==
+file-type@^22.0.0:
+ version "22.0.1"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-22.0.1.tgz#0184dbd6b6353bb25eb21a0c413a23885b6d1818"
+ integrity sha512-ww5Mhre0EE+jmBvOXTmXAbEMuZE7uX4a3+oRCQFNj8w++g3ev913N6tXQz0XTXbueQ5TWQfm6BdaViEHHn8bhA==
dependencies:
- readable-web-to-node-stream "^3.0.0"
- strtok3 "^6.2.4"
- token-types "^4.1.1"
+ "@tokenizer/inflate" "^0.4.1"
+ strtok3 "^10.3.5"
+ token-types "^6.1.2"
+ uint8array-extras "^1.5.0"
filelist@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
- integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.6.tgz#1e8870942a7c636c862f7c49b9394937b6a995a3"
+ integrity sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==
dependencies:
minimatch "^5.0.1"
@@ -9548,9 +9585,9 @@ filesize@^8.0.6:
integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==
filestack-js@^3.44.2:
- version "3.44.2"
- resolved "https://registry.yarnpkg.com/filestack-js/-/filestack-js-3.44.2.tgz#e3c01c8c411a85e842ae2cac21b439cd986fe990"
- integrity sha512-/52q66fzisVvl+0/sZ9VqYPsDdHXVJhUwIPlH88Zhv3NGnRaynnoW5PffHNXObtV9wnkAgZGxbsZVZRtKVLzKQ==
+ version "3.51.4"
+ resolved "https://registry.yarnpkg.com/filestack-js/-/filestack-js-3.51.4.tgz#910be7a967ea6249c5da02766b09503d8a650b5e"
+ integrity sha512-zybINn1MItq7MKH1akzvu6SifmT6ssMvUmDy1+mBPr6W/q5I26OEuFKilKHTat5RgbjSZtXMfkhyPjKeVVX6yw==
dependencies:
"@babel/runtime" "^7.8.4"
"@filestack/loader" "^1.0.9"
@@ -9558,8 +9595,8 @@ filestack-js@^3.44.2:
abab "^2.0.6"
debug "^4.3.4"
eventemitter3 "^5.0.0"
- fast-xml-parser "^4.4.1"
- file-type "^16.5.4"
+ fast-xml-parser "^5.3.6"
+ file-type "^22.0.0"
follow-redirects "^1.15.2"
isutf8 "^4.0.0"
jsonschema "^1.4.1"
@@ -9683,9 +9720,9 @@ flatted@^3.2.9:
integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==
flow-parser@0.*:
- version "0.293.0"
- resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.293.0.tgz#1f8d96753e298b86915ae678ec83b874261b36ba"
- integrity sha512-8tEGAcWpCqioajiSqrJr2+JSmkEI2vO/UACFGG378RO106ez9xugVxe9EpXD3aI1Vbf+mEUGhMt0gMpveJwVGA==
+ version "0.314.0"
+ resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.314.0.tgz#bf11bc9db676dd64a4049f55624b58080f850169"
+ integrity sha512-ayvpVFL/wibphkhjaz6PwL/F+Vz9lZB7qwFIHvsFiPQMfKmrqRXp1UyJgxMqyanW6QQDvsB12MLWFCc2cYBOtw==
flux-standard-action@^2.0.3:
version "2.1.2"
@@ -9695,7 +9732,7 @@ flux-standard-action@^2.0.3:
lodash.isplainobject "^4.0.6"
lodash.isstring "^4.0.1"
-follow-redirects@^1.0.0, follow-redirects@^1.15.11, follow-redirects@^1.15.2:
+follow-redirects@^1.0.0, follow-redirects@^1.15.2, follow-redirects@^1.16.0:
version "1.16.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.16.0.tgz#28474a159d3b9d11ef62050a14ed60e4df6d61bc"
integrity sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==
@@ -9797,7 +9834,7 @@ fraction.js@^5.3.4:
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-5.3.4.tgz#8c0fcc6a9908262df4ed197427bdeef563e0699a"
integrity sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==
-fresh@0.5.2, fresh@~0.5.2:
+fresh@~0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
@@ -9836,9 +9873,9 @@ fs-extra@^10.0.0:
universalify "^2.0.0"
fs-extra@^11.1.0, fs-extra@^11.1.1:
- version "11.3.2"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.2.tgz#c838aeddc6f4a8c74dd15f85e11fe5511bfe02a4"
- integrity sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==
+ version "11.3.5"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.5.tgz#07a44eff40bea53e719909a532f91a23bf0769ff"
+ integrity sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
@@ -9991,9 +10028,9 @@ get-symbol-description@^1.1.0:
get-intrinsic "^1.2.6"
get-tsconfig@^4.10.0:
- version "4.13.0"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7"
- integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.14.0.tgz#985d85c52a9903864280ccc2448d413fbf1efed8"
+ integrity sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==
dependencies:
resolve-pkg-maps "^1.0.0"
@@ -10046,14 +10083,14 @@ glob@^10.0.0:
package-json-from-dist "^1.0.0"
path-scurry "^1.11.1"
-glob@^13.0.0:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.0.tgz#9d9233a4a274fc28ef7adce5508b7ef6237a1be3"
- integrity sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==
+glob@^13.0.3:
+ version "13.0.6"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.6.tgz#078666566a425147ccacfbd2e332deb66a2be71d"
+ integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==
dependencies:
- minimatch "^10.1.1"
- minipass "^7.1.2"
- path-scurry "^2.0.0"
+ minimatch "^10.2.2"
+ minipass "^7.1.3"
+ path-scurry "^2.0.2"
glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0:
version "7.2.3"
@@ -10259,10 +10296,10 @@ hasha@^5.0.0:
dependencies:
traverse ">=0.2.4"
-hasown@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
- integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+hasown@^2.0.2, hasown@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c"
+ integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==
dependencies:
function-bind "^1.1.2"
@@ -10460,9 +10497,9 @@ html-void-elements@^3.0.0:
integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==
html-webpack-plugin@^5.5.0, html-webpack-plugin@^5.5.4:
- version "5.6.5"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz#d57defb83cabbf29bf56b2d4bf10b67b650066be"
- integrity sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==
+ version "5.6.7"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz#429bab4e12abf3c07e1c608886608e2df2c06b11"
+ integrity sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==
dependencies:
"@types/html-minifier-terser" "^6.0.0"
html-minifier-terser "^6.0.2"
@@ -10478,6 +10515,16 @@ html2canvas@^1.4.1:
css-line-break "^2.1.0"
text-segmentation "^1.0.3"
+htmlparser2@^10.1, htmlparser2@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-10.1.0.tgz#fe3f2e12c73b6e462d4e10395db9c1119e4d6ae4"
+ integrity sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
+ domutils "^3.2.2"
+ entities "^7.0.1"
+
htmlparser2@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
@@ -10488,16 +10535,6 @@ htmlparser2@^6.1.0:
domutils "^2.5.2"
entities "^2.0.0"
-htmlparser2@^8.0.0:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21"
- integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==
- dependencies:
- domelementtype "^2.3.0"
- domhandler "^5.0.3"
- domutils "^3.0.1"
- entities "^4.4.0"
-
http-cache-semantics@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5"
@@ -10508,27 +10545,17 @@ http-deceiver@^1.2.7:
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
-http-errors@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
- integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+http-errors@~1.8.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
+ integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
dependencies:
- depd "2.0.0"
+ depd "~1.1.2"
inherits "2.0.4"
setprototypeof "1.2.0"
- statuses "2.0.1"
+ statuses ">= 1.5.0 < 2"
toidentifier "1.0.1"
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
-
http-errors@~2.0.0, http-errors@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b"
@@ -10590,7 +10617,7 @@ https-proxy-agent@^4.0.0:
agent-base "5"
debug "4"
-https-proxy-agent@^5.0.0:
+https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@@ -10681,10 +10708,10 @@ immer@^9.0.7:
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176"
integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
-immutable@*, immutable@^5.0.2:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f"
- integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==
+immutable@*, immutable@^5.1.5:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.5.tgz#93ee4db5c2a9ab42a4a783069f3c5d8847d40165"
+ integrity sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==
immutable@~3.7.4:
version "3.7.6"
@@ -10692,9 +10719,9 @@ immutable@~3.7.4:
integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==
immutable@~3.8.2:
- version "3.8.2"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3"
- integrity sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.3.tgz#0a8d2494a94d4b2d4f0e99986e74dd25d1e9a859"
+ integrity sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==
import-fresh@^3.1.0, import-fresh@^3.2.1:
version "3.3.1"
@@ -10735,11 +10762,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-
ini@^1.3.5, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
@@ -10777,9 +10799,9 @@ ipaddr.js@1.9.1:
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.3.0.tgz#71dce70e1398122208996d1c22f2ba46a24b1abc"
- integrity sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.4.0.tgz#038e9ceaf8219efc5bb76347b7eb787875d5095b"
+ integrity sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==
is-absolute-url@^3.0.0:
version "3.0.3"
@@ -10865,12 +10887,12 @@ is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.13.0, is-core-module@^2.16.1:
- version "2.16.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
- integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
+is-core-module@^2.16.1, is-core-module@^2.16.2:
+ version "2.16.2"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.2.tgz#3e07450a8080ebce3fbf0cac494f4d2ab324e082"
+ integrity sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==
dependencies:
- hasown "^2.0.2"
+ hasown "^2.0.3"
is-data-view@^1.0.1, is-data-view@^1.0.2:
version "1.0.2"
@@ -11265,7 +11287,7 @@ isutf8@^4.0.0:
resolved "https://registry.yarnpkg.com/isutf8/-/isutf8-4.0.1.tgz#046799bca926e9438c650def6ba94a8d9871da90"
integrity sha512-1pk2/2pE+G48eETnp4uOLxQ9WUCxD7oVauYwhFEAGREJPDxEO7iX9qstylrCcx3lNWa1RCS2DxGTxrHdWqS7/w==
-iterator.prototype@^1.1.4:
+iterator.prototype@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39"
integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==
@@ -11457,15 +11479,15 @@ jest-config@^29.7.0:
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825"
- integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==
+jest-diff@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.4.1.tgz#26691c73975768409af4a66b2754cea3182aa2dc"
+ integrity sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==
dependencies:
- "@jest/diff-sequences" "30.0.1"
+ "@jest/diff-sequences" "30.4.0"
"@jest/get-type" "30.1.0"
chalk "^4.1.2"
- pretty-format "30.2.0"
+ pretty-format "30.4.1"
jest-diff@^27.5.1:
version "27.5.1"
@@ -11648,15 +11670,15 @@ jest-leak-detector@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
-jest-matcher-utils@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz#69a0d4c271066559ec8b0d8174829adc3f23a783"
- integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==
+jest-matcher-utils@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz#3fee8c89dbd8fc6e60eb590def9897e18f110ec4"
+ integrity sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==
dependencies:
"@jest/get-type" "30.1.0"
chalk "^4.1.2"
- jest-diff "30.2.0"
- pretty-format "30.2.0"
+ jest-diff "30.4.1"
+ pretty-format "30.4.1"
jest-matcher-utils@^27.5.1:
version "27.5.1"
@@ -11678,18 +11700,19 @@ jest-matcher-utils@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
-jest-message-util@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.2.0.tgz#fc97bf90d11f118b31e6131e2b67fc4f39f92152"
- integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==
+jest-message-util@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.4.1.tgz#40f6bfa5f564363edcba7ce0ca64277fd2ad6af7"
+ integrity sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==
dependencies:
"@babel/code-frame" "^7.27.1"
- "@jest/types" "30.2.0"
+ "@jest/types" "30.4.1"
"@types/stack-utils" "^2.0.3"
chalk "^4.1.2"
graceful-fs "^4.2.11"
- micromatch "^4.0.8"
- pretty-format "30.2.0"
+ jest-util "30.4.1"
+ picomatch "^4.0.3"
+ pretty-format "30.4.1"
slash "^3.0.0"
stack-utils "^2.0.6"
@@ -11738,14 +11761,14 @@ jest-message-util@^29.7.0:
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.2.0.tgz#69f991614eeb4060189459d3584f710845bff45e"
- integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==
+jest-mock@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.4.1.tgz#5e11a05d7719a1e3c7bba6348b70ff4e1bc5ea68"
+ integrity sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==
dependencies:
- "@jest/types" "30.2.0"
+ "@jest/types" "30.4.1"
"@types/node" "*"
- jest-util "30.2.0"
+ jest-util "30.4.1"
jest-mock@^27.0.6, jest-mock@^27.5.1:
version "27.5.1"
@@ -11769,10 +11792,10 @@ jest-pnp-resolver@^1.2.2:
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
-jest-regex-util@30.0.1:
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b"
- integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==
+jest-regex-util@30.4.0:
+ version "30.4.0"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.4.0.tgz#f75ccc43857633df2563a03588b5cb45c7c2941b"
+ integrity sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==
jest-regex-util@^27.5.1:
version "27.5.1"
@@ -12009,17 +12032,17 @@ jest-snapshot@^29.7.0:
pretty-format "^29.7.0"
semver "^7.5.3"
-jest-util@30.2.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.2.0.tgz#5142adbcad6f4e53c2776c067a4db3c14f913705"
- integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==
+jest-util@30.4.1:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.4.1.tgz#979c9d014fdd12bb95d3dcde0192e1a9e0bc93d6"
+ integrity sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==
dependencies:
- "@jest/types" "30.2.0"
+ "@jest/types" "30.4.1"
"@types/node" "*"
chalk "^4.1.2"
ci-info "^4.2.0"
graceful-fs "^4.2.11"
- picomatch "^4.0.2"
+ picomatch "^4.0.3"
jest-util@^27.5.1:
version "27.5.1"
@@ -12196,10 +12219,10 @@ jiti@^1.21.7:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9"
integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==
-joi@^18.0.1:
- version "18.0.2"
- resolved "https://registry.yarnpkg.com/joi/-/joi-18.0.2.tgz#30ced6aed00a7848cc11f92859515258301dc3a4"
- integrity sha512-RuCOQMIt78LWnktPoeBL0GErkNaJPTBGcYuyaBvUOQSpcpcLfWrHPPihYdOGbV5pam9VTWbeoF7TsGiHugcjGA==
+joi@^18.0.2:
+ version "18.2.1"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-18.2.1.tgz#a022e39496e25b010a6d4649975c160a4315bd79"
+ integrity sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ==
dependencies:
"@hapi/address" "^5.1.1"
"@hapi/formula" "^3.0.2"
@@ -12207,7 +12230,7 @@ joi@^18.0.1:
"@hapi/pinpoint" "^2.0.1"
"@hapi/tlds" "^1.1.1"
"@hapi/topo" "^6.0.2"
- "@standard-schema/spec" "^1.0.0"
+ "@standard-schema/spec" "^1.1.0"
joycon@^3.1.1:
version "3.1.1"
@@ -12313,7 +12336,7 @@ json-buffer@3.0.1:
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
+json-parse-even-better-errors@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -12328,11 +12351,6 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-json-schema@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
- integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
-
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
@@ -12356,9 +12374,9 @@ json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3:
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
jsonfile@^6.0.1:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62"
- integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.1.tgz#b6e31717f22cc37330b081ce0051ed5de53af2f6"
+ integrity sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==
dependencies:
universalify "^2.0.0"
optionalDependencies:
@@ -12373,7 +12391,7 @@ jsonpath@^1.1.1:
static-eval "2.1.1"
underscore "1.13.6"
-jsonpointer@^5.0.0:
+jsonpointer@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559"
integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
@@ -12448,13 +12466,20 @@ language-tags@^1.0.9:
language-subtag-registry "^0.3.20"
launch-editor@^2.6.0:
- version "2.12.0"
- resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.12.0.tgz#cc740f4e0263a6b62ead2485f9896e545321f817"
- integrity sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==
+ version "2.13.2"
+ resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.13.2.tgz#41d51baaf8afb393224b89bd2bcb4e02f2306405"
+ integrity sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==
dependencies:
picocolors "^1.1.1"
shell-quote "^1.8.3"
+launder@^1.7.1:
+ version "1.7.1"
+ resolved "https://registry.yarnpkg.com/launder/-/launder-1.7.1.tgz#ef7155ab0c3ddec2323089c961d2e9a249aa5b0d"
+ integrity sha512-mU6WRz5EusL9ZZuiZ5SO4Y6C0P9PAUR9iwdb6bzj4KDihm28DiHFw+/yk9DBH4f+Pv1wuzQ4e2jV3oQ7mkIqvw==
+ dependencies:
+ dayjs "^1.11.7"
+
lazy-ass@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
@@ -12538,9 +12563,9 @@ load-tsconfig@^0.2.0:
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
loader-runner@^4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.1.tgz#6c76ed29b0ccce9af379208299f07f876de737e3"
- integrity sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.2.tgz#9913d3a15971f8f635915e601fb5c9d495d918e9"
+ integrity sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==
loader-utils@^1.1.0, loader-utils@^1.2.3:
version "1.4.2"
@@ -12710,7 +12735,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
-lodash@^4.0.1, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@^4.18.1, lodash@^4.2.1, lodash@^4.7.0:
+lodash@^4.0.1, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.23, lodash@^4.17.5, lodash@^4.18.1, lodash@^4.2.1, lodash@^4.7.0:
version "4.18.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.18.1.tgz#ff2b66c1f6326d59513de2407bf881439812771c"
integrity sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==
@@ -12764,9 +12789,9 @@ lru-cache@^10.2.0:
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
lru-cache@^11.0.0:
- version "11.2.4"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d"
- integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==
+ version "11.4.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.4.0.tgz#87a577bfa71f7c94dfd71692874b859d1ca41a28"
+ integrity sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==
lru-cache@^5.1.1:
version "5.1.1"
@@ -12926,9 +12951,9 @@ mdast-util-from-markdown@^1.0.0:
uvu "^0.5.0"
mdast-util-from-markdown@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a"
- integrity sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz#c95822b91aab75f18a4cbe8b2f51b873ed2cf0c7"
+ integrity sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==
dependencies:
"@types/mdast" "^4.0.0"
"@types/unist" "^3.0.0"
@@ -13645,7 +13670,7 @@ mime-db@1.52.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-"mime-db@>= 1.43.0 < 2":
+"mime-db@>= 1.43.0 < 2", mime-db@^1.54.0:
version "1.54.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
@@ -13662,7 +13687,7 @@ mime-types@2.1.18:
dependencies:
mime-db "~1.33.0"
-mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34, mime-types@~2.1.35:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -13712,9 +13737,9 @@ min-indent@^1.0.0:
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
mini-css-extract-plugin@^2.4.5:
- version "2.9.4"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz#cafa1a42f8c71357f49cd1566810d74ff1cb0200"
- integrity sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==
+ version "2.10.2"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.2.tgz#5c85ec9450c05d26e32531b465a15a08c3a57253"
+ integrity sha512-AOSS0IdEB95ayVkxn5oGzNQwqAi2J0Jb/kKm43t7H73s8+f5873g0yuj0PNvK4dO75mu5DHg4nlgp4k6Kga8eg==
dependencies:
schema-utils "^4.0.0"
tapable "^2.2.1"
@@ -13724,33 +13749,33 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-minimatch@3.1.2, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+minimatch@3.1.5, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e"
+ integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==
dependencies:
brace-expansion "^1.1.7"
-minimatch@^10.1.1:
- version "10.1.1"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55"
- integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==
+minimatch@^10.2.2:
+ version "10.2.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1"
+ integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==
dependencies:
- "@isaacs/brace-expansion" "^5.0.0"
+ brace-expansion "^5.0.5"
minimatch@^5.0.1:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
- integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+ version "5.1.9"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.9.tgz#1293ef15db0098b394540e8f9f744f9fda8dee4b"
+ integrity sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==
dependencies:
brace-expansion "^2.0.1"
minimatch@^9.0.4:
- version "9.0.5"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
- integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ version "9.0.9"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e"
+ integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==
dependencies:
- brace-expansion "^2.0.1"
+ brace-expansion "^2.0.2"
minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
@@ -13769,10 +13794,10 @@ minipass@^5.0.0:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
- integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2, minipass@^7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.3.tgz#79389b4eb1bb2d003a9bba87d492f2bd37bdc65b"
+ integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==
minizlib@^2.1.1:
version "2.1.2"
@@ -13800,14 +13825,14 @@ mkdirp@^1.0.3:
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
mlly@^1.7.4:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.8.0.tgz#e074612b938af8eba1eaf43299cbc89cb72d824e"
- integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.8.2.tgz#e7f7919a82d13b174405613117249a3f449d78bb"
+ integrity sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==
dependencies:
- acorn "^8.15.0"
+ acorn "^8.16.0"
pathe "^2.0.3"
pkg-types "^1.3.1"
- ufo "^1.6.1"
+ ufo "^1.6.3"
moment-duration-format@^2.3.2:
version "2.3.2"
@@ -13815,9 +13840,9 @@ moment-duration-format@^2.3.2:
integrity sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ==
moment-timezone@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.6.0.tgz#c5a6519171f31a64739ea75d33f5c136c08ff608"
- integrity sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q==
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.6.2.tgz#a704cca03ee502f0df6edd42efcdcc61ee03190e"
+ integrity sha512-lDsQv8FoGdBUdf0+TjGsq2orxKuXdwFlQ6Zw6TX3xIcTwTfEpCLyKqvEauvCHJ8iu3KBV8+uPhlv70YsNGdUBQ==
dependencies:
moment "^2.29.4"
@@ -13874,9 +13899,9 @@ mz@^2.7.0:
thenify-all "^1.0.0"
nanoid@^3.3.11:
- version "3.3.11"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
- integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
+ version "3.3.12"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05"
+ integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==
napi-postinstall@^0.3.0:
version "0.3.4"
@@ -13943,6 +13968,16 @@ node-dir@^0.1.17:
dependencies:
minimatch "^3.0.2"
+node-exports-info@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/node-exports-info/-/node-exports-info-1.6.0.tgz#1aedafb01a966059c9a5e791a94a94d93f5c2a13"
+ integrity sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==
+ dependencies:
+ array.prototype.flatmap "^1.3.3"
+ es-errors "^1.3.0"
+ object.entries "^1.1.9"
+ semver "^6.3.1"
+
node-fetch-native@^1.6.6:
version "1.6.7"
resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz#9d09ca63066cc48423211ed4caf5d70075d76a71"
@@ -13972,10 +14007,10 @@ node-preload@^0.2.1:
dependencies:
process-on-spawn "^1.0.0"
-node-releases@^2.0.27:
- version "2.0.27"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
- integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
+node-releases@^2.0.36:
+ version "2.0.44"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.44.tgz#212c9b983f5bb70d311dd68c27d55dd0e65d1ca7"
+ integrity sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==
normalize-package-data@^2.5.0:
version "2.5.0"
@@ -13992,11 +14027,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-
normalize-url@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
@@ -14175,7 +14205,7 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-on-finished@2.4.1, on-finished@~2.4.1:
+on-finished@~2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
@@ -14426,7 +14456,7 @@ parse5@^7.0.0:
dependencies:
entities "^6.0.0"
-parseurl@~1.3.2, parseurl@~1.3.3:
+parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
@@ -14467,6 +14497,11 @@ path-exists@^5.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7"
integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+path-expression-matcher@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a"
+ integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -14505,10 +14540,10 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-path-scurry@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.1.tgz#4b6572376cfd8b811fca9cd1f5c24b3cbac0fe10"
- integrity sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==
+path-scurry@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.2.tgz#6be0d0ee02a10d9e0de7a98bae65e182c9061f85"
+ integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==
dependencies:
lru-cache "^11.0.0"
minipass "^7.1.2"
@@ -14519,9 +14554,9 @@ path-to-regexp@3.3.0:
integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==
path-to-regexp@~0.1.12:
- version "0.1.12"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
- integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.13.tgz#9b22ec16bc3ab88d05a0c7e369869421401ab17d"
+ integrity sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==
path-type@^4.0.0:
version "4.0.0"
@@ -14540,11 +14575,6 @@ pause-stream@0.0.11:
dependencies:
through "~2.3"
-peek-readable@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
- integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
-
peek-stream@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67"
@@ -14575,19 +14605,19 @@ picocolors@^1.0.0, picocolors@^1.1.1:
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601"
+ integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==
picomatch@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516"
- integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.2.tgz#8f543c114ddc037eab6b10fbd5a66cc8a51a02bc"
+ integrity sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==
-picomatch@^4.0.2, picomatch@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
- integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
+picomatch@^4.0.3, picomatch@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589"
+ integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==
pidtree@0.6.0:
version "0.6.0"
@@ -15374,9 +15404,9 @@ postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.3
source-map "^0.6.1"
postcss@^8.2.14, postcss@^8.2.7, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47:
- version "8.5.6"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
- integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
+ version "8.5.14"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c"
+ integrity sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==
dependencies:
nanoid "^3.3.11"
picocolors "^1.1.1"
@@ -15405,14 +15435,15 @@ pretty-error@^4.0.0:
lodash "^4.17.20"
renderkid "^3.0.0"
-pretty-format@30.2.0, pretty-format@^30.0.0:
- version "30.2.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe"
- integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==
+pretty-format@30.4.1, pretty-format@^30.0.0:
+ version "30.4.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.4.1.tgz#0911652e92e1e91f475e3e6a16e628e50649ea69"
+ integrity sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==
dependencies:
- "@jest/schemas" "30.0.5"
+ "@jest/schemas" "30.4.1"
ansi-styles "^5.2.0"
- react-is "^18.3.1"
+ react-is-18 "npm:react-is@^18.3.1"
+ react-is-19 "npm:react-is@^19.2.5"
pretty-format@^27.0.2, pretty-format@^27.5.1:
version "27.5.1"
@@ -15569,9 +15600,9 @@ pump@^2.0.0:
once "^1.3.1"
pump@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d"
- integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c"
+ integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==
dependencies:
end-of-stream "^1.1.0"
once "^1.3.1"
@@ -15626,10 +15657,10 @@ qrcode.react@^3.2.0:
resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.2.0.tgz#97daabd4ff641a3f3c678f87be106ebc55f9cd07"
integrity sha512-YietHHltOHA4+l5na1srdaMx4sVSOjV9tamHs+mwiLWAMr6QVACRUw1Neax5CptFILcNoITctJY0Ipyn5enQ8g==
-qs@^6.10.0, qs@^6.11.2, qs@^6.12.3, qs@^6.14.0, qs@~6.14.0:
- version "6.14.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930"
- integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
+qs@^6.10.0, qs@^6.11.2, qs@^6.12.3, qs@^6.14.0, qs@~6.15.1:
+ version "6.15.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.2.tgz#fd55426d710403ddccc45e0f9eab16db7727ece9"
+ integrity sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==
dependencies:
side-channel "^1.1.0"
@@ -15743,9 +15774,9 @@ react-color@^2.19.3:
tinycolor2 "^1.4.1"
react-colorful@^5.1.2:
- version "5.6.1"
- resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b"
- integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.7.0.tgz#82c0f31311606161ed13423979067c865e4a7877"
+ integrity sha512-fuesYIemttah97XmsIHmz4OORDHiSFzyc9HMAIrCHJou2jaRQmL8cFJ76K4zQhhj8jzwOBlOi4BaGTjjOZCfTg==
react-contenteditable@^3.3.7:
version "3.3.7"
@@ -15888,9 +15919,9 @@ react-helmet@^6.1.0:
react-side-effect "^2.1.0"
react-hook-form@^7.68.0:
- version "7.68.0"
- resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.68.0.tgz#733c6871fa4ec5e5bfb13e7650a3a912eafe1721"
- integrity sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==
+ version "7.76.0"
+ resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.76.0.tgz#b58036cabfac756500115a5a6bebc53a8314f05f"
+ integrity sha512-eKtLGgFeSgkHqQD8J59AMZ9a4uD1D83iSIzt4YlTGD7liDen5rrjcUO1rVIGd9yC1gofryjtHbv+4ny4hkLWlw==
react-hot-loader@^4.13.1:
version "4.13.1"
@@ -15906,6 +15937,16 @@ react-hot-loader@^4.13.1:
shallowequal "^1.1.0"
source-map "^0.7.3"
+"react-is-18@npm:react-is@^18.3.1":
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
+ integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
+
+"react-is-19@npm:react-is@^19.2.5":
+ version "19.2.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.2.6.tgz#aeee6159b159eb7f520d672cffcc69e7052d288f"
+ integrity sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==
+
react-is@18.1.0:
version "18.1.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67"
@@ -15921,7 +15962,7 @@ react-is@^17.0.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-is@^18.0.0, react-is@^18.3.1:
+react-is@^18.0.0:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
@@ -15996,9 +16037,9 @@ react-redux@^8.1.3:
use-sync-external-store "^1.0.0"
react-redux@^9.2.0:
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5"
- integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==
+ version "9.3.0"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.3.0.tgz#a30113bb6d95c0a715d54dda4308d450fca6ce09"
+ integrity sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==
dependencies:
"@types/use-sync-external-store" "^0.0.6"
use-sync-external-store "^1.4.0"
@@ -16052,19 +16093,19 @@ react-responsive@^9.0.2:
shallow-equal "^1.2.1"
react-router-dom@^6.30.2:
- version "6.30.2"
- resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.30.2.tgz#ee8c161bce4890d34484b552f8510f9af0e22b01"
- integrity sha512-l2OwHn3UUnEVUqc6/1VMmR1cvZryZ3j3NzapC2eUXO1dB0sYp5mvwdjiXhpUbRb21eFow3qSxpP8Yv6oAU824Q==
+ version "6.30.3"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.30.3.tgz#42ae6dc4c7158bfb0b935f162b9621b29dddf740"
+ integrity sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==
dependencies:
- "@remix-run/router" "1.23.1"
- react-router "6.30.2"
+ "@remix-run/router" "1.23.2"
+ react-router "6.30.3"
-react-router@6.30.2:
- version "6.30.2"
- resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.30.2.tgz#c78a3b40f7011f49a373b1df89492e7d4ec12359"
- integrity sha512-H2Bm38Zu1bm8KUE5NVWRMzuIyAV8p/JrOaBJAwVmp37AXG72+CZJlEBw6pdn9i5TBgLMhNDgijS4ZlblpHyWTA==
+react-router@6.30.3:
+ version "6.30.3"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.30.3.tgz#994b3ccdbe0e81fe84d4f998100f62584dfbf1cf"
+ integrity sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==
dependencies:
- "@remix-run/router" "1.23.1"
+ "@remix-run/router" "1.23.2"
react-scripts@5.0.1:
version "5.0.1"
@@ -16187,9 +16228,9 @@ react-transition-group@^4.3.0:
prop-types "^15.6.2"
react@*:
- version "19.2.1"
- resolved "https://registry.yarnpkg.com/react/-/react-19.2.1.tgz#8600fa205e58e2e807f6ef431c9f6492591a2700"
- integrity sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==
+ version "19.2.6"
+ resolved "https://registry.yarnpkg.com/react/-/react-19.2.6.tgz#3dadb8e12b2a7934c1d5317973e5dce1301f9a4d"
+ integrity sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==
react@^18.3.1:
version "18.3.1"
@@ -16253,24 +16294,6 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readable-stream@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91"
- integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==
- dependencies:
- abort-controller "^3.0.0"
- buffer "^6.0.3"
- events "^3.3.0"
- process "^0.11.10"
- string_decoder "^1.3.0"
-
-readable-web-to-node-stream@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz#392ba37707af5bf62d725c36c1b5d6ef4119eefc"
- integrity sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==
- dependencies:
- readable-stream "^4.7.0"
-
readdirp@^4.0.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d"
@@ -16465,9 +16488,9 @@ regjsgen@^0.8.0:
integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==
regjsparser@^0.13.0:
- version "0.13.0"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.0.tgz#01f8351335cf7898d43686bc74d2dd71c847ecc0"
- integrity sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.13.1.tgz#0593cbacb27527927692030928ae4d3b878d6f8d"
+ integrity sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==
dependencies:
jsesc "~3.1.0"
@@ -16719,21 +16742,25 @@ resolve.exports@^2.0.0:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f"
integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==
-resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.10, resolve@^1.22.4, resolve@^1.22.8, resolve@^1.9.0:
- version "1.22.11"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262"
- integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
+resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.11, resolve@^1.22.8, resolve@^1.9.0:
+ version "1.22.12"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.12.tgz#f5b2a680897c69c238a13cd16b15671f8b73549f"
+ integrity sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==
dependencies:
+ es-errors "^1.3.0"
is-core-module "^2.16.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^2.0.0-next.4, resolve@^2.0.0-next.5:
- version "2.0.0-next.5"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c"
- integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
+resolve@^2.0.0-next.4, resolve@^2.0.0-next.5, resolve@^2.0.0-next.6:
+ version "2.0.0-next.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.7.tgz#ba3b035d4b1ee7c522426eee73cabcb0fd5515dd"
+ integrity sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==
dependencies:
- is-core-module "^2.13.0"
+ es-errors "^1.3.0"
+ is-core-module "^2.16.2"
+ node-exports-info "^1.6.0"
+ object-keys "^1.1.1"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
@@ -16803,11 +16830,11 @@ rimraf@^3.0.0, rimraf@^3.0.2:
glob "^7.1.3"
rimraf@^6.1.2:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.2.tgz#9a0f3cea2ab853e81291127422116ecf2a86ae89"
- integrity sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.1.3.tgz#afbee236b3bd2be331d4e7ce4493bac1718981af"
+ integrity sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==
dependencies:
- glob "^13.0.0"
+ glob "^13.0.3"
package-json-from-dist "^1.0.1"
rimraf@~2.6.2:
@@ -16856,13 +16883,13 @@ sade@^1.7.3:
mri "^1.1.0"
safe-array-concat@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
- integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.4.tgz#a54cc9b61a57f33b42abad3cbdda3a2b38cc5719"
+ integrity sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==
dependencies:
- call-bind "^1.0.8"
- call-bound "^1.0.2"
- get-intrinsic "^1.2.6"
+ call-bind "^1.0.9"
+ call-bound "^1.0.4"
+ get-intrinsic "^1.3.0"
has-symbols "^1.1.0"
isarray "^2.0.5"
@@ -16906,14 +16933,15 @@ safe-regex@^2.1.1:
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sanitize-html@^2.17.0:
- version "2.17.0"
- resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.0.tgz#a8f66420a6be981d8fe412e3397cc753782598e4"
- integrity sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==
+ version "2.17.4"
+ resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-2.17.4.tgz#7db8b73b0024ccf543978c2a44da8223c4740cb1"
+ integrity sha512-2HW7v2ol/uAM7sX4hbD8Z59OGWmAPrvjL8E71UWlBcj6m+kcF6ilQBLny+cIgY214QJeJT5tQuxKKqX0SQqjGQ==
dependencies:
deepmerge "^4.2.2"
escape-string-regexp "^4.0.0"
- htmlparser2 "^8.0.0"
+ htmlparser2 "^10.1.0"
is-plain-object "^5.0.0"
+ launder "^1.7.1"
parse-srcset "^1.0.2"
postcss "^8.3.11"
@@ -16938,16 +16966,21 @@ sass-loader@^13.3.3:
neo-async "^2.6.2"
sass@^1.95.0:
- version "1.96.0"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.96.0.tgz#dca45b6b08ae829500f448124afc7c15150bbb34"
- integrity sha512-8u4xqqUeugGNCYwr9ARNtQKTOj4KmYiJAVKXf2CTIivTCR51j96htbMKWDru8H5SaQWpyVgTfOF8Ylyf5pun1Q==
+ version "1.99.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.99.0.tgz#ff9d1594da4886249dfaafabbeea2dea2dc74b26"
+ integrity sha512-kgW13M54DUB7IsIRM5LvJkNlpH+WhMpooUcaWGFARkF1Tc82v9mIWkCbCYf+MBvpIUBSeSOTilpZjEPr2VYE6Q==
dependencies:
chokidar "^4.0.0"
- immutable "^5.0.2"
+ immutable "^5.1.5"
source-map-js ">=0.6.2 <2.0.0"
optionalDependencies:
"@parcel/watcher" "^2.4.1"
+sax@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b"
+ integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==
+
sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -17028,33 +17061,14 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.7.1:
- version "7.7.3"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
- integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
+ version "7.8.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.0.tgz#ed0661039fcbcda2ce71f01fa6adbefaa77040df"
+ integrity sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==
-send@0.19.0:
- version "0.19.0"
- resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
- integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
- 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"
-
-send@~0.19.0:
- version "0.19.1"
- resolved "https://registry.yarnpkg.com/send/-/send-0.19.1.tgz#1c2563b2ee4fe510b806b21ec46f355005a369f9"
- integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==
+send@~0.19.0, send@~0.19.1:
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29"
+ integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==
dependencies:
debug "2.6.9"
depd "2.0.0"
@@ -17062,13 +17076,13 @@ send@~0.19.0:
encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
- fresh "0.5.2"
- http-errors "2.0.0"
+ fresh "~0.5.2"
+ http-errors "~2.0.1"
mime "1.6.0"
ms "2.1.3"
- on-finished "2.4.1"
+ on-finished "~2.4.1"
range-parser "~1.2.1"
- statuses "2.0.1"
+ statuses "~2.0.2"
sentence-case@^3.0.4:
version "3.0.4"
@@ -17094,56 +17108,56 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
-serialize-javascript@^6.0.0, serialize-javascript@^6.0.2:
+serialize-javascript@^6.0.0:
version "6.0.2"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2"
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
dependencies:
randombytes "^2.1.0"
-serve-handler@6.1.6:
- version "6.1.6"
- resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.6.tgz#50803c1d3e947cd4a341d617f8209b22bd76cfa1"
- integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==
+serve-handler@6.1.7:
+ version "6.1.7"
+ resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.7.tgz#e9bb864e87ee71e8dab874cde44d146b77e3fb78"
+ integrity sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==
dependencies:
bytes "3.0.0"
content-disposition "0.5.2"
mime-types "2.1.18"
- minimatch "3.1.2"
+ minimatch "3.1.5"
path-is-inside "1.0.2"
path-to-regexp "3.3.0"
range-parser "1.2.0"
serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.2.tgz#2988e3612106d78a5e4849ddff552ce7bd3d9bcb"
+ integrity sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==
dependencies:
- accepts "~1.3.4"
+ accepts "~1.3.8"
batch "0.6.1"
debug "2.6.9"
escape-html "~1.0.3"
- http-errors "~1.6.2"
- mime-types "~2.1.17"
- parseurl "~1.3.2"
+ http-errors "~1.8.0"
+ mime-types "~2.1.35"
+ parseurl "~1.3.3"
serve-static@~1.16.2:
- version "1.16.2"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
- integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
+ version "1.16.3"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9"
+ integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==
dependencies:
encodeurl "~2.0.0"
escape-html "~1.0.3"
parseurl "~1.3.3"
- send "0.19.0"
+ send "~0.19.1"
serve@^14.2.5:
- version "14.2.5"
- resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.5.tgz#569e333b99a484b3a6d25acce4a569c8c4f96373"
- integrity sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==
+ version "14.2.6"
+ resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.6.tgz#b5e520dfda9b1ed3b824a8e8d4fd6f69e4c6944c"
+ integrity sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==
dependencies:
"@zeit/schemas" "2.36.0"
- ajv "8.12.0"
+ ajv "8.18.0"
arg "5.0.2"
boxen "7.0.0"
chalk "5.0.1"
@@ -17151,7 +17165,7 @@ serve@^14.2.5:
clipboardy "3.0.0"
compression "1.8.1"
is-port-reachable "4.0.0"
- serve-handler "6.1.6"
+ serve-handler "6.1.7"
update-check "1.5.4"
set-blocking@^2.0.0:
@@ -17195,11 +17209,6 @@ setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
setprototypeof@1.2.0, setprototypeof@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
@@ -17252,12 +17261,12 @@ shell-quote@^1.7.3, shell-quote@^1.8.3:
integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==
side-channel-list@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
- integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.1.tgz#c2e0b5a14a540aebee3bbc6c3f8666cc9b509127"
+ integrity sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==
dependencies:
es-errors "^1.3.0"
- object-inspect "^1.13.3"
+ object-inspect "^1.13.4"
side-channel-map@^1.0.1:
version "1.0.1"
@@ -17482,9 +17491,9 @@ spdx-expression-parse@^3.0.0:
spdx-license-ids "^3.0.0"
spdx-license-ids@^3.0.0:
- version "3.0.22"
- resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz#abf5a08a6f5d7279559b669f47f0a43e8f3464ef"
- integrity sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==
+ version "3.0.23"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz#b069e687b1291a32f126893ed76a27a745ee2133"
+ integrity sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==
spdy-transport@^3.0.0:
version "3.0.0"
@@ -17549,9 +17558,9 @@ standalone-single-spa-webpack-plugin@^4.0.0:
integrity sha512-Gp6feJ5nNeHDayevTMmwDDi51wQxVPLV56Cwn4QrN0nAkveeTbGnJu7tObpO0lq7wUxhEjgmdwdwE9woyiCxbQ==
start-server-and-test@^2.1.3:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-2.1.3.tgz#1f8f8f2666131c502a7f8be69cf35418dde3f719"
- integrity sha512-k4EcbNjeg0odaDkAMlIeDVDByqX9PIgL4tivgP2tES6Zd8o+4pTq/HgbWCyA3VHIoZopB+wGnNPKYGGSByNriQ==
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-2.1.5.tgz#15eaa6c152dedccff942ad8e442311bf459f1430"
+ integrity sha512-A/SbXpgXE25ScSkpLLqvGvVZT0ykN6+AzS8tVqMBCTxbJy2Nwuen59opT+afalK5aS+AuQmZs0EsLwjnuDN+/g==
dependencies:
arg "^5.0.2"
bluebird "3.7.2"
@@ -17560,7 +17569,7 @@ start-server-and-test@^2.1.3:
execa "5.1.1"
lazy-ass "1.6.0"
ps-tree "1.2.0"
- wait-on "9.0.3"
+ wait-on "9.0.4"
static-eval@2.1.1:
version "2.1.1"
@@ -17569,12 +17578,7 @@ static-eval@2.1.1:
dependencies:
escodegen "^2.1.0"
-statuses@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
- integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.5.0 < 2":
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
@@ -17738,7 +17742,7 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-string_decoder@^1.1.1, string_decoder@^1.3.0:
+string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
@@ -17791,11 +17795,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1:
ansi-regex "^5.0.1"
strip-ansi@^7.0.1:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba"
- integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.2.0.tgz#d22a269522836a627af8d04b5c3fd2c7fa3e32e3"
+ integrity sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==
dependencies:
- ansi-regex "^6.0.1"
+ ansi-regex "^6.2.2"
strip-bom@^3.0.0:
version "3.0.0"
@@ -17844,18 +17848,17 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-strnum@^1.0.5:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4"
- integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
+strnum@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.3.0.tgz#81bfbfef53db8c3217ea62a98c026886ec4a2761"
+ integrity sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==
-strtok3@^6.2.4:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0"
- integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==
+strtok3@^10.3.5:
+ version "10.3.5"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-10.3.5.tgz#7213285da0dc3dec0fc8ce5df4b8b7a733f14360"
+ integrity sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==
dependencies:
"@tokenizer/token" "^0.3.0"
- peek-readable "^4.1.0"
style-loader@^3.2.1, style-loader@^3.3.1, style-loader@^3.3.4:
version "3.3.4"
@@ -18049,22 +18052,22 @@ svgo@^1.2.2:
util.promisify "~1.0.0"
svgo@^2.7.0, svgo@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
- integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.2.tgz#8e99b7ba5ac9ed7e3a446063865f61e03223fe6b"
+ integrity sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==
dependencies:
- "@trysound/sax" "0.2.0"
commander "^7.2.0"
css-select "^4.1.3"
css-tree "^1.1.3"
csso "^4.2.0"
picocolors "^1.0.0"
+ sax "^1.5.0"
stable "^0.1.8"
swc-loader@^0.2.3:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.6.tgz#bf0cba8eeff34bb19620ead81d1277fefaec6bc8"
- integrity sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/swc-loader/-/swc-loader-0.2.7.tgz#2d1611ab314c5d8342d74aa5e5901b3fbf490de2"
+ integrity sha512-nwYWw3Fh9ame3Rtm7StS9SBLpHRRnYcK7bnpF3UKZmesAK0gw2/ADvlURFAINmPvKtDLzp+GBiP9yLoEjg6S9w==
dependencies:
"@swc/counter" "^0.1.3"
@@ -18126,10 +18129,10 @@ tapable@^1.0.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-tapable@^2.0.0, tapable@^2.2.0, tapable@^2.2.1, tapable@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6"
- integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==
+tapable@^2.0.0, tapable@^2.2.1, tapable@^2.3.0, tapable@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.3.tgz#5da7c9992c46038221267985ab28421a8879f160"
+ integrity sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==
tar-fs@^2.1.1:
version "2.1.4"
@@ -18218,21 +18221,20 @@ terminal-link@^2.0.0:
ansi-escapes "^4.2.1"
supports-hyperlinks "^2.0.0"
-terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.11:
- version "5.3.15"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.15.tgz#0a26860b765eaffa8e840170aabc5b3a3f6f6bb9"
- integrity sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==
+terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.17:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz#8e7caad248183ab9e91ff08a83b0fc9f0439c3c3"
+ integrity sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==
dependencies:
"@jridgewell/trace-mapping" "^0.3.25"
jest-worker "^27.4.5"
schema-utils "^4.3.0"
- serialize-javascript "^6.0.2"
terser "^5.31.1"
terser@^5.0.0, terser@^5.10.0, terser@^5.31.1:
- version "5.44.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.44.1.tgz#e391e92175c299b8c284ad6ded609e37303b0a9c"
- integrity sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==
+ version "5.47.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.47.1.tgz#99b298e51bc41214304847de1429ec92fd1f7648"
+ integrity sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.15.0"
@@ -18318,17 +18320,17 @@ tinyexec@^0.3.2:
integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==
tinyglobby@^0.2.11, tinyglobby@^0.2.13:
- version "0.2.15"
- resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2"
- integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.16.tgz#1c3b7eb953fce42b226bc5a1ee06428281aff3d6"
+ integrity sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==
dependencies:
fdir "^6.5.0"
- picomatch "^4.0.3"
+ picomatch "^4.0.4"
tinymce@^7.9.1:
- version "7.9.1"
- resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-7.9.1.tgz#1b18bad9cb7a3b4b12e3e5a7f29fc7daad0713d7"
- integrity sha512-zaOHwmiP1EqTeLRXAvVriDb00JYnfEjWGPdKEuac7MiZJ5aiDMZ4Unc98Gmajn+PBljOmO1GKV6G0KwWn3+k8A==
+ version "7.9.2"
+ resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-7.9.2.tgz#d47db80fade57da2d54c4a086675d3570c65ce0a"
+ integrity sha512-zS2gn2CPQmZhUqLzkhwYH+WGsx/DIRY/mS18RVzsIcuQg2lN2uzaqoHSJU6DdMUpvXBtBFnLNpumC3QrDwLBzA==
tmpl@1.0.5:
version "1.0.5"
@@ -18362,20 +18364,21 @@ to-space-case@^1.0.0:
to-no-case "^1.0.0"
tocbot@^4.20.1:
- version "4.36.4"
- resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.36.4.tgz#5f82976a2455e5abff44bdff84c89443dc23180f"
- integrity sha512-ffznkKnZ1NdghwR1y8hN6W7kjn4FwcXq32Z1mn35gA7jd8dt2cTVAwL3d0BXXZGPu0Hd0evverUvcYAb/7vn0g==
+ version "4.36.8"
+ resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.36.8.tgz#b6e2e64399f64b65365491f1d7c4506d0928a213"
+ integrity sha512-TpN+Z2YP4DTboeZ3GkUjzkjmG5NhJhXTVuH9EWQ/F4HgONVje9GZ8eNZE4kk88umV5o7hm3faS+eF/7qYwsP2w==
toidentifier@1.0.1, toidentifier@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
-token-types@^4.1.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753"
- integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==
+token-types@^6.1.1, token-types@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.1.2.tgz#18d0fd59b996d421f9f83914d6101c201bd08129"
+ integrity sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==
dependencies:
+ "@borewit/text-codec" "^0.2.1"
"@tokenizer/token" "^0.3.0"
ieee754 "^1.2.1"
@@ -18686,9 +18689,9 @@ typescript@^4.9.5:
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
typo-js@*:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.3.1.tgz#c80f8c7b292caaa17a507226bf74c1cddf6a29e6"
- integrity sha512-elJkpCL6Z77Ghw0Lv0lGnhBAjSTOQ5FhiVOCfOuxhaoTT2xtLVbqikYItK5HHchzPbHEUFAcjOH669T2ZzeCbg==
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/typo-js/-/typo-js-1.3.2.tgz#03a0e0e20b06fede619ffee16d5f4e3e032b8eb2"
+ integrity sha512-Z1YkJ7IIYNrFeOxAlHUercY4Q2I+PhYD/3VkWpJGy/Oqudy3bFpNcQxnv6Oa9fTSXCHPGz1eDoX1bZYm2Z891A==
ua-parser-js@^0.7.18, ua-parser-js@^0.7.30:
version "0.7.41"
@@ -18700,16 +18703,21 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-ufo@^1.5.4, ufo@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b"
- integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==
+ufo@^1.5.4, ufo@^1.6.3:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.4.tgz#7a8fb875fcc6382d2c7d0b3692738b0500a92467"
+ integrity sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==
uglify-js@^3.1.4:
version "3.19.3"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f"
integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==
+uint8array-extras@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.5.0.tgz#10d2a85213de3ada304fea1c454f635c73839e86"
+ integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==
+
unbox-primitive@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
@@ -18725,16 +18733,16 @@ underscore@1.13.6:
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"
integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
+"undici-types@>=7.24.0 <7.24.7":
+ version "7.24.6"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91"
+ integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==
+
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-undici-types@~7.16.0:
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46"
- integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==
-
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2"
@@ -18891,9 +18899,9 @@ unist-util-visit@^4.0.0:
unist-util-visit-parents "^5.1.1"
unist-util-visit@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6"
- integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.1.0.tgz#9a2a28b0aa76a15e0da70a08a5863a2f060e2468"
+ integrity sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==
dependencies:
"@types/unist" "^3.0.0"
unist-util-is "^6.0.0"
@@ -18901,7 +18909,7 @@ unist-util-visit@^5.0.0:
"universal-navigation@https://github.com/topcoder-platform/universal-navigation#master":
version "1.0.22"
- resolved "https://github.com/topcoder-platform/universal-navigation#23b4bfc61d81496e517049b67b3ea74cb69251fe"
+ resolved "https://github.com/topcoder-platform/universal-navigation#4e70c755fe8065c50b7702a8a52e2df5b310f7f8"
universalify@^0.2.0:
version "0.2.0"
@@ -18968,10 +18976,10 @@ upath@^1.2.0:
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-update-browserslist-db@^1.2.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz#cfb4358afa08b3d5731a2ecd95eebf4ddef8033e"
- integrity sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==
+update-browserslist-db@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d"
+ integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==
dependencies:
escalade "^3.2.0"
picocolors "^1.1.1"
@@ -19102,9 +19110,9 @@ utrie@^1.0.2:
base64-arraybuffer "^1.0.2"
uuid@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912"
- integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.1.tgz#f6d81d2e1c65d00762e5e29b16c5d2d995e208ad"
+ integrity sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==
uuid@^8.3.2:
version "8.3.2"
@@ -19158,9 +19166,9 @@ validate-npm-package-license@^3.0.1:
spdx-expression-parse "^3.0.0"
validator@^13.0.0:
- version "13.15.23"
- resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.23.tgz#59a874f84e4594588e3409ab1edbe64e96d0c62d"
- integrity sha512-4yoz1kEWqUjzi5zsPbAS/903QXSYp0UOtHsPpp7p9rHAw/W+dkInskAE386Fat3oKRROwO98d9ZB0G4cObgUyw==
+ version "13.15.35"
+ resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.35.tgz#81cf455c51f15b69d8d340be5914f3fab00dbf7f"
+ integrity sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==
vary@~1.1.2:
version "1.1.2"
@@ -19228,14 +19236,14 @@ w3c-xmlserializer@^2.0.0:
dependencies:
xml-name-validator "^3.0.0"
-wait-on@9.0.3:
- version "9.0.3"
- resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.3.tgz#3ea858db0b854039e6aff5f323885aaef25e32bf"
- integrity sha512-13zBnyYvFDW1rBvWiJ6Av3ymAaq8EDQuvxZnPIw3g04UqGi4TyoIJABmfJ6zrvKo9yeFQExNkOk7idQbDJcuKA==
+wait-on@9.0.4:
+ version "9.0.4"
+ resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.4.tgz#ddf3a44ebd18f380621855d52973069ff2cb5b54"
+ integrity sha512-k8qrgfwrPVJXTeFY8tl6BxVHiclK11u72DVKhpybHfUL/K6KM4bdyK9EhIVYGytB5MJe/3lq4Tf0hrjM+pvJZQ==
dependencies:
- axios "^1.13.2"
- joi "^18.0.1"
- lodash "^4.17.21"
+ axios "^1.13.5"
+ joi "^18.0.2"
+ lodash "^4.17.23"
minimist "^1.2.8"
rxjs "^7.8.2"
@@ -19253,10 +19261,10 @@ warning@^4.0.2:
dependencies:
loose-envify "^1.0.0"
-watchpack@^2.2.0, watchpack@^2.4.4:
- version "2.4.4"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947"
- integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==
+watchpack@^2.2.0, watchpack@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.5.1.tgz#dd38b601f669e0cbf567cb802e75cead82cde102"
+ integrity sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -19463,10 +19471,10 @@ webpack-sources@^2.2.0:
source-list-map "^2.0.1"
source-map "^0.6.1"
-webpack-sources@^3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723"
- integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==
+webpack-sources@^3.3.4:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.4.1.tgz#009d110999ebd9fb3a6fa8d32eec6f84d940e65d"
+ integrity sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==
webpack-virtual-modules@^0.5.0:
version "0.5.0"
@@ -19479,9 +19487,9 @@ webpack-virtual-modules@^0.6.2:
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
webpack@5, webpack@^5.103.0, webpack@^5.64.4:
- version "5.103.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.103.0.tgz#17a7c5a5020d5a3a37c118d002eade5ee2c6f3da"
- integrity sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==
+ version "5.106.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.106.2.tgz#ca8174b4fd80f055cc5a45fcc5577d6db76c8ac5"
+ integrity sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==
dependencies:
"@types/eslint-scope" "^3.7.7"
"@types/estree" "^1.0.8"
@@ -19489,25 +19497,24 @@ webpack@5, webpack@^5.103.0, webpack@^5.64.4:
"@webassemblyjs/ast" "^1.14.1"
"@webassemblyjs/wasm-edit" "^1.14.1"
"@webassemblyjs/wasm-parser" "^1.14.1"
- acorn "^8.15.0"
+ acorn "^8.16.0"
acorn-import-phases "^1.0.3"
- browserslist "^4.26.3"
+ browserslist "^4.28.1"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.17.3"
- es-module-lexer "^1.2.1"
+ enhanced-resolve "^5.20.0"
+ es-module-lexer "^2.0.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.11"
- json-parse-even-better-errors "^2.3.1"
loader-runner "^4.3.1"
- mime-types "^2.1.27"
+ mime-db "^1.54.0"
neo-async "^2.6.2"
schema-utils "^4.3.3"
tapable "^2.3.0"
- terser-webpack-plugin "^5.3.11"
- watchpack "^2.4.4"
- webpack-sources "^3.3.3"
+ terser-webpack-plugin "^5.3.17"
+ watchpack "^2.5.1"
+ webpack-sources "^3.3.4"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
@@ -19612,9 +19619,9 @@ which-module@^2.0.0:
integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.19, which-typed-array@^1.1.2:
- version "1.1.19"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
- integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
+ version "1.1.20"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122"
+ integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==
dependencies:
available-typed-arrays "^1.0.7"
call-bind "^1.0.8"
@@ -19910,15 +19917,20 @@ ws@^7.3.1, ws@^7.4.6:
integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
ws@^8.13.0, ws@^8.2.3:
- version "8.18.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472"
- integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==
+ version "8.20.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.20.1.tgz#91a9ae2b312ccf98e0a85ec499b48cef45ab0ddb"
+ integrity sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==
xml-name-validator@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+xml-naming@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/xml-naming/-/xml-naming-0.1.0.tgz#8ab7106c5b8d23caa2fabac1cadf17136379fbd8"
+ integrity sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==
+
xmlbuilder@^15.1.1:
version "15.1.1"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
@@ -19960,9 +19972,9 @@ yaml@2.3.1:
integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
- version "1.10.2"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
- integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+ version "1.10.3"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.3.tgz#76e407ed95c42684fb8e14641e5de62fe65bbcb3"
+ integrity sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==
yargs-parser@^18.1.2:
version "18.1.3"
From 89ca72372d71a7eaa1052210eb55a57982012f78 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 16:53:43 +0530
Subject: [PATCH 23/56] Fix approver handle for tasks
---
.../payment-view/PaymentView.spec.tsx | 37 +++++++++++++++++++
.../components/payment-view/PaymentView.tsx | 6 +++
.../payment-view/payment-view.utils.ts | 3 ++
.../tabs/PaymentTaskDetailsTab.tsx | 9 ++++-
.../src/lib/services/wallet.spec.ts | 2 +
.../wallet-admin/src/lib/services/wallet.ts | 11 ++++--
6 files changed, 63 insertions(+), 5 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
index 0f1b866ae..a51b02edb 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.spec.tsx
@@ -266,6 +266,43 @@ describe('PaymentView', () => {
.toBe('https://challenges.example.com/projects/42')
})
+ it('falls back to challenge approvalApprovedBy for task payment approver when finance omits it', async () => {
+ const taskPayment: Winning = {
+ ...payment,
+ description: 'Pay period test task - 1st Place',
+ externalId: 'challenge-uuid-1',
+ type: 'task payment',
+ }
+
+ mockedFetchChallengePaymentSummary.mockResolvedValue({
+ budgetApproverHandle: 'mess',
+ paymentApproverHandle: 'mess',
+ })
+
+ mockedFetchWinningPaymentDetails.mockResolvedValue({
+ taskDetails: {
+ paymentCreatorHandle: 'TCConnCopilot',
+ projectId: '42',
+ projectName: 'General Electric Front End Task',
+ },
+ })
+
+ render( )
+
+ await waitFor(() => {
+ expect(mockedFetchChallengePaymentSummary)
+ .toHaveBeenCalledWith('challenge-uuid-1')
+ })
+
+ const paymentApproverLabel = await screen.findByText('Payment Approver')
+ const summaryPaymentApprover = paymentApproverLabel.closest('[class*="summaryItem"]')
+
+ await waitFor(() => {
+ expect(summaryPaymentApprover?.textContent)
+ .toContain('mess')
+ })
+ })
+
it('renders contest payment details with challenge creator and budget approver labels', async () => {
const contestPayment: Winning = {
...payment,
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index d751af8d8..734c686dd 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -61,6 +61,7 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
const [paymentDetailsError, setPaymentDetailsError] = React.useState()
const [challengeCreatorHandle, setChallengeCreatorHandle] = React.useState()
const [challengeBudgetApproverHandle, setChallengeBudgetApproverHandle] = React.useState()
+ const [challengePaymentApproverHandle, setChallengePaymentApproverHandle] = React.useState()
const isEngagementPayment = props.payment.type.toLowerCase() === 'engagement payment'
const isTaskPayment = props.payment.type.toLowerCase() === 'task payment'
@@ -150,6 +151,7 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
if (!shouldFetchChallengeSummary || !props.payment.externalId) {
setChallengeCreatorHandle(undefined)
setChallengeBudgetApproverHandle(undefined)
+ setChallengePaymentApproverHandle(undefined)
return undefined
}
@@ -163,12 +165,14 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
}
setChallengeBudgetApproverHandle(summary.budgetApproverHandle)
+ setChallengePaymentApproverHandle(summary.paymentApproverHandle)
}
})
.catch(() => {
if (!ignore) {
setChallengeCreatorHandle(undefined)
setChallengeBudgetApproverHandle(undefined)
+ setChallengePaymentApproverHandle(undefined)
}
})
@@ -291,6 +295,7 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
const paymentApproverHandle = resolvePaymentApproverHandle(
paymentDetails,
isTaskPayment,
+ challengePaymentApproverHandle,
)
const renderTabContent = (): React.ReactNode => {
@@ -330,6 +335,7 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
if (activeTab === 'task-details') {
return (
= (
const taskDescription = props.paymentDetails?.taskDetails?.taskDescription
?? props.payment.description
const taskCreatorHandle = resolveTaskCreatorHandle(props.paymentDetails)
+ const paymentApproverHandle = resolvePaymentApproverHandle(
+ props.paymentDetails,
+ true,
+ props.challengePaymentApproverHandle,
+ )
return (
@@ -69,7 +76,7 @@ const PaymentTaskDetailsTab: FC
= (
Payment Approver
- {formatOptionalText(props.paymentDetails?.taskDetails?.paymentApproverHandle)}
+ {formatOptionalText(paymentApproverHandle)}
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.spec.ts b/src/apps/wallet-admin/src/lib/services/wallet.spec.ts
index f90c96489..1c526a313 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.spec.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.spec.ts
@@ -219,6 +219,7 @@ describe('fetchChallengePaymentSummary', () => {
.toEqual({
budgetApproverHandle: 'kartik',
creatorHandle: 'wendell',
+ paymentApproverHandle: 'kartik',
})
expect(mockedGetAsync)
.toHaveBeenCalledWith(
@@ -244,6 +245,7 @@ describe('fetchChallengePaymentSummary', () => {
.toEqual({
budgetApproverHandle: 'kartik',
creatorHandle: 'wendell',
+ paymentApproverHandle: 'kartik',
})
})
})
diff --git a/src/apps/wallet-admin/src/lib/services/wallet.ts b/src/apps/wallet-admin/src/lib/services/wallet.ts
index 83d520ff0..e93833aa7 100644
--- a/src/apps/wallet-admin/src/lib/services/wallet.ts
+++ b/src/apps/wallet-admin/src/lib/services/wallet.ts
@@ -43,6 +43,7 @@ interface ChallengePaymentSummaryResponse {
export interface ChallengePaymentSummary {
budgetApproverHandle?: string
creatorHandle?: string
+ paymentApproverHandle?: string
}
interface EngagementAssignmentContextResponse {
@@ -649,8 +650,9 @@ async function resolveUserRefAsMemberHandle(userRef: string): Promise {
* payments from challenge-api.
*
* @param challengeId challenge id stored on the winning `externalId`.
- * @returns `creatorHandle` from `createdBy` and `budgetApproverHandle` from
- * `approvalApprovedBy`, each resolved to a member handle when needed.
+ * @returns `creatorHandle` from `createdBy`, `budgetApproverHandle` and
+ * `paymentApproverHandle` from `approvalApprovedBy`, each resolved to a member
+ * handle when needed.
* @remarks Challenge payments should not use finance `paymentCreatorHandle`
* because finance can return a client id instead of the creator handle.
*/
@@ -671,7 +673,7 @@ export async function fetchChallengePaymentSummary(
const createdBy = normalizeOptionalString(challenge.createdBy)
const approvalApprovedBy = normalizeOptionalString(challenge.approvalApprovedBy)
- const [creatorHandle, budgetApproverHandle] = await Promise.all([
+ const [creatorHandle, approvalApproverHandle] = await Promise.all([
createdBy ? resolveUserRefAsMemberHandle(createdBy) : Promise.resolve(undefined),
approvalApprovedBy
? resolveUserRefAsMemberHandle(approvalApprovedBy)
@@ -679,8 +681,9 @@ export async function fetchChallengePaymentSummary(
])
return {
- budgetApproverHandle,
+ budgetApproverHandle: approvalApproverHandle,
creatorHandle,
+ paymentApproverHandle: approvalApproverHandle,
}
} catch {
return {}
From ee2ad2dddae6d3e9c77b8642c029053d20058795 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 17:00:25 +0530
Subject: [PATCH 24/56] fix errors
---
.../src/lib/components/payment-view/PaymentView.tsx | 2 +-
.../src/lib/components/payment-view/payment-view.utils.ts | 1 -
.../lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx | 2 +-
3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
index 734c686dd..0eb00f14e 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/PaymentView.tsx
@@ -294,8 +294,8 @@ const PaymentView: React.FC = (props: PaymentViewProps) => {
const paymentApproverHandle = resolvePaymentApproverHandle(
paymentDetails,
- isTaskPayment,
challengePaymentApproverHandle,
+ isTaskPayment,
)
const renderTabContent = (): React.ReactNode => {
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts b/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
index f2d6d1f88..96f2a149b 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/payment-view.utils.ts
@@ -374,7 +374,6 @@ export function resolvePaymentApproverHandle(
},
challengePaymentApproverHandle?: string,
isTaskPayment: boolean = false,
-
): string | undefined {
if (isTaskPayment) {
return paymentDetails?.taskDetails?.paymentApproverHandle
diff --git a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
index 6a41724ac..ccac5a10b 100644
--- a/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
+++ b/src/apps/wallet-admin/src/lib/components/payment-view/tabs/PaymentTaskDetailsTab.tsx
@@ -34,8 +34,8 @@ const PaymentTaskDetailsTab: FC = (
const taskCreatorHandle = resolveTaskCreatorHandle(props.paymentDetails)
const paymentApproverHandle = resolvePaymentApproverHandle(
props.paymentDetails,
- true,
props.challengePaymentApproverHandle,
+ true,
)
return (
From 7a59043bb809e3caa74bfbdc8a69f892812f162a Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 22:07:23 +0530
Subject: [PATCH 25/56] Updated yarn lock
---
yarn.lock | 408 +++++++++++++++++++++++++++---------------------------
1 file changed, 204 insertions(+), 204 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index 6c45456e0..d7bb311c3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -82,7 +82,7 @@
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
-"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3":
+"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.25.9", "@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3":
version "7.27.3"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5"
integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==
@@ -146,7 +146,7 @@
"@babel/traverse" "^7.28.5"
"@babel/types" "^7.28.5"
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.28.6":
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.25.9", "@babel/helper-module-imports@^7.28.6":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
@@ -422,7 +422,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6", "@babel/plugin-syntax-jsx@^7.7.2":
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.25.9", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.28.6", "@babel/plugin-syntax-jsx@^7.7.2":
version "7.28.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee"
integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==
@@ -1411,7 +1411,7 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
-"@emnapi/core@^1.4.3":
+"@emnapi/core@1.10.0":
version "1.10.0"
resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467"
integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==
@@ -1419,7 +1419,7 @@
"@emnapi/wasi-threads" "1.2.1"
tslib "^2.4.0"
-"@emnapi/runtime@^1.4.3":
+"@emnapi/runtime@1.10.0":
version "1.10.0"
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c"
integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==
@@ -2386,14 +2386,12 @@
"@types/mdx" "^2.0.0"
"@types/react" ">=16"
-"@napi-rs/wasm-runtime@^0.2.11":
- version "0.2.12"
- resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2"
- integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==
+"@napi-rs/wasm-runtime@^1.1.4":
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1"
+ integrity sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==
dependencies:
- "@emnapi/core" "^1.4.3"
- "@emnapi/runtime" "^1.4.3"
- "@tybys/wasm-util" "^0.10.0"
+ "@tybys/wasm-util" "^0.10.1"
"@ndelangen/get-tarball@^3.0.7":
version "3.0.9"
@@ -3067,9 +3065,9 @@
"@sinonjs/commons" "^1.7.0"
"@sprig-technologies/sprig-browser@^2.39.0":
- version "2.44.1"
- resolved "https://registry.yarnpkg.com/@sprig-technologies/sprig-browser/-/sprig-browser-2.44.1.tgz#9bfa2ac58abe657990dd4486902ecbcde90e8b4a"
- integrity sha512-bLj7uZn2yK/KZ9e7HwzplYndPcN+DGWZib5FGlZ6Zggygl8mfboky5vnZ4TqZXFTcwjjd/vBA1ywDahXyimoUA==
+ version "2.45.0"
+ resolved "https://registry.yarnpkg.com/@sprig-technologies/sprig-browser/-/sprig-browser-2.45.0.tgz#66f482f0881fc3b0b78cc25d078cd5b8ecaca6d8"
+ integrity sha512-hG+oVH5ncr9EEkjGZxtKfm71QhDL4LElb7wf0oK8eM+ozE7qyszzz94+2OkfRlBWhzTk39XUJdVwo4fwr2Oa9g==
"@standard-schema/spec@^1.1.0":
version "1.1.0"
@@ -4201,7 +4199,7 @@
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
-"@tybys/wasm-util@^0.10.0":
+"@tybys/wasm-util@^0.10.1":
version "0.10.2"
resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.2.tgz#12b3a1b33db1f9cad4ddff1f604ab7dd00bf464e"
integrity sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==
@@ -4356,22 +4354,6 @@
resolved "https://registry.yarnpkg.com/@types/escodegen/-/escodegen-0.0.6.tgz#5230a9ce796e042cda6f086dbf19f22ea330659c"
integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==
-"@types/eslint-scope@^3.7.7":
- version "3.7.7"
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5"
- integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==
- dependencies:
- "@types/eslint" "*"
- "@types/estree" "*"
-
-"@types/eslint@*":
- version "9.6.1"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584"
- integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==
- dependencies:
- "@types/estree" "*"
- "@types/json-schema" "*"
-
"@types/eslint@^7.29.0 || ^8.4.1":
version "8.56.12"
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a"
@@ -4634,9 +4616,9 @@
"@types/node" "*"
"@types/node@*":
- version "25.8.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-25.8.0.tgz#d13033397d1c186876bed4c9b9d7f3f962097eb3"
- integrity sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==
+ version "25.9.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.1.tgz#3bda556db500ae4319c08e7fc9ab94f19013ba0b"
+ integrity sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==
dependencies:
undici-types ">=7.24.0 <7.24.7"
@@ -5086,102 +5068,119 @@
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.1.tgz#0e8f34854df7966b09304a18e808b23997bb9fc1"
integrity sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==
-"@unrs/resolver-binding-android-arm-eabi@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz#9f5b04503088e6a354295e8ea8fe3cb99e43af81"
- integrity sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==
-
-"@unrs/resolver-binding-android-arm64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz#7414885431bd7178b989aedc4d25cccb3865bc9f"
- integrity sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==
-
-"@unrs/resolver-binding-darwin-arm64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz#b4a8556f42171fb9c9f7bac8235045e82aa0cbdf"
- integrity sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==
-
-"@unrs/resolver-binding-darwin-x64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz#fd4d81257b13f4d1a083890a6a17c00de571f0dc"
- integrity sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==
-
-"@unrs/resolver-binding-freebsd-x64@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz#d2513084d0f37c407757e22f32bd924a78cfd99b"
- integrity sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==
-
-"@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz#844d2605d057488d77fab09705f2866b86164e0a"
- integrity sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==
-
-"@unrs/resolver-binding-linux-arm-musleabihf@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz#204892995cefb6bd1d017d52d097193bc61ddad3"
- integrity sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==
-
-"@unrs/resolver-binding-linux-arm64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz#023eb0c3aac46066a10be7a3f362e7b34f3bdf9d"
- integrity sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==
-
-"@unrs/resolver-binding-linux-arm64-musl@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz#9e6f9abb06424e3140a60ac996139786f5d99be0"
- integrity sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==
-
-"@unrs/resolver-binding-linux-ppc64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz#b111417f17c9d1b02efbec8e08398f0c5527bb44"
- integrity sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==
-
-"@unrs/resolver-binding-linux-riscv64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz#92ffbf02748af3e99873945c9a8a5ead01d508a9"
- integrity sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==
-
-"@unrs/resolver-binding-linux-riscv64-musl@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz#0bec6f1258fc390e6b305e9ff44256cb207de165"
- integrity sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==
-
-"@unrs/resolver-binding-linux-s390x-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz#577843a084c5952f5906770633ccfb89dac9bc94"
- integrity sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==
-
-"@unrs/resolver-binding-linux-x64-gnu@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz#36fb318eebdd690f6da32ac5e0499a76fa881935"
- integrity sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==
-
-"@unrs/resolver-binding-linux-x64-musl@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz#bfb9af75f783f98f6a22c4244214efe4df1853d6"
- integrity sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==
-
-"@unrs/resolver-binding-wasm32-wasi@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz#752c359dd875684b27429500d88226d7cc72f71d"
- integrity sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==
- dependencies:
- "@napi-rs/wasm-runtime" "^0.2.11"
-
-"@unrs/resolver-binding-win32-arm64-msvc@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz#ce5735e600e4c2fbb409cd051b3b7da4a399af35"
- integrity sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==
-
-"@unrs/resolver-binding-win32-ia32-msvc@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz#72fc57bc7c64ec5c3de0d64ee0d1810317bc60a6"
- integrity sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==
-
-"@unrs/resolver-binding-win32-x64-msvc@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz#538b1e103bf8d9864e7b85cc96fa8d6fb6c40777"
- integrity sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==
+"@unrs/resolver-binding-android-arm-eabi@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.12.2.tgz#98a9fee62c01f209747a4ab5855f1ced38a6d03a"
+ integrity sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==
+
+"@unrs/resolver-binding-android-arm64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.12.2.tgz#46b7e8a1393f907462324f1576e8883529acf066"
+ integrity sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==
+
+"@unrs/resolver-binding-darwin-arm64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.12.2.tgz#0ea07b00e2583ab004b853d4c02ec5f0745d490c"
+ integrity sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==
+
+"@unrs/resolver-binding-darwin-x64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.12.2.tgz#a2a6901ed58449b91b4438e582f6890cba956049"
+ integrity sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==
+
+"@unrs/resolver-binding-freebsd-x64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.12.2.tgz#ebe6fe7f6706b7378ea4a48a024602e9c2f48f89"
+ integrity sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==
+
+"@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.12.2.tgz#e6040fedaa240124419d35b25b69c5fa15ddb499"
+ integrity sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==
+
+"@unrs/resolver-binding-linux-arm-musleabihf@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.12.2.tgz#d217a8fb59f659c131539326c140e7b62e3e3c6a"
+ integrity sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==
+
+"@unrs/resolver-binding-linux-arm64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.12.2.tgz#edab13c46a45783a7e01351e113825c04f352e24"
+ integrity sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==
+
+"@unrs/resolver-binding-linux-arm64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.12.2.tgz#e5e195db1130f7d3b6aa2fd67b3c9fe1ea4859a0"
+ integrity sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==
+
+"@unrs/resolver-binding-linux-loong64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-loong64-gnu/-/resolver-binding-linux-loong64-gnu-1.12.2.tgz#f01d22e091bae13016f4636698d9dcbbda775c3e"
+ integrity sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==
+
+"@unrs/resolver-binding-linux-loong64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-loong64-musl/-/resolver-binding-linux-loong64-musl-1.12.2.tgz#7d23efcb98adf076bfbcecc27b4212c36aa6697d"
+ integrity sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==
+
+"@unrs/resolver-binding-linux-ppc64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.12.2.tgz#1f35f1eaa322f33cf2d96dac27f0626a93ffe2f6"
+ integrity sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==
+
+"@unrs/resolver-binding-linux-riscv64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.12.2.tgz#674faa696f5ce96f214873946a1e2d6ca96723dd"
+ integrity sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==
+
+"@unrs/resolver-binding-linux-riscv64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.12.2.tgz#37835fdd0b472ecdcffccd4288f19018454b138c"
+ integrity sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==
+
+"@unrs/resolver-binding-linux-s390x-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.12.2.tgz#b6edf13db4bb0accdcd1ad482a4eea0301de9224"
+ integrity sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==
+
+"@unrs/resolver-binding-linux-x64-gnu@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.12.2.tgz#daddad00bf65a405202284da1eb1db8eb83b218f"
+ integrity sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==
+
+"@unrs/resolver-binding-linux-x64-musl@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.12.2.tgz#dfdff1e0c2bad25420b41c76a746011c3983b9bb"
+ integrity sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==
+
+"@unrs/resolver-binding-openharmony-arm64@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-openharmony-arm64/-/resolver-binding-openharmony-arm64-1.12.2.tgz#ce07c4f5e7b42f7bfce45e7629b8659063aefefe"
+ integrity sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==
+
+"@unrs/resolver-binding-wasm32-wasi@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.12.2.tgz#82514f0506cfaf65f17fe16095f92d450e487183"
+ integrity sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==
+ dependencies:
+ "@emnapi/core" "1.10.0"
+ "@emnapi/runtime" "1.10.0"
+ "@napi-rs/wasm-runtime" "^1.1.4"
+
+"@unrs/resolver-binding-win32-arm64-msvc@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.12.2.tgz#521427dd59a8f4740ddd1dc7c3bc6af1aa1d260d"
+ integrity sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==
+
+"@unrs/resolver-binding-win32-ia32-msvc@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.12.2.tgz#05b63286ff2da37e0ce3083b8390884385efff62"
+ integrity sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==
+
+"@unrs/resolver-binding-win32-x64-msvc@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.12.2.tgz#72da0da48d72b1e87831b9c0308931d3f4669027"
+ integrity sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==
"@wdio/junit-reporter@^7.40.0":
version "7.40.0"
@@ -6128,15 +6127,14 @@ babel-plugin-react-css-modules@^5.2.6:
postcss-modules-values "^1.3.0"
"babel-plugin-styled-components@>= 1.12.0":
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092"
- integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.3.0.tgz#5cd27eded23af609ff57048250e3f59d68e3aa31"
+ integrity sha512-nP/y6PbBqS/qtKROnJCgpGo8hYUzlBAVXN1QAjSBANL6vZiQXPQN7FYW/nUwoxY7nZhBEGm9T5tjL9gbzwulDw==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.22.5"
- "@babel/helper-module-imports" "^7.22.5"
- "@babel/plugin-syntax-jsx" "^7.22.5"
- lodash "^4.17.21"
- picomatch "^2.3.1"
+ "@babel/helper-annotate-as-pure" "^7.25.9"
+ "@babel/helper-module-imports" "^7.25.9"
+ "@babel/plugin-syntax-jsx" "^7.25.9"
+ picomatch "^4.0.2"
babel-plugin-transform-react-remove-prop-types@^0.4.24:
version "0.4.24"
@@ -6229,9 +6227,9 @@ base64-js@^1.3.1:
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
baseline-browser-mapping@^2.10.12:
- version "2.10.30"
- resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.30.tgz#58915c74388b05f3b3504026194ea9fa98f6e6b6"
- integrity sha512-xjOFN16Ha1+Rz4nFYKqHU/LSB+gx/Vi3yQLX7r7sAW+Wa+8hhF2h4pvqTrTMc8+WcDBEunnUurr46Jvv0jk3Vg==
+ version "2.10.31"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz#9c6825f052601ce6974a90dd49683b1726887b0b"
+ integrity sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==
batch@0.6.1:
version "0.6.1"
@@ -8308,9 +8306,9 @@ ejs@^3.1.6, ejs@^3.1.8:
jake "^10.8.5"
electron-to-chromium@^1.5.328:
- version "1.5.357"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.357.tgz#fb4ecbf08fe0082b7278d12d1f5da386436575b9"
- integrity sha512-NHlTIQDK8fmVwHwuIzmXYEJ1Ewq3D9wDNc0cWXxDGysP6Pb21giwGNkxiTifyKy/4SoPuN5l6GLP1W9Sv7zB2g==
+ version "1.5.360"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz#7faf4231324c7f8d49c5c0938e8712f623d8b8d7"
+ integrity sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==
emittery@^0.10.2:
version "0.10.2"
@@ -8363,10 +8361,10 @@ endent@^2.0.1:
fast-json-parse "^1.0.3"
objectorarray "^1.0.5"
-enhanced-resolve@^5.20.0, enhanced-resolve@^5.7.0:
- version "5.21.3"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz#fa7fed23679e9169dfb705b8e201924421c4414a"
- integrity sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==
+enhanced-resolve@^5.21.4, enhanced-resolve@^5.7.0:
+ version "5.21.6"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz#aa207b43cf658e6ab3ba06896edc00c13c3127c6"
+ integrity sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.3.3"
@@ -8532,7 +8530,7 @@ es-module-lexer@^1.4.1:
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a"
integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==
-es-module-lexer@^2.0.0:
+es-module-lexer@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-2.1.0.tgz#1dfcbb5ea3bbfb63f28e1fc3676c3676d1c9624c"
integrity sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==
@@ -9585,9 +9583,9 @@ filesize@^8.0.6:
integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==
filestack-js@^3.44.2:
- version "3.51.4"
- resolved "https://registry.yarnpkg.com/filestack-js/-/filestack-js-3.51.4.tgz#910be7a967ea6249c5da02766b09503d8a650b5e"
- integrity sha512-zybINn1MItq7MKH1akzvu6SifmT6ssMvUmDy1+mBPr6W/q5I26OEuFKilKHTat5RgbjSZtXMfkhyPjKeVVX6yw==
+ version "3.51.5"
+ resolved "https://registry.yarnpkg.com/filestack-js/-/filestack-js-3.51.5.tgz#be67ed065dae55cf9e28162cecb1c7c325ce7e6a"
+ integrity sha512-OR8soNdQDwrp3pTgYpoMHNgz51fup18n15VJlutCGmnLj32WD+vexLIH17LTWIAtvNbL3BkEbtTkyqHjPlRqUA==
dependencies:
"@babel/runtime" "^7.8.4"
"@filestack/loader" "^1.0.9"
@@ -12562,7 +12560,7 @@ load-tsconfig@^0.2.0:
resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1"
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
-loader-runner@^4.3.1:
+loader-runner@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.2.tgz#9913d3a15971f8f635915e601fb5c9d495d918e9"
integrity sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==
@@ -12789,9 +12787,9 @@ lru-cache@^10.2.0:
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
lru-cache@^11.0.0:
- version "11.4.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.4.0.tgz#87a577bfa71f7c94dfd71692874b859d1ca41a28"
- integrity sha512-W+R+kFL4HgVxONq2bhXPi3bGpzGe/yEhVOp233qw9wCRtgncJ15P3bC+e4zZMu4Cq7d+WAJjXGW0uUkifhcatA==
+ version "11.5.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.5.0.tgz#14117229fd25bc9c67936e32de90ca047488c97a"
+ integrity sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==
lru-cache@^5.1.1:
version "5.1.1"
@@ -13898,12 +13896,12 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
-nanoid@^3.3.11:
+nanoid@^3.3.12:
version "3.3.12"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05"
integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==
-napi-postinstall@^0.3.0:
+napi-postinstall@^0.3.4:
version "0.3.4"
resolved "https://registry.yarnpkg.com/napi-postinstall/-/napi-postinstall-0.3.4.tgz#7af256d6588b5f8e952b9190965d6b019653bbb9"
integrity sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==
@@ -14008,9 +14006,9 @@ node-preload@^0.2.1:
process-on-spawn "^1.0.0"
node-releases@^2.0.36:
- version "2.0.44"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.44.tgz#212c9b983f5bb70d311dd68c27d55dd0e65d1ca7"
- integrity sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==
+ version "2.0.45"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.45.tgz#d84e1efff3ed4ed0fdee86a840c0a8589f0ec527"
+ integrity sha512-iIbHXV9eBB2nB0wa7oTsrrXq+qQt+9SIlx9AX3T96YgobtEQfis5n6TJ6vV+3QP8DwdriEAcGhARaFCu37peBg==
normalize-package-data@^2.5.0:
version "2.5.0"
@@ -14614,7 +14612,7 @@ picomatch@^3.0.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.2.tgz#8f543c114ddc037eab6b10fbd5a66cc8a51a02bc"
integrity sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==
-picomatch@^4.0.3, picomatch@^4.0.4:
+picomatch@^4.0.2, picomatch@^4.0.3, picomatch@^4.0.4:
version "4.0.4"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589"
integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==
@@ -15404,11 +15402,11 @@ postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.32, postcss@^7.0.3
source-map "^0.6.1"
postcss@^8.2.14, postcss@^8.2.7, postcss@^8.3.11, postcss@^8.3.5, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47:
- version "8.5.14"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.14.tgz#a66c2d7808fadf69ebb5b84a03f8bafd76c4919c"
- integrity sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==
+ version "8.5.15"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.15.tgz#d1eaf677a324e9ec02196da2d3fecf4a0b9a735c"
+ integrity sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==
dependencies:
- nanoid "^3.3.11"
+ nanoid "^3.3.12"
picocolors "^1.1.1"
source-map-js "^1.2.1"
@@ -18221,7 +18219,7 @@ terminal-link@^2.0.0:
ansi-escapes "^4.2.1"
supports-hyperlinks "^2.0.0"
-terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.17:
+terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.5.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz#8e7caad248183ab9e91ff08a83b0fc9f0439c3c3"
integrity sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==
@@ -18328,9 +18326,9 @@ tinyglobby@^0.2.11, tinyglobby@^0.2.13:
picomatch "^4.0.4"
tinymce@^7.9.1:
- version "7.9.2"
- resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-7.9.2.tgz#d47db80fade57da2d54c4a086675d3570c65ce0a"
- integrity sha512-zS2gn2CPQmZhUqLzkhwYH+WGsx/DIRY/mS18RVzsIcuQg2lN2uzaqoHSJU6DdMUpvXBtBFnLNpumC3QrDwLBzA==
+ version "7.9.3"
+ resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-7.9.3.tgz#74f0a04bdf662f90910512d3fe792f0d5f1111e3"
+ integrity sha512-Mtm54U5YJ6Pyo/GaAx+JSHXTGEuxrg2AowVWCD9zy1eBolp5Ub7S1rTtsyQdxhPegfhLuR3VLiTKGw1tacv09g==
tmpl@1.0.5:
version "1.0.5"
@@ -18940,31 +18938,34 @@ unquote@~1.1.1:
integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
unrs-resolver@^1.6.2:
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9"
- integrity sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.12.2.tgz#a6c6888396abba5adaac4cab6587df866f1d7afd"
+ integrity sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==
dependencies:
- napi-postinstall "^0.3.0"
+ napi-postinstall "^0.3.4"
optionalDependencies:
- "@unrs/resolver-binding-android-arm-eabi" "1.11.1"
- "@unrs/resolver-binding-android-arm64" "1.11.1"
- "@unrs/resolver-binding-darwin-arm64" "1.11.1"
- "@unrs/resolver-binding-darwin-x64" "1.11.1"
- "@unrs/resolver-binding-freebsd-x64" "1.11.1"
- "@unrs/resolver-binding-linux-arm-gnueabihf" "1.11.1"
- "@unrs/resolver-binding-linux-arm-musleabihf" "1.11.1"
- "@unrs/resolver-binding-linux-arm64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-arm64-musl" "1.11.1"
- "@unrs/resolver-binding-linux-ppc64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-riscv64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-riscv64-musl" "1.11.1"
- "@unrs/resolver-binding-linux-s390x-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-x64-gnu" "1.11.1"
- "@unrs/resolver-binding-linux-x64-musl" "1.11.1"
- "@unrs/resolver-binding-wasm32-wasi" "1.11.1"
- "@unrs/resolver-binding-win32-arm64-msvc" "1.11.1"
- "@unrs/resolver-binding-win32-ia32-msvc" "1.11.1"
- "@unrs/resolver-binding-win32-x64-msvc" "1.11.1"
+ "@unrs/resolver-binding-android-arm-eabi" "1.12.2"
+ "@unrs/resolver-binding-android-arm64" "1.12.2"
+ "@unrs/resolver-binding-darwin-arm64" "1.12.2"
+ "@unrs/resolver-binding-darwin-x64" "1.12.2"
+ "@unrs/resolver-binding-freebsd-x64" "1.12.2"
+ "@unrs/resolver-binding-linux-arm-gnueabihf" "1.12.2"
+ "@unrs/resolver-binding-linux-arm-musleabihf" "1.12.2"
+ "@unrs/resolver-binding-linux-arm64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-arm64-musl" "1.12.2"
+ "@unrs/resolver-binding-linux-loong64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-loong64-musl" "1.12.2"
+ "@unrs/resolver-binding-linux-ppc64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-riscv64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-riscv64-musl" "1.12.2"
+ "@unrs/resolver-binding-linux-s390x-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-x64-gnu" "1.12.2"
+ "@unrs/resolver-binding-linux-x64-musl" "1.12.2"
+ "@unrs/resolver-binding-openharmony-arm64" "1.12.2"
+ "@unrs/resolver-binding-wasm32-wasi" "1.12.2"
+ "@unrs/resolver-binding-win32-arm64-msvc" "1.12.2"
+ "@unrs/resolver-binding-win32-ia32-msvc" "1.12.2"
+ "@unrs/resolver-binding-win32-x64-msvc" "1.12.2"
untildify@^4.0.0:
version "4.0.0"
@@ -19471,7 +19472,7 @@ webpack-sources@^2.2.0:
source-list-map "^2.0.1"
source-map "^0.6.1"
-webpack-sources@^3.3.4:
+webpack-sources@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.4.1.tgz#009d110999ebd9fb3a6fa8d32eec6f84d940e65d"
integrity sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==
@@ -19487,11 +19488,10 @@ webpack-virtual-modules@^0.6.2:
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
webpack@5, webpack@^5.103.0, webpack@^5.64.4:
- version "5.106.2"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.106.2.tgz#ca8174b4fd80f055cc5a45fcc5577d6db76c8ac5"
- integrity sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==
+ version "5.107.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.107.0.tgz#9e0d8d8baf24e76f058103f4f06ac6bb528b645a"
+ integrity sha512-PSxeHk/dmLYZlnTU+vL1Gej6Evg5RNtl3flhxBresfznFnzxinHMzHKloHnywM/3ouQv7/AlZCswWDIkNSggUA==
dependencies:
- "@types/eslint-scope" "^3.7.7"
"@types/estree" "^1.0.8"
"@types/json-schema" "^7.0.15"
"@webassemblyjs/ast" "^1.14.1"
@@ -19501,20 +19501,20 @@ webpack@5, webpack@^5.103.0, webpack@^5.64.4:
acorn-import-phases "^1.0.3"
browserslist "^4.28.1"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.20.0"
- es-module-lexer "^2.0.0"
+ enhanced-resolve "^5.21.4"
+ es-module-lexer "^2.1.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.11"
- loader-runner "^4.3.1"
+ loader-runner "^4.3.2"
mime-db "^1.54.0"
neo-async "^2.6.2"
schema-utils "^4.3.3"
tapable "^2.3.0"
- terser-webpack-plugin "^5.3.17"
+ terser-webpack-plugin "^5.5.0"
watchpack "^2.5.1"
- webpack-sources "^3.3.4"
+ webpack-sources "^3.4.1"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
From 14e48b8fe1b0d8f3a7c6c5b314e10c4d219b4719 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 22:41:26 +0530
Subject: [PATCH 26/56] PM-5097 Update wallet payment status
---
.../home/tabs/winnings/PaymentsListView.tsx | 33 ++++++++++++++++---
1 file changed, 29 insertions(+), 4 deletions(-)
diff --git a/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx b/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx
index 850d83202..5be99fe5d 100644
--- a/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx
+++ b/src/apps/wallet/src/home/tabs/winnings/PaymentsListView.tsx
@@ -38,12 +38,17 @@ function formatIOSDateString(iosDateString: string): string {
return date.toLocaleDateString('en-GB', options)
}
+const taskPaymentCategory = 'TASK_PAYMENT'
+const engagementPaymentCategory = 'ENGAGEMENT_PAYMENT'
+
+function isTopcoderTaskOrEngagementPayment(category: string): boolean {
+ return category === taskPaymentCategory || category === engagementPaymentCategory
+}
+
function formatStatus(status: string): string {
switch (status) {
case 'ON_HOLD':
return 'On Hold'
- case 'OWED':
- return 'Available'
case 'PROCESSING':
return 'Processing'
case 'PAID':
@@ -59,6 +64,22 @@ function formatStatus(status: string): string {
}
}
+function formatMemberPaymentStatus(
+ status: string,
+ category: string,
+ releaseDate: string,
+): string {
+ if (status === 'ON_HOLD_ADMIN' && isTopcoderTaskOrEngagementPayment(category)) {
+ return 'Created'
+ }
+
+ if (status === 'OWED') {
+ return new Date(releaseDate) <= new Date() ? 'Available' : 'Owed'
+ }
+
+ return formatStatus(status)
+}
+
function isIdVerificationComplete(paymentStatus?: WinningDetail['paymentStatus']): boolean {
if (!paymentStatus) {
return false
@@ -151,7 +172,11 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
? 'On Hold (ID Verification)'
: 'On Hold'
)
- : formatStatus(payment.details[0].status)
+ : formatMemberPaymentStatus(
+ payment.details[0].status,
+ payment.category,
+ payment.releaseDate,
+ )
),
type: payment.category.replaceAll('_', ' ')
.toLowerCase(),
@@ -256,7 +281,7 @@ const PaymentsListView: FC = (props: PaymentsListViewProp
label: 'Status',
options: [
{
- label: 'Available',
+ label: 'Owed',
value: 'OWED',
},
{
From 7c4fc72768f062a5ce6df5b767927828b5e81674 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Thu, 21 May 2026 23:02:08 +0530
Subject: [PATCH 27/56] SFDC reports UI update
---
.../BulkMemberLookupPage.module.scss | 1 -
.../src/pages/reports/ReportsPage.module.scss | 6 ++--
.../reports/src/pages/reports/ReportsPage.tsx | 30 +++++++++----------
3 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/src/apps/reports/src/pages/bulk-member-lookup/BulkMemberLookupPage.module.scss b/src/apps/reports/src/pages/bulk-member-lookup/BulkMemberLookupPage.module.scss
index 8bf6bb896..5de227b0e 100644
--- a/src/apps/reports/src/pages/bulk-member-lookup/BulkMemberLookupPage.module.scss
+++ b/src/apps/reports/src/pages/bulk-member-lookup/BulkMemberLookupPage.module.scss
@@ -6,7 +6,6 @@
.instructions {
color: #565a5f;
- max-width: 720px;
}
.uploadSection {
diff --git a/src/apps/reports/src/pages/reports/ReportsPage.module.scss b/src/apps/reports/src/pages/reports/ReportsPage.module.scss
index 4cfbe966b..4b6c4e110 100644
--- a/src/apps/reports/src/pages/reports/ReportsPage.module.scss
+++ b/src/apps/reports/src/pages/reports/ReportsPage.module.scss
@@ -11,13 +11,13 @@
}
.billingDefaultWindowNote {
- display: inline-block;
- margin-top: 6px;
- padding: 2px 8px;
+ margin: 8px 0 0;
+ padding: 8px 12px;
border-radius: 4px;
background: #fff4d6;
color: #5f4a00;
font-weight: 500;
+ max-width: 720px;
}
.selectors {
diff --git a/src/apps/reports/src/pages/reports/ReportsPage.tsx b/src/apps/reports/src/pages/reports/ReportsPage.tsx
index 2011aafb8..2b2476971 100644
--- a/src/apps/reports/src/pages/reports/ReportsPage.tsx
+++ b/src/apps/reports/src/pages/reports/ReportsPage.tsx
@@ -621,6 +621,7 @@ const ReportActions = (props: ReportActionsProps): JSX.Element => {
}
type SelectedReportSectionProps = {
+ descriptionNote?: JSX.Element
renderParameterInput: (parameter: ReportParameter) => JSX.Element
reportActions: JSX.Element
selectedReport?: ReportDefinition
@@ -640,6 +641,7 @@ const SelectedReportSection = (props: SelectedReportSectionProps): JSX.Element =
{props.selectedReport.description}
)}
+ {props.descriptionNote}
{formatMethod(props.selectedReport.method)}
{' '}
@@ -1104,22 +1106,12 @@ const ReportsPageContent: FC
= props => {
)}
{pageTitle}
-
- {activeTab === 'reports'
- ? 'Select a base path to view available reports. Choose a report, '
- + 'fill required parameters, and download JSON or CSV from the reports API.'
- : (
- <>
- {'Payments load for all billing accounts by default. Optionally narrow by billing '
- + 'account ID, dates, or category, then click View. Open a billing account profile '
- + 'from the Billing account ID column in the table. '}
-
- If no dates are specified, records from the past 45 days are displayed
- by default.
-
- >
- )}
-
+ {activeTab === 'reports' && (
+
+ Select a base path to view available reports. Choose a report, fill required
+ parameters, and download JSON or CSV from the reports API.
+
+ )}
{isLoading ? (
@@ -1168,6 +1160,12 @@ const ReportsPageContent: FC = props => {
>
) : (
+ If no dates are specified, records from the past 45 days are
+ displayed by default.
+
+ )}
renderParameterInput={renderParameterInput}
reportActions={billingAccountReportActions}
selectedReport={BILLING_ACCOUNTS_REPORT_DEFINITION}
From 47e9fee7ec506b231c5241c9abe6e1f2bc24fa8b Mon Sep 17 00:00:00 2001
From: Justin Gasper
Date: Fri, 22 May 2026 11:18:12 +1000
Subject: [PATCH 28/56] PM-5043: Restore locked challenge fee fallback
What was broken
Locked challenge rows in the billing account details modal could show a blank Challenge Fee value when challenge markup hydration did not resolve, even though the row still had the billing-account markup needed to calculate the fee.
Root cause
The prior PM-5043 modal fix moved challenge rows to challenge-specific markup, but canonical challenge rows returned undefined while hydration was missing or failed. Locked rows store member-payment subtotals directly, so the fee calculation had no fallback markup and rendered "-".
What was changed
The modal now falls back to billing-account markup when challenge-specific markup is unavailable, while preserving hydrated challenge markup values including zero. This keeps locked challenge fees populated without changing consumed-row subtotal handling.
Any added/updated tests
Added BillingAccountLineItemsModal regression coverage for a locked challenge row whose challenge markup cannot be loaded, asserting the member payments remain unchanged and the Challenge Fee is still calculated.
---
.../BillingAccountLineItemsModal.spec.tsx | 27 +++++++++++++++++++
.../BillingAccountLineItemsModal.tsx | 8 +++---
2 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.spec.tsx b/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.spec.tsx
index faa3114c1..8cbd9e45e 100644
--- a/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.spec.tsx
+++ b/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.spec.tsx
@@ -177,6 +177,33 @@ describe('BillingAccountLineItemsModal', () => {
.toBeNull()
})
+ it('uses billing-account markup for locked challenge fees when challenge markup cannot be loaded', () => {
+ mockedFetchChallenge.mockRejectedValueOnce(new Error('Forbidden'))
+
+ renderModal({
+ ...baseBillingAccountDetails,
+ lockedAmounts: [
+ {
+ amount: '28.6',
+ date: '2026-05-12T00:00:00.000Z',
+ externalId: '5fdf48d2-811f-4914-b713-9e5f423c907d',
+ externalName: 'Copilot and Admin with reviews',
+ externalType: 'CHALLENGE',
+ },
+ ],
+ lockedBudget: 28.6,
+ markup: 0.33,
+ totalBudgetRemaining: 971.4,
+ })
+
+ expect(screen.getAllByText('$28.60'))
+ .toHaveLength(2)
+ expect(screen.getByText('$9.44'))
+ .toBeTruthy()
+ expect(screen.queryByText('-'))
+ .toBeNull()
+ })
+
it('removes challenge markup once from consumed challenge charges before showing member payments', async () => {
renderModal({
...baseBillingAccountDetails,
diff --git a/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.tsx b/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.tsx
index 8849d0d81..3aecd2cde 100644
--- a/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.tsx
+++ b/src/apps/work/src/lib/components/BillingAccountLineItemsModal/BillingAccountLineItemsModal.tsx
@@ -272,10 +272,11 @@ async function fetchChallengeDetailsById(
* @param item Billing-account line item being displayed.
* @param billingAccountDetails Billing account detail payload.
* @param challengeDetailsById Hydrated challenge details, or `undefined` while loading.
- * @returns Challenge-specific markup, billing-account fallback for legacy
- * rows, or `undefined` when the challenge row is still being hydrated.
+ * @returns Challenge-specific markup when available, otherwise the billing-account markup fallback.
* @remarks Canonical challenge rows use challenge billing markup so `0` markup
- * challenges do not inherit the billing account default fee.
+ * challenges do not inherit the billing account default fee once hydrated. The
+ * billing-account fallback keeps locked rows from showing a blank fee when
+ * challenge hydration is unavailable.
*/
function getLineItemChallengeMarkup(
item: BillingAccountLineItem,
@@ -291,6 +292,7 @@ function getLineItemChallengeMarkup(
}
return challengeDetailsById?.get(challengeId)?.billing?.markup
+ ?? billingAccountDetails.markup
}
/**
From 51a6fc3d7dfbf0e791d46de547c6b5265abfd7a6 Mon Sep 17 00:00:00 2001
From: himaniraghav3
Date: Fri, 22 May 2026 11:01:19 +0530
Subject: [PATCH 29/56] Update SFDC reports subheading
---
src/apps/reports/src/pages/reports/ReportsPage.tsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/apps/reports/src/pages/reports/ReportsPage.tsx b/src/apps/reports/src/pages/reports/ReportsPage.tsx
index 2b2476971..a31638598 100644
--- a/src/apps/reports/src/pages/reports/ReportsPage.tsx
+++ b/src/apps/reports/src/pages/reports/ReportsPage.tsx
@@ -52,7 +52,8 @@ const BILLING_ACCOUNTS_REPORT_PATH = '/sfdc/billing-accounts'
const SFDC_PAYMENTS_REPORT_PATH = '/sfdc/payments'
const BILLING_ACCOUNTS_REPORT_DEFINITION: ReportDefinition = {
description:
- 'View SFDC payments across all billing accounts by default. Optionally filter by billing account ID and dates.',
+ `View SFDC payments across all billing accounts by
+ default. Optionally filter by billing account ID, dates, or category.`,
method: 'GET',
name: 'Billing Accounts',
parameters: [
From 7f743d2d3d28c30a01f45431faf68adc200904bf Mon Sep 17 00:00:00 2001
From: Harshit Chudasama