diff --git a/.gitignore b/.gitignore index 21af2c8db..4555f568c 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,6 @@ __* apps/ui-sharethrift/tsconfig.tsbuildinfo **/node_modules **/dist + +# Log files +*.log diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 5fca8822f..9e79f4e3f 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -34,7 +34,6 @@ const isDevelopment = NODE_ENV === 'development'; Cellix.initializeInfrastructureServices( (serviceRegistry) => { - serviceRegistry .registerInfrastructureService( new ServiceMongoose( @@ -47,7 +46,9 @@ Cellix.initializeInfrastructureServices( new ServiceTokenValidation(TokenValidationConfig.portalTokens), ) .registerInfrastructureService( - isDevelopment ? new ServiceMessagingMock() : new ServiceMessagingTwilio(), + isDevelopment + ? new ServiceMessagingMock() + : new ServiceMessagingTwilio(), ) .registerInfrastructureService( isDevelopment ? new PaymentServiceMock() : new PaymentServiceCybersource() diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 95a94e7ff..da0749abf 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@cellix/typescript-config/node.json", + "extends": "@cellix/typescript-config/node.json", "compilerOptions": { "rootDir": ".", "outDir": "dist" diff --git a/apps/ui-sharethrift/src/components/layouts/home/account/profile/stories/ProfilePage.stories.tsx b/apps/ui-sharethrift/src/components/layouts/home/account/profile/stories/ProfilePage.stories.tsx index 769fddddb..be73ce1ac 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/account/profile/stories/ProfilePage.stories.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/account/profile/stories/ProfilePage.stories.tsx @@ -14,14 +14,18 @@ import { import { expect, within } from 'storybook/test'; const mockUserSarah: PersonalUser = { + __typename: 'PersonalUser', id: '507f1f77bcf86cd799439099', + userIsAdmin: false, userType: 'personal-user', account: { + __typename: 'PersonalUserAccount', accountType: 'verified-personal', username: 'sarah_williams', email: 'sarah.williams@example.com', profile: { + __typename: 'PersonalUserAccountProfile', firstName: 'Sarah', lastName: 'Williams', location: { @@ -36,10 +40,14 @@ const mockUserSarah: PersonalUser = { }; const mockUserAlex: PersonalUser = { + __typename: 'PersonalUser', id: '507f1f77bcf86cd799439102', + userIsAdmin: false, userType: 'personal-user', account: { + __typename: 'PersonalUserAccount', profile: { + __typename: 'PersonalUserAccountProfile', firstName: 'Alex', lastName: '', location: { @@ -57,6 +65,7 @@ const mockUserAlex: PersonalUser = { const mockTwoListings: ItemListing[] = [ { + __typename: 'ItemListing', id: '64f7a9c2d1e5b97f3c9d0a41', title: 'City Bike', description: @@ -72,6 +81,7 @@ const mockTwoListings: ItemListing[] = [ listingType: 'item-listing', }, { + __typename: 'ItemListing', id: '64f7a9c2d1e5b97f3c9d0a13', title: 'Projector', description: 'HD projector for movie nights and presentations.', @@ -87,19 +97,6 @@ const mockTwoListings: ItemListing[] = [ }, ]; -const userIsAdminMockRequest = (userId: string) => { - return { - request: { - query: UseUserIsAdminDocument, - }, - result: { - data: { - currentUser: {id: userId, userIsAdmin: false }, - }, - }, - }; -}; - const meta: Meta = { title: 'Pages/Account/Profile', component: HomeRoutes, @@ -121,6 +118,20 @@ export const DefaultView: Story = { parameters: { apolloClient: { mocks: [ + { + request: { + query: UseUserIsAdminDocument, + }, + result: { + data: { + currentUser: { + id: mockUserSarah.id, + userIsAdmin: false, + __typename: 'PersonalUser', + }, + }, + }, + }, { request: { query: HomeAccountProfileViewContainerCurrentUserDocument, @@ -140,15 +151,15 @@ export const DefaultView: Story = { result: { data: { myListingsAll: { + __typename: 'PaginatedMyListings', items: mockTwoListings, - total: 2, + total: mockTwoListings.length, page: 1, pageSize: 100, }, }, }, }, - userIsAdminMockRequest(mockUserSarah.id), ], }, }, @@ -158,6 +169,20 @@ export const NoListings: Story = { parameters: { apolloClient: { mocks: [ + { + request: { + query: UseUserIsAdminDocument, + }, + result: { + data: { + currentUser: { + id: mockUserAlex.id, + userIsAdmin: false, + __typename: 'PersonalUser', + }, + }, + }, + }, { request: { query: HomeAccountProfileViewContainerCurrentUserDocument, @@ -175,11 +200,16 @@ export const NoListings: Story = { }, result: { data: { - myListingsAll: { items: [], total: 0, page: 1, pageSize: 100 }, + myListingsAll: { + __typename: 'PaginatedMyListings', + items: [], + total: 0, + page: 1, + pageSize: 100, + }, }, }, }, - userIsAdminMockRequest(mockUserAlex.id), ], }, }, diff --git a/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.container.tsx b/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.container.tsx index b3486c6b4..60498f8f6 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.container.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.container.tsx @@ -1,20 +1,19 @@ import { useApolloClient, useMutation, useQuery } from '@apollo/client/react'; -import { useState } from 'react'; import { message } from 'antd'; -import { ListingInformation } from './listing-information.tsx'; - +import { useState } from 'react'; import { - HomeListingInformationCreateReservationRequestDocument, type CreateReservationRequestInput, + HomeListingInformationCreateReservationRequestDocument, + type ItemListing, + ViewListingActiveReservationRequestForListingDocument, + type ViewListingActiveReservationRequestForListingQuery, ViewListingCurrentUserDocument, type ViewListingCurrentUserQuery, ViewListingQueryActiveByListingIdDocument, type ViewListingQueryActiveByListingIdQuery, type ViewListingQueryActiveByListingIdQueryVariables, - ViewListingActiveReservationRequestForListingDocument, - type ItemListing, - type ViewListingActiveReservationRequestForListingQuery, } from '../../../../../../generated.tsx'; +import { ListingInformation } from './listing-information.tsx'; interface ListingInformationContainerProps { listing: ItemListing; diff --git a/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.tsx b/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.tsx index c6d0394da..99dd2621d 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/components/view-listing/listing-information/listing-information.tsx @@ -1,14 +1,14 @@ -import { Row, Col, DatePicker, Button } from 'antd'; -import dayjs from 'dayjs'; +import { LoadingOutlined } from '@ant-design/icons'; +import { Button, Col, DatePicker, Row } from 'antd'; import type { Dayjs } from 'dayjs'; +import dayjs from 'dayjs'; +import { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; import type { - ViewListingQueryActiveByListingIdQuery, ItemListing, ViewListingActiveReservationRequestForListingQuery, + ViewListingQueryActiveByListingIdQuery, } from '../../../../../../generated.tsx'; -import { LoadingOutlined } from '@ant-design/icons'; -import { useState } from 'react'; -import { useNavigate } from 'react-router-dom'; // Manual isBetween logic for Dayjs function isBetweenManual( diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/AllListingsTableHeader.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/AllListingsTableHeader.tsx new file mode 100644 index 000000000..3a61be832 --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/AllListingsTableHeader.tsx @@ -0,0 +1,37 @@ + +import { Input } from 'antd'; +const { Search } = Input; + +interface ListingTitleFilterDropdownProps { + readonly onSearch: (value: string) => void; + readonly searchText: string; + readonly setSelectedKeys: (selectedKeys: React.Key[]) => void; + readonly selectedKeys: React.Key[]; + readonly confirm: () => void; +} + +export function ListingTitleFilterDropdown({ + onSearch, + searchText, + setSelectedKeys, + selectedKeys, + confirm, +}: ListingTitleFilterDropdownProps): React.ReactNode { + return ( +
+ { + setSelectedKeys(e.target.value ? [e.target.value] : []); + }} + onSearch={(value) => { + confirm(); + onSearch(value); + }} + style={{ width: 200 }} + allowClear + /> +
+ ); +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/AllListingsTableStatus.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/AllListingsTableStatus.tsx new file mode 100644 index 000000000..16ecd17da --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/AllListingsTableStatus.tsx @@ -0,0 +1,11 @@ +import { Tag } from 'antd'; + +import { getStatusTagClass } from './status-tag-class.ts'; + +export function AllListingsTableStatus({ + status, +}: Readonly<{ + status: string; +}>): React.ReactNode { + return {status}; +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-card.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-card.tsx index 1403fbc85..706f542d1 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-card.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-card.tsx @@ -171,7 +171,7 @@ const AllListingsCard: React.FC = ({ onClick={() => onViewPendingRequests(listing.id)} > - View Pending Requests + View Requests void, +): React.ReactNode[] { + const status = record.state ?? 'Unknown'; + + const buttons: React.ReactNode[] = []; + + const conditionalButtons: React.ReactNode[] = []; + if (status === 'Active' || status === 'Reserved') { + conditionalButtons.push( + , + ); + } + if (status === 'Paused' || status === 'Expired') { + conditionalButtons.push( + , + ); + } + if (status === 'Blocked') { + conditionalButtons.push( + onAction('appeal', record.id)} + okText="Yes" + cancelText="No" + > + + , + ); + } + if (status === 'Draft') { + conditionalButtons.push( + , + ); + } + if (status === 'Active' || status === 'Paused') { + conditionalButtons.push( + onAction('cancel', record.id)} + okText="Yes" + cancelText="No" + > + + , + ); + } + + const alwaysButtons: React.ReactNode[] = [ + , + onAction('delete', record.id)} + okText="Yes" + cancelText="No" + > + + , + ]; + + buttons.push(...conditionalButtons, ...alwaysButtons); + + return buttons; +} + +export function AllListingsTableActions({ + record, + onAction, +}: Readonly<{ + record: HomeAllListingsTableContainerListingFieldsFragment; + onAction: (action: string, listingId: string) => void; +}>): React.ReactNode { + const actions = getActionButtons(record, onAction); + + // Ensure at least 3 slots for alignment (first, middle, last) + const minActions = 3; + const paddedActions = [ + ...actions, + ...new Array(Math.max(0, minActions - actions.length)).fill(null), + ]; + + return ( +
+ {paddedActions.map((btn, idx) => { + let justifyContent: React.CSSProperties['justifyContent'] = 'center'; + if (idx === 0) { + justifyContent = 'flex-start'; + } else if (idx === paddedActions.length - 1) { + justifyContent = 'flex-end'; + } + + return ( +
+ {btn} +
+ ); + })} +
+ ); +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table-header.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table-header.tsx new file mode 100644 index 000000000..3a61be832 --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table-header.tsx @@ -0,0 +1,37 @@ + +import { Input } from 'antd'; +const { Search } = Input; + +interface ListingTitleFilterDropdownProps { + readonly onSearch: (value: string) => void; + readonly searchText: string; + readonly setSelectedKeys: (selectedKeys: React.Key[]) => void; + readonly selectedKeys: React.Key[]; + readonly confirm: () => void; +} + +export function ListingTitleFilterDropdown({ + onSearch, + searchText, + setSelectedKeys, + selectedKeys, + confirm, +}: ListingTitleFilterDropdownProps): React.ReactNode { + return ( +
+ { + setSelectedKeys(e.target.value ? [e.target.value] : []); + }} + onSearch={(value) => { + confirm(); + onSearch(value); + }} + style={{ width: 200 }} + allowClear + /> +
+ ); +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table-row.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table-row.tsx new file mode 100644 index 000000000..65e92ca3c --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table-row.tsx @@ -0,0 +1,125 @@ +import { Badge, Button, Image } from 'antd'; + +import type { HomeAllListingsTableContainerListingFieldsFragment } from '../../../../../generated.tsx'; + +export function AllListingsTableListingCell({ + title, + imageSrc, +}: Readonly<{ + title: string; + imageSrc: string; +}>): React.ReactNode { + return ( +
+ {title} + {title} +
+ ); +} + +export function AllListingsTablePublishedAtCell({ + date, +}: Readonly<{ + date?: string; +}>): React.ReactNode { + if (!date) { + return 'N/A'; + } + + const d = new Date(date); + const yyyy = d.getFullYear(); + const mm = String(d.getMonth() + 1).padStart(2, '0'); + const dd = String(d.getDate()).padStart(2, '0'); + const formatted = `${yyyy}-${mm}-${dd}`; + + return ( + + {formatted} + + ); +} + +export function AllListingsTableReservationPeriodCell({ + startDate, + endDate, +}: Readonly<{ + startDate: HomeAllListingsTableContainerListingFieldsFragment['sharingPeriodStart']; + endDate: HomeAllListingsTableContainerListingFieldsFragment['sharingPeriodEnd']; +}>): React.ReactNode { + if (!startDate || !endDate) { + return 'N/A'; + } + + const start = + typeof startDate === 'string' + ? startDate.slice(0, 10) + : new Date(startDate).toISOString().slice(0, 10); + const end = + typeof endDate === 'string' + ? endDate.slice(0, 10) + : new Date(endDate).toISOString().slice(0, 10); + const period = `${start} - ${end}`; + + return ( + + {period} + + ); +} + +export function AllListingsTablePendingRequestsCell({ + count, + listingId, + onViewAllRequests, +}: Readonly<{ + count: number; + listingId: string; + onViewAllRequests: (listingId: string) => void; +}>): React.ReactNode { + return ( +
+ + {count > 0 && ( + + )} +
+ ); +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table.tsx index 107b36d52..c5c33853e 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/all-listings-table.tsx @@ -1,42 +1,77 @@ -import { FilterOutlined, SearchOutlined } from '@ant-design/icons'; import { Dashboard } from '@sthrift/ui-components'; import type { TableProps } from 'antd'; -import { Badge, Button, Checkbox, Image, Input, Popconfirm, Tag } from 'antd'; +import type React from 'react'; + import type { HomeAllListingsTableContainerListingFieldsFragment } from '../../../../../generated.tsx'; +import { AllListingsTableActions } from './AllListingsTableActions.tsx'; +import { ListingTitleFilterDropdown } from './all-listings-table-header'; +import { ListingTitleFilterIcon } from './listing-title-filter-icon'; +import { StatusFilterDropdown } from './status-filter-dropdown'; +import { StatusFilterIcon } from './status-filter-icon'; +import { + AllListingsTableListingCell, + AllListingsTablePendingRequestsCell, + AllListingsTablePublishedAtCell, + AllListingsTableReservationPeriodCell, +} from './AllListingsTableRow.tsx'; +import { AllListingsTableStatus } from './AllListingsTableStatus.tsx'; import { AllListingsCard } from './all-listings-card.tsx'; -import { getStatusTagClass } from './status-tag-class.ts'; - -const { Search } = Input; +/** + * AllListingsTableProps expects data to be already sorted, filtered, and paginated by the backend. + * UI state (searchText, statusFilters, sorter, currentPage, pageSize) is only used to trigger backend fetches. + * The backend response must include the correct page of data and total count for pagination. + */ interface AllListingsTableProps { + /** + * Data for the current page, already sorted/filtered/paginated by the backend. + */ data: HomeAllListingsTableContainerListingFieldsFragment[]; + /** + * Current search text (for UI control only, not for local filtering). + */ searchText: string; + /** + * Current status filters (for UI control only, not for local filtering). + */ statusFilters: string[]; + /** + * Current sorter (for UI control only, not for local sorting). + */ sorter: { field: string | null; order: 'ascend' | 'descend' | null }; + /** + * Current page number (1-based). + */ currentPage: number; + /** + * Page size (number of items per page). + */ pageSize: number; + /** + * Total number of items (for pagination UI). + */ total: number; loading?: boolean; + /** + * Triggers backend fetch for search. + */ onSearch: (value: string) => void; + /** + * Triggers backend fetch for status filter. + */ onStatusFilter: (checkedValues: string[]) => void; + /** + * Triggers backend fetch for sort/pagination/filter changes. + */ onTableChange: TableProps['onChange']; + /** + * Triggers backend fetch for page change. + */ onPageChange: (page: number) => void; onAction: (action: string, listingId: string) => void; onViewAllRequests: (listingId: string) => void; } -const STATUS_OPTIONS = [ - { label: 'Active', value: 'Active' }, - { label: 'Paused', value: 'Paused' }, - { label: 'Reserved', value: 'Reserved' }, - { label: 'Expired', value: 'Expired' }, - { label: 'Draft', value: 'Draft' }, - { label: 'Blocked', value: 'Blocked' }, - { label: 'Cancelled', value: 'Cancelled' }, -]; - -// getStatusTagClass moved to shared helper status-tag-class.ts - export const AllListingsTable: React.FC = ({ data, searchText, @@ -53,162 +88,31 @@ export const AllListingsTable: React.FC = ({ onAction, onViewAllRequests, }) => { - const getActionButtons = ( - record: HomeAllListingsTableContainerListingFieldsFragment, - ) => { - const buttons = []; - - const status = record.state ?? 'Unknown'; - - // Conditional actions based on status - if (status === 'Active' || status === 'Reserved') { - buttons.push( - - ); - } - - if (status === 'Paused' || status === 'Expired') { - buttons.push( - , - ); - } - - if (status === 'Blocked') { - buttons.push( - onAction('appeal', record.id)} - okText="Yes" - cancelText="No" - > - - , - ); - } - - if (status === 'Draft') { - buttons.push( - , - ); - } - - // Cancel button for Active listings - if (status === 'Active' || status === 'Paused') { - buttons.push( - onAction('cancel', record.id)} - okText="Yes" - cancelText="No" - > - - , - ); - } - - // Always available actions - buttons.push( - , - ); - - buttons.push( - onAction('delete', record.id)} - okText="Yes" - cancelText="No" - > - - , - ); - - return buttons; - }; - - const columns: TableProps['columns'] = - [ + // All sorting, filtering, and pagination must be handled by the backend. + // The columns below only trigger backend fetches via the provided handlers. + const columns: TableProps['columns'] = [ { title: 'Listing', dataIndex: 'title', key: 'title', width: 300, - filterDropdown: ({ setSelectedKeys, selectedKeys, confirm }) => ( -
- { - setSelectedKeys(e.target.value ? [e.target.value] : []); - }} - onSearch={(value) => { - confirm(); - onSearch(value); - }} - style={{ width: 200 }} - allowClear - /> -
- ), - filterIcon: (filtered: boolean) => ( - - ), + filterDropdown: ({ setSelectedKeys, selectedKeys, confirm }) => + ListingTitleFilterDropdown({ + onSearch, + searchText, + setSelectedKeys, + selectedKeys, + confirm, + }), + filterIcon: (filtered: boolean) => ListingTitleFilterIcon({ filtered }), render: ( title: string, record: HomeAllListingsTableContainerListingFieldsFragment, ) => ( -
- {title} - {title} -
+ ), }, { @@ -217,30 +121,9 @@ export const AllListingsTable: React.FC = ({ key: 'createdAt', sorter: true, sortOrder: sorter.field === 'createdAt' ? sorter.order : null, - render: (date?: string) => { - if (!date) { - return 'N/A'; - } - // Format as yyyy-mm-dd and align digits - const d = new Date(date); - const yyyy = d.getFullYear(); - const mm = String(d.getMonth() + 1).padStart(2, '0'); - const dd = String(d.getDate()).padStart(2, '0'); - const formatted = `${yyyy}-${mm}-${dd}`; - return ( - - {formatted} - - ); - }, + render: (date?: string) => ( + + ), }, { title: 'Reservation Period', @@ -250,66 +133,21 @@ export const AllListingsTable: React.FC = ({ render: ( _: unknown, record: HomeAllListingsTableContainerListingFieldsFragment, - ) => { - const startDate = record.sharingPeriodStart; - const endDate = record.sharingPeriodEnd; - - if (!startDate || !endDate) { - return 'N/A'; - } - - // Format dates as yyyy-mm-dd - const start = - typeof startDate === 'string' - ? startDate.slice(0, 10) - : new Date(startDate).toISOString().slice(0, 10); - const end = - typeof endDate === 'string' - ? endDate.slice(0, 10) - : new Date(endDate).toISOString().slice(0, 10); - const period = `${start} - ${end}`; - - return ( - - {period} - - ); - }, + ) => ( + + ), }, { title: 'Status', dataIndex: 'state', key: 'state', - filterDropdown: ({ confirm }) => ( -
-
- Filter by Status -
- { - onStatusFilter(checkedValues); - confirm(); - }} - style={{ display: 'flex', flexDirection: 'column', gap: 8 }} - /> -
- ), - filterIcon: (filtered: boolean) => ( - - ), - render: (status: string) => ( - {status} - ), + filterDropdown: ({ confirm }) => + StatusFilterDropdown({ statusFilters, onStatusFilter, confirm }), + filterIcon: (filtered: boolean) => StatusFilterIcon({ filtered }), + render: (status: string) => , }, { title: 'Actions', @@ -319,45 +157,8 @@ export const AllListingsTable: React.FC = ({ _: unknown, record: HomeAllListingsTableContainerListingFieldsFragment, ) => { - const actions = getActionButtons(record); - // Ensure at least 3 slots for alignment (first, middle, last) - const minActions = 3; - const paddedActions = [ - ...actions, - ...Array(Math.max(0, minActions - actions.length)).fill(null), - ]; return ( -
- {paddedActions.map((btn, idx) => ( -
- {btn} -
- ))} -
+ ); }, }, @@ -371,29 +172,13 @@ export const AllListingsTable: React.FC = ({ _: unknown, record: HomeAllListingsTableContainerListingFieldsFragment, ) => { - const count = 0; // TODO: implement in future + const count = 0; return ( -
- - {count > 0 && ( - - )} -
+ ); }, }, diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/listing-title-filter-dropdown.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/listing-title-filter-dropdown.tsx new file mode 100644 index 000000000..04d2f303c --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/listing-title-filter-dropdown.tsx @@ -0,0 +1,37 @@ +import { Input } from 'antd'; + +const { Search } = Input; + +interface ListingTitleFilterDropdownProps { + readonly onSearch: (value: string) => void; + readonly searchText: string; + readonly setSelectedKeys: (selectedKeys: React.Key[]) => void; + readonly selectedKeys: React.Key[]; + readonly confirm: () => void; +} + +export function ListingTitleFilterDropdown({ + onSearch, + searchText, + setSelectedKeys, + selectedKeys, + confirm, +}: Readonly): React.ReactNode { + return ( +
+ { + setSelectedKeys(e.target.value ? [e.target.value] : []); + }} + onSearch={(value) => { + confirm(); + onSearch(value); + }} + style={{ width: 200 }} + allowClear + /> +
+ ); +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/listing-title-filter-icon.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/listing-title-filter-icon.tsx new file mode 100644 index 000000000..6da9186ce --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/listing-title-filter-icon.tsx @@ -0,0 +1,8 @@ + +interface ListingTitleFilterIconProps { + readonly filtered: boolean; +} + +export function ListingTitleFilterIcon({ filtered }: Readonly): React.ReactNode { + return ; +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.graphql b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.graphql index 247243c02..acad744d2 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.graphql +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.graphql @@ -1,12 +1,7 @@ -query HomeMyListingsDashboardContainerMyListingsRequestsCount { - myListingsRequests( - page: 1 - pageSize: 1 - searchText: "" - sorter: { field: "", order: "" } - sharerId: "" - statusFilters: [""] - ) { - total +query HomeMyListingsDashboardContainerMyListingsRequestsCount( + $sharerId: ObjectID! +) { + myListingsRequests(sharerId: $sharerId) { + id } } diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.tsx index 270932e75..73342476a 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.container.tsx @@ -1,34 +1,66 @@ -import { MyListingsDashboard } from './my-listings-dashboard.tsx'; import { useQuery } from "@apollo/client/react"; -import { ComponentQueryLoader } from '@sthrift/ui-components'; -import { HomeAllListingsTableContainerMyListingsAllDocument } from '../../../../../generated.tsx'; - -import { useNavigate } from 'react-router-dom'; +import { ComponentQueryLoader } from "@sthrift/ui-components"; +import { + HomeAllListingsTableContainerMyListingsAllDocument, + HomeMyListingsDashboardContainerMyListingsRequestsCountDocument, + ViewListingCurrentUserDocument, + type ViewListingCurrentUserQuery, +} from "../../../../../generated.tsx"; +import { MyListingsDashboard } from "./my-listings-dashboard.tsx"; export const MyListingsDashboardContainer: React.FC = () => { - const navigate = useNavigate(); - const { data, loading, error } = useQuery( - HomeAllListingsTableContainerMyListingsAllDocument, { - variables: { page: 1, pageSize: 6 }, - fetchPolicy: 'network-only', - } - ); + const { data: userData, loading: userLoading } = + useQuery(ViewListingCurrentUserDocument); + + const currentUser = userData?.currentUser; + const sharerId = currentUser?.id ?? ""; + + const { data, loading, error } = useQuery( + HomeAllListingsTableContainerMyListingsAllDocument, + { + variables: { + page: 1, + pageSize: 6, + searchText: "", + statusFilters: [], + sorter: { + field: "", + order: "", + }, + }, + fetchPolicy: "network-only", + skip: !sharerId, + } + ); + + const { data: requestsCountData } = useQuery( + HomeMyListingsDashboardContainerMyListingsRequestsCountDocument, + { + variables: { + sharerId: sharerId, + }, + skip: !sharerId, + fetchPolicy: "network-only", + } + ); - const handleCreateListing = () => { - navigate('/create-listing'); - }; + const handleCreateListing = () => { + // TODO: Navigate to listing creation page + console.log("Navigate to create listing"); + }; - return ( - - } - /> - ); -} + return ( + + } + /> + ); +}; diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.tsx index 823842d23..c37a82263 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/my-listings-dashboard.tsx @@ -1,95 +1,96 @@ -import { Button, Tabs, Badge } from 'antd'; -import type { TabsProps } from 'antd'; -import { AllListingsTableContainer } from './all-listings-table.container.tsx'; -import { RequestsTableContainer } from './requests-table.container.tsx'; -import { useState } from 'react'; -import styles from './my-listings-dashboard.module.css'; +import type { TabsProps } from "antd"; +import { Badge, Button, Tabs } from "antd"; +import { useState } from "react"; +import { AllListingsTableContainer } from "./all-listings-table.container.tsx"; +import styles from "./my-listings-dashboard.module.css"; +import { RequestsTableContainer } from "./requests-table.container.tsx"; interface MyListingsDashboardProps { - onCreateListing: () => void; - requestsCount: number; + onCreateListing: () => void; + requestsCount: number; + sharerId: string; } export const MyListingsDashboard: React.FC = ({ - onCreateListing, - requestsCount, + onCreateListing, + requestsCount, + sharerId, }) => { - const [activeTab, setActiveTab] = useState('all-listings'); - const [allListingsPage, setAllListingsPage] = useState(1); - const [requestsPage, setRequestsPage] = useState(1); + const [activeTab, setActiveTab] = useState("all-listings"); + const [allListingsPage, setAllListingsPage] = useState(1); + const [requestsPage, setRequestsPage] = useState(1); - const handleTabChange = (key: string) => { - setActiveTab(key); - // Reset the page for the tab being switched to - if (key === 'all-listings') { - setAllListingsPage(1); - } - if (key === 'requests') { - setRequestsPage(1); - } - }; + const handleTabChange = (key: string) => { + setActiveTab(key); + if (key === "all-listings") { + setAllListingsPage(1); + } + if (key === "requests") { + setRequestsPage(1); + } + }; - const items: TabsProps['items'] = [ - { - key: 'all-listings', - label: 'All Listings', - children: ( - - ), - }, - { - key: 'requests', - label: ( - - Requests - 0 ? '#ff4d4f' : '#f5f5f5', - color: requestsCount > 0 ? 'white' : '#808080', - fontSize: 12, - marginLeft: '6px', - }} - /> - - ), - children: ( - - ), - }, - ]; + const items: TabsProps["items"] = [ + { + key: "all-listings", + label: "All Listings", + children: ( + + ), + }, + { + key: "requests", + label: ( + + Requests + 0 ? "#ff4d4f" : "#f5f5f5", + color: requestsCount > 0 ? "white" : "#808080", + fontSize: 12, + marginLeft: "6px", + }} + /> + + ), + children: ( + + ), + }, + ]; + return ( +
+
+

+ My Listings +

+ +
- return ( -
-
-

- My Listings -

- -
- - -
- ); -} + +
+ ); +}; diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-card.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-card.tsx index a7bd2a2c2..f7da7ae88 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-card.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-card.tsx @@ -1,17 +1,127 @@ -import { Card, Tag, Space } from 'antd'; +import { Button, Card, Popconfirm, Space, Tag } from 'antd'; import styles from './all-listings-card.module.css'; -import type { ListingRequestData } from './my-listings-dashboard.types.ts'; -import { - getStatusTagClass, - getActionButtons, -} from './requests-status-helpers.tsx'; +import type { ListingRequestData } from './my-listings-dashboard.types.tsx'; interface RequestsCardProps { listing: ListingRequestData; - onAction: (action: string, listingId: string) => void; + onAccept: (requestId: string) => Promise; + onReject: (requestId: string) => void; + onClose: (requestId: string) => void; + onDelete: (requestId: string) => void; + onMessage: (requestId: string) => void; } -const RequestsCard: React.FC = ({ listing, onAction }) => { +const RequestsCard: React.FC = ({ + listing, + onAccept, + onReject, + onClose, + onDelete, + onMessage, +}) => { + const statusClassMap: Record = { + Accepted: 'requestAcceptedTag', + Rejected: 'requestRejectedTag', + Closed: 'expiredTag', + Pending: 'pendingTag', + Requested: 'pendingTag', + Closing: 'closingTag', + Expired: 'expiredTag', + }; + + const statusClass = statusClassMap[listing.status] ?? ''; + + let actions: string[] = []; + switch (listing.status) { + case 'Pending': + case 'Requested': + actions = ['accept', 'reject']; + break; + case 'Accepted': + actions = ['close', 'message']; + break; + case 'Closed': + actions = ['message']; + break; + case 'Rejected': + case 'Expired': + case 'Cancelled': + actions = ['delete']; + break; + } + + const actionButtons = actions.map((action) => { + if (action === 'accept') { + return ( + + ); + } + if (action === 'reject') { + return ( + + ); + } + if (action === 'close') { + return ( + onClose(listing.id)} + okText="Yes" + cancelText="No" + > + + + ); + } + if (action === 'message') { + return ( + + ); + } + if (action === 'delete') { + return ( + onDelete(listing.id)} + okText="Yes" + cancelText="No" + > + + + ); + } + return null; + }); + return ( = ({ listing, onAction }) => { className={styles['listingImage']} />
- + {listing.status}
@@ -41,7 +151,7 @@ const RequestsCard: React.FC = ({ listing, onAction }) => {
{listing.reservationPeriod}
- {getActionButtons(listing, onAction)} + {actionButtons}
diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.test.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.test.tsx new file mode 100644 index 000000000..d0babb339 --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.test.tsx @@ -0,0 +1,70 @@ +import { renderToStaticMarkup } from 'react-dom/server'; +import { describe, expect, it, vi } from 'vitest'; +import { getActionButtons, getStatusTagClass } from './requests-status-helpers.tsx'; +import type { ListingRequestData } from './my-listings-dashboard.types.ts'; + +const baseRequest: ListingRequestData = { + id: 'req-1', + title: 'Test Listing', + requestedBy: 'Test User', + requestedOn: '2024-01-01', + reservationPeriod: '2024-02-01 - 2024-02-15', + status: 'Pending', +}; + +describe('getStatusTagClass', () => { + it('maps known statuses to css classes', () => { + expect(getStatusTagClass('Accepted')).toBe('requestAcceptedTag'); + expect(getStatusTagClass('Rejected')).toBe('requestRejectedTag'); + expect(getStatusTagClass('Closed')).toBe('expiredTag'); + expect(getStatusTagClass('Pending')).toBe('pendingTag'); + expect(getStatusTagClass('Requested')).toBe('pendingTag'); + expect(getStatusTagClass('Closing')).toBe('closingTag'); + expect(getStatusTagClass('Expired')).toBe('expiredTag'); + }); + + it('returns empty string for unknown values', () => { + expect(getStatusTagClass('')).toBe(''); + expect(getStatusTagClass('Unknown')).toBe(''); + }); +}); + +describe('getActionButtons', () => { + const renderButtonsMarkup = (status: string) => { + const onAction = vi.fn(); + const buttons = getActionButtons({ ...baseRequest, status }, onAction); + return renderToStaticMarkup(
{buttons}
); + }; + + it('shows accept/reject for pending requests', () => { + const markup = renderButtonsMarkup('Pending'); + expect(markup).toContain('Accept'); + expect(markup).toContain('Reject'); + }); + + it('shows close/message for accepted requests', () => { + const markup = renderButtonsMarkup('Accepted'); + expect(markup).toContain('Close'); + expect(markup).toContain('Message'); + }); + + it('shows message for closed requests', () => { + const markup = renderButtonsMarkup('Closed'); + expect(markup).toContain('Message'); + }); + + it('shows delete for rejected requests', () => { + const markup = renderButtonsMarkup('Rejected'); + expect(markup).toContain('Delete'); + }); + + it('shows delete for expired requests', () => { + const markup = renderButtonsMarkup('Expired'); + expect(markup).toContain('Delete'); + }); + + it('shows delete for cancelled requests', () => { + const markup = renderButtonsMarkup('Cancelled'); + expect(markup).toContain('Delete'); + }); +}); diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.tsx index a1753675e..58fd55298 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-status-helpers.tsx @@ -1,7 +1,8 @@ // Shared helper functions for Requests components. // Extracted from requests-table to satisfy react-refresh rule and avoid non-component exports in component files. -import React from 'react'; + import { Button, Popconfirm } from 'antd'; +import type React from 'react'; import type { ListingRequestData } from './my-listings-dashboard.types.ts'; export const getStatusTagClass = (status: string): string => { @@ -13,89 +14,105 @@ export const getStatusTagClass = (status: string): string => { case 'Closed': return 'expiredTag'; case 'Pending': + case 'Requested': return 'pendingTag'; case 'Closing': return 'closingTag'; + case 'Expired': + return 'expiredTag'; default: return ''; } -} +}; -export const getActionButtons = ( - record: ListingRequestData, - onAction: (action: string, requestId: string) => void, -) => { - const buttons: React.ReactNode[] = []; +// Action configuration with button properties +type ActionConfig = { + label: string; + confirm?: { + title: string; + description: string; + }; + danger?: boolean; +}; - if (record.status === 'Cancelled' || record.status === 'Rejected') { - buttons.push( - onAction('delete', record.id)} - okText="Yes" - cancelText="No" - > - - , - ); - } +const ACTION_CONFIGS: Record = { + accept: { label: 'Accept' }, + reject: { label: 'Reject' }, + close: { + label: 'Close', + confirm: { + title: 'Close this request?', + description: 'Are you sure you want to close this request?', + }, + }, + message: { label: 'Message' }, + delete: { + label: 'Delete', + confirm: { + title: 'Delete this request?', + description: + 'Are you sure you want to delete this request? This action cannot be undone.', + }, + danger: true, + }, +}; - if (record.status === 'Closed' || record.status === 'Accepted') { - buttons.push( - , - ); - } +// Single status-to-actions mapping +const STATUS_ACTIONS: Record = { + Pending: ['accept', 'reject'], + Requested: ['accept', 'reject'], + Accepted: ['close', 'message'], + Closed: ['message'], + Rejected: ['delete'], + Expired: ['delete'], + Cancelled: ['delete'], +}; + +// Single action button creator +const createActionButton = ( + action: string, + recordId: string, + onAction: (action: string, requestId: string) => void, +): React.ReactNode => { + const config = ACTION_CONFIGS[action]; + if (!config) return null; - if (record.status === 'Accepted') { - buttons.push( + const button = ( + + ); + + if (config.confirm) { + return ( onAction('close', record.id)} + key={action} + title={config.confirm.title} + description={config.confirm.description} + onConfirm={() => onAction(action, recordId)} okText="Yes" cancelText="No" > - - , + {button} + ); } - if (record.status === 'Pending') { - buttons.push( - , - ); - buttons.push( - , - ); - } + return button; +}; - return buttons; -} +export const getActionButtons = ( + record: ListingRequestData, + onAction: (action: string, requestId: string) => void, +): React.ReactNode[] => { + const actions = STATUS_ACTIONS[record.status] || []; + return actions.map((action) => + createActionButton(action, record.id, onAction), + ); +}; diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.graphql b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.graphql index 72dd5f98b..d8f10333a 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.graphql +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.graphql @@ -1,34 +1,44 @@ query HomeRequestsTableContainerMyListingsRequests( - $page: Int! - $pageSize: Int! - $searchText: String! - $statusFilters: [String!]! - $sorter: SorterInput! - $sharerId: ObjectID! + $sharerId: ObjectID! ) { - myListingsRequests( - page: $page - pageSize: $pageSize - searchText: $searchText - statusFilters: $statusFilters - sorter: $sorter - sharerId: $sharerId - ) { - items { - ...HomeRequestsTableContainerRequestFields - } - total - page - pageSize - } + myListingsRequests(sharerId: $sharerId) { + ...HomeRequestsTableContainerRequestFields + } } -fragment HomeRequestsTableContainerRequestFields on ListingRequest { - id - title - image - requestedBy - requestedOn - reservationPeriod - status +mutation HomeRequestsTableContainerAcceptReservationRequest( + $input: AcceptReservationRequestInput! +) { + acceptReservationRequest(input: $input) { + id + state + reservationPeriodStart + reservationPeriodEnd + createdAt + updatedAt + } +} + +fragment HomeRequestsTableContainerRequestFields on ReservationRequest { + id + state + reservationPeriodStart + reservationPeriodEnd + createdAt + listing { + id + title + images + } + reserver { + ... on PersonalUser { + id + account { + profile { + firstName + lastName + } + } + } + } } diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.stories.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.stories.tsx index f5923b739..21cb03afc 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.stories.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.stories.tsx @@ -7,35 +7,67 @@ import { } from '../../../../../test-utils/storybook-decorators.tsx'; import { HomeRequestsTableContainerMyListingsRequestsDocument } from '../../../../../generated.tsx'; -const mockRequests = { - items: [ - { - __typename: 'MyListingRequest', - id: '1', +const mockRequests = [ + { + __typename: 'ReservationRequest', + id: '1', + state: 'Requested', + reservationPeriodStart: '2025-01-20T00:00:00.000Z', + reservationPeriodEnd: '2025-01-25T00:00:00.000Z', + createdAt: '2025-01-15T00:00:00.000Z', + listing: { + __typename: 'ItemListing', + id: 'listing-1', title: 'Cordless Drill', - image: '/assets/item-images/projector.png', - requestedOn: '2025-01-15', - reservationPeriod: '2025-01-20 - 2025-01-25', - status: 'Pending', - requestedBy: 'John Doe', + images: ['/assets/item-images/projector.png'], }, - { - __typename: 'MyListingRequest', - id: '2', + reserver: { + __typename: 'PersonalUser', + id: 'user-1', + account: { + __typename: 'PersonalUserAccount', + profile: { + __typename: 'PersonalUserAccountProfile', + firstName: 'John', + lastName: 'Doe', + }, + }, + }, + }, + { + __typename: 'ReservationRequest', + id: '2', + state: 'Accepted', + reservationPeriodStart: '2025-02-10T00:00:00.000Z', + reservationPeriodEnd: '2025-02-15T00:00:00.000Z', + createdAt: '2025-02-01T00:00:00.000Z', + listing: { + __typename: 'ItemListing', + id: 'listing-2', title: 'Electric Guitar', - image: '/assets/item-images/projector.png', - requestedOn: '2025-02-01', - reservationPeriod: '2025-02-10 - 2025-02-15', - status: 'Accepted', - requestedBy: 'Jane Smith', + images: ['/assets/item-images/projector.png'], }, - ], - total: 2, -}; + reserver: { + __typename: 'PersonalUser', + id: 'user-2', + account: { + __typename: 'PersonalUserAccount', + profile: { + __typename: 'PersonalUserAccountProfile', + firstName: 'Jane', + lastName: 'Smith', + }, + }, + }, + }, +]; const meta: Meta = { title: 'Containers/RequestsTableContainer', component: RequestsTableContainer, + args: { + sharerId: '6324a3f1e3e4e1e6a8e1d8b1', + }, parameters: { layout: 'fullscreen', apolloClient: { @@ -44,11 +76,6 @@ const meta: Meta = { request: { query: HomeRequestsTableContainerMyListingsRequestsDocument, variables: { - page: 1, - pageSize: 6, - searchText: '', - statusFilters: [], - sorter: { field: '', order: '' }, sharerId: '6324a3f1e3e4e1e6a8e1d8b1', }, }, @@ -97,17 +124,12 @@ export const Empty: Story = { request: { query: HomeRequestsTableContainerMyListingsRequestsDocument, variables: { - page: 1, - pageSize: 6, - searchText: '', - statusFilters: [], - sorter: { field: '', order: '' }, sharerId: '6324a3f1e3e4e1e6a8e1d8b1', }, }, result: { data: { - myListingsRequests: { items: [], total: 0 }, + myListingsRequests: [], }, }, }, @@ -138,11 +160,6 @@ export const Loading: Story = { request: { query: HomeRequestsTableContainerMyListingsRequestsDocument, variables: { - page: 1, - pageSize: 6, - searchText: '', - statusFilters: [], - sorter: { field: '', order: '' }, sharerId: '6324a3f1e3e4e1e6a8e1d8b1', }, }, @@ -171,11 +188,6 @@ export const ErrorState: Story = { request: { query: HomeRequestsTableContainerMyListingsRequestsDocument, variables: { - page: 1, - pageSize: 6, - searchText: '', - statusFilters: [], - sorter: { field: '', order: '' }, sharerId: '6324a3f1e3e4e1e6a8e1d8b1', }, }, @@ -214,10 +226,7 @@ export const WithSearchFilter: Story = { maxUsageCount: Number.POSITIVE_INFINITY, result: { data: { - myListingsRequests: { - items: [mockRequests.items[0]], - total: 1, - }, + myListingsRequests: [mockRequests[0]], }, }, }, @@ -258,10 +267,7 @@ export const WithStatusFilter: Story = { maxUsageCount: Number.POSITIVE_INFINITY, result: { data: { - myListingsRequests: { - items: [mockRequests.items[1]], - total: 1, - }, + myListingsRequests: [mockRequests[1]], }, }, }, @@ -334,20 +340,12 @@ export const Pagination: Story = { request: { query: HomeRequestsTableContainerMyListingsRequestsDocument, variables: { - page: 2, - pageSize: 6, - searchText: '', - statusFilters: [], - sorter: { field: '', order: '' }, sharerId: '6324a3f1e3e4e1e6a8e1d8b1', }, }, result: { data: { - myListingsRequests: { - items: [], - total: 12, - }, + myListingsRequests: mockRequests, }, }, }, @@ -378,17 +376,12 @@ export const NoData: Story = { request: { query: HomeRequestsTableContainerMyListingsRequestsDocument, variables: { - page: 1, - pageSize: 6, - searchText: '', - statusFilters: [], - sorter: { field: '', order: '' }, sharerId: '6324a3f1e3e4e1e6a8e1d8b1', }, }, result: { data: { - myListingsRequests: null, + myListingsRequests: [], }, }, }, diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.tsx index d02e8a987..b4b023268 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.container.tsx @@ -1,18 +1,25 @@ +import { useMutation, useQuery } from '@apollo/client/react'; +import { ComponentQueryLoader } from '@sthrift/ui-components'; +import { App } from 'antd'; import { useState } from 'react'; -import { useQuery } from "@apollo/client/react"; +import { + HomeRequestsTableContainerAcceptReservationRequestDocument, + HomeRequestsTableContainerMyListingsRequestsDocument, +} from '../../../../../generated.tsx'; import { RequestsTable } from './requests-table.tsx'; -import { ComponentQueryLoader } from '@sthrift/ui-components'; -import { HomeRequestsTableContainerMyListingsRequestsDocument } from '../../../../../generated.tsx'; interface RequestsTableContainerProps { currentPage: number; onPageChange: (page: number) => void; + sharerId: string; } export const RequestsTableContainer: React.FC = ({ currentPage, onPageChange, + sharerId, }) => { + const { message } = App.useApp(); const [searchText, setSearchText] = useState(''); const [statusFilters, setStatusFilters] = useState([]); const [sorter, setSorter] = useState<{ @@ -21,23 +28,67 @@ export const RequestsTableContainer: React.FC = ({ }>({ field: null, order: null }); const pageSize = 6; - const { data, loading, error } = useQuery( + const { data, loading, error, refetch } = useQuery( HomeRequestsTableContainerMyListingsRequestsDocument, { variables: { - page: currentPage, - pageSize: pageSize, - searchText: searchText, - statusFilters: statusFilters, - sorter: { field: sorter.field ?? '', order: sorter.order ?? '' }, - sharerId: '6324a3f1e3e4e1e6a8e1d8b1' + sharerId: sharerId, }, fetchPolicy: 'network-only', }, ); - const requests = data?.myListingsRequests?.items ?? []; - const total = data?.myListingsRequests?.total ?? 0; + const [acceptRequest] = useMutation( + HomeRequestsTableContainerAcceptReservationRequestDocument, + { + onCompleted: () => { + void refetch(); + message.success('Request accepted successfully'); + }, + onError: (error) => { + message.error(`Failed to accept request: ${error.message}`); + }, + }, + ); + + const allRequests = data?.myListingsRequests ?? []; + + // Transform domain fields to UI format (assume API response matches UI expectations; no type-based remapping) + const transformedAllRequests = allRequests.map((request) => ({ + id: request.id, + title: request.listing?.title ?? 'Unknown', + image: request.listing?.images?.[0] ?? null, + requestedBy: request.reserver?.account?.profile?.firstName && request.reserver?.account?.profile?.lastName + ? `${request.reserver.account.profile.firstName} ${request.reserver.account.profile.lastName}`.trim() + : 'Unknown', + requestedOn: request.createdAt ?? '', + reservationPeriod: + request.reservationPeriodStart && request.reservationPeriodEnd + ? `${new Date(request.reservationPeriodStart).toLocaleDateString()} - ${new Date(request.reservationPeriodEnd).toLocaleDateString()}` + : '', + status: request.state ?? 'Unknown', + })); + + let displayRequests = transformedAllRequests; + + // Apply sorting (keep existing behavior) + if (sorter.field && sorter.order) { + displayRequests = [...displayRequests].sort((a, b) => { + const aVal = a[sorter.field as keyof typeof a]; + const bVal = b[sorter.field as keyof typeof b]; + const comparison = + typeof aVal === 'string' && typeof bVal === 'string' + ? aVal.localeCompare(bVal) + : 0; + return sorter.order === 'ascend' ? comparison : -comparison; + }); + } + + const total = displayRequests.length; + + // Apply pagination + const startIndex = (currentPage - 1) * pageSize; + const pagedRequests = displayRequests.slice(startIndex, startIndex + pageSize); const handleSearch = (value: string) => { setSearchText(value); @@ -65,35 +116,53 @@ export const RequestsTableContainer: React.FC = ({ onPageChange(1); }; - const handleAction = (action: string, requestId: string) => { - // TODO: Implement actual actions in future PRs - console.log(`Action: ${action}, Request ID: ${requestId}`); + + const onAccept = async (requestId: string) => { + await acceptRequest({ variables: { input: { id: requestId } } }); + }; + + const onReject = (_requestId: string) => { + message.info('Reject functionality coming soon'); + }; + + const onClose = (_requestId: string) => { + message.info('Close functionality coming soon'); + }; + + const onDelete = (_requestId: string) => { + message.info('Delete functionality coming soon'); }; - if (error) return

Error: {error.message}

; + const onMessage = (_requestId: string) => { + message.info('Messaging functionality coming soon'); + }; return ( 0 ? allRequests : null} hasDataComponent={ - + } /> ); -} +}; diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.tsx index 767563e65..ddad39b3d 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/requests-table.tsx @@ -1,13 +1,9 @@ -import { Input, Checkbox, Image, Tag } from 'antd'; -import { SearchOutlined, FilterOutlined } from '@ant-design/icons'; -import type { TableProps } from 'antd'; +import { FilterOutlined, SearchOutlined } from '@ant-design/icons'; import { Dashboard } from '@sthrift/ui-components'; -import { RequestsCard } from './requests-card.tsx'; +import type { TableProps } from 'antd'; +import { Button, Checkbox, Image, Input, Tag } from 'antd'; import type { ListingRequestData } from './my-listings-dashboard.types.tsx'; -import { - getStatusTagClass, - getActionButtons, -} from './requests-status-helpers.tsx'; +import { RequestsCard } from './requests-card.tsx'; const { Search } = Input; @@ -24,18 +20,30 @@ interface RequestsTableProps { onStatusFilter: (checkedValues: string[]) => void; onTableChange: TableProps['onChange']; onPageChange: (page: number) => void; - onAction: (action: string, requestId: string) => void; + onAccept: (requestId: string) => Promise; + onReject: (requestId: string) => void; + onClose: (requestId: string) => void; + onDelete: (requestId: string) => void; + onMessage: (requestId: string) => void; } const REQUEST_STATUS_OPTIONS = [ + { label: 'Requested', value: 'Requested' }, { label: 'Accepted', value: 'Accepted' }, { label: 'Rejected', value: 'Rejected' }, { label: 'Closed', value: 'Closed' }, - { label: 'Pending', value: 'Pending' }, - { label: 'Closing', value: 'Closing' }, + { label: 'Expired', value: 'Expired' }, ]; -// getStatusTagClass and getActionButtons moved to requests-status-helpers.tsx +const statusTagClassMap: Record = { + Accepted: 'requestAcceptedTag', + Rejected: 'requestRejectedTag', + Closed: 'expiredTag', + Pending: 'pendingTag', + Requested: 'pendingTag', + Closing: 'closingTag', + Expired: 'expiredTag', +}; export const RequestsTable: React.FC = ({ data, @@ -50,7 +58,11 @@ export const RequestsTable: React.FC = ({ onStatusFilter, onTableChange, onPageChange, - onAction, + onAccept, + onReject, + onClose, + onDelete, + onMessage, }) => { const columns: TableProps['columns'] = [ { @@ -143,7 +155,7 @@ export const RequestsTable: React.FC = ({ // Try to format both as yyyy-mm-dd function formatDate(str: string) { const d = new Date(str); - if (isNaN(d.getTime())) { + if (Number.isNaN(d.getTime())) { return str; } const yyyy = d.getFullYear(); @@ -192,19 +204,36 @@ export const RequestsTable: React.FC = ({ filterIcon: (filtered: boolean) => ( ), - render: (status: string) => ( - {status} - ), + render: (status: string) => { + const statusClass = statusTagClassMap[status] ?? ''; + return {status}; + }, }, { title: 'Actions', key: 'actions', width: 200, - render: (_: unknown, record: ListingRequestData) => ( -
- {getActionButtons(record, onAction)} -
- ), + render: (_: unknown, record: ListingRequestData) => { + const canAccept = + record.status === 'Pending' || record.status === 'Requested'; + + if (!canAccept) { + return null; + } + + return ( +
+ +
+ ); + }, }, ]; @@ -220,8 +249,15 @@ export const RequestsTable: React.FC = ({ showPagination={true} onChange={onTableChange} renderGridItem={(listing) => ( - + )} /> ); -} +}; diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/status-filter-dropdown.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/status-filter-dropdown.tsx new file mode 100644 index 000000000..b025ecf34 --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/status-filter-dropdown.tsx @@ -0,0 +1,37 @@ +import { Checkbox } from 'antd'; + +const STATUS_OPTIONS = [ + { label: 'Active', value: 'Active' }, + { label: 'Paused', value: 'Paused' }, + { label: 'Reserved', value: 'Reserved' }, + { label: 'Expired', value: 'Expired' }, + { label: 'Draft', value: 'Draft' }, + { label: 'Blocked', value: 'Blocked' }, + { label: 'Cancelled', value: 'Cancelled' }, +]; + + readonly statusFilters: string[]; + readonly onStatusFilter: (checkedValues: string[]) => void; + readonly confirm: () => void; +} + +export function StatusFilterDropdown({ + statusFilters, + onStatusFilter, + confirm, +}: Readonly): React.ReactNode { + return ( +
+
Filter by Status
+ { + onStatusFilter(checkedValues); + confirm(); + }} + style={{ display: 'flex', flexDirection: 'column', gap: 8 }} + /> +
+ ); +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/status-filter-icon.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/status-filter-icon.tsx new file mode 100644 index 000000000..5fee120c9 --- /dev/null +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/components/status-filter-icon.tsx @@ -0,0 +1,8 @@ +import { FilterOutlined } from '@ant-design/icons'; + + readonly filtered: boolean; +} + +export function StatusFilterIcon({ filtered }: Readonly): React.ReactNode { + return ; +} diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-card.stories.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-card.stories.tsx index 8fdd4e49d..64638ab29 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-card.stories.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-card.stories.tsx @@ -7,7 +7,7 @@ const MOCK_REQUEST = { image: '/assets/item-images/projector.png', requestedOn: '2025-12-23', reservationPeriod: '2020-11-08 - 2020-12-23', - status: 'Pending', + status: 'Requested', requestedBy: 'John Doe', }; @@ -16,12 +16,43 @@ const meta: Meta = { component: RequestsCard, args: { listing: MOCK_REQUEST, - onAction: (action: string, id: string) => - console.log('Action:', action, 'Request ID:', id), + onAccept: async (id: string) => console.log('Accept:', id), + onReject: (id: string) => console.log('Reject:', id), + onClose: (id: string) => console.log('Close:', id), + onDelete: (id: string) => console.log('Delete:', id), + onMessage: (id: string) => console.log('Message:', id), }, }; export default meta; type Story = StoryObj; -export const Default: Story = {}; +export const Requested: Story = { + args: { + listing: { ...MOCK_REQUEST, status: 'Requested' }, + }, +}; + +export const Accepted: Story = { + args: { + listing: { ...MOCK_REQUEST, status: 'Accepted' }, + }, +}; + +export const Rejected: Story = { + args: { + listing: { ...MOCK_REQUEST, status: 'Rejected' }, + }, +}; + +export const Closed: Story = { + args: { + listing: { ...MOCK_REQUEST, status: 'Closed' }, + }, +}; + +export const Expired: Story = { + args: { + listing: { ...MOCK_REQUEST, status: 'Expired' }, + }, +}; diff --git a/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-table.stories.tsx b/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-table.stories.tsx index f99234788..ffee11b0e 100644 --- a/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-table.stories.tsx +++ b/apps/ui-sharethrift/src/components/layouts/home/my-listings/stories/requests-table.stories.tsx @@ -8,7 +8,7 @@ const MOCK_REQUESTS = [ image: '/assets/item-images/projector.png', requestedOn: '2025-12-23', reservationPeriod: '2020-11-08 - 2020-12-23', - status: 'Pending', + status: 'Requested', requestedBy: 'John Doe', }, { @@ -20,6 +20,33 @@ const MOCK_REQUESTS = [ status: 'Accepted', requestedBy: 'Jane Smith', }, + { + id: '3', + title: 'Camping Tent', + image: '/assets/item-images/tent.png', + requestedOn: '2025-07-15', + reservationPeriod: '2025-08-01 - 2025-08-15', + status: 'Rejected', + requestedBy: 'Bob Wilson', + }, + { + id: '4', + title: 'Projector', + image: '/assets/item-images/projector.png', + requestedOn: '2025-06-10', + reservationPeriod: '2025-07-01 - 2025-07-31', + status: 'Closed', + requestedBy: 'Alice Johnson', + }, + { + id: '5', + title: 'Ladder', + image: '/assets/item-images/ladder.png', + requestedOn: '2025-05-20', + reservationPeriod: '2025-06-01 - 2025-06-15', + status: 'Expired', + requestedBy: 'Charlie Brown', + }, ]; const meta: Meta = { @@ -48,8 +75,11 @@ const meta: Meta = { }); }, onPageChange: (page: number) => console.log('Page change:', page), - onAction: (action: string, requestId: string) => - console.log('Action:', action, 'Request:', requestId), + onAccept: async (requestId: string) => console.log('Accept:', requestId), + onReject: (requestId: string) => console.log('Reject:', requestId), + onClose: (requestId: string) => console.log('Close:', requestId), + onDelete: (requestId: string) => console.log('Delete:', requestId), + onMessage: (requestId: string) => console.log('Message:', requestId), }, }; diff --git a/apps/ui-sharethrift/src/main.tsx b/apps/ui-sharethrift/src/main.tsx index 0a362491c..7e22418ed 100644 --- a/apps/ui-sharethrift/src/main.tsx +++ b/apps/ui-sharethrift/src/main.tsx @@ -3,6 +3,7 @@ import { createRoot } from 'react-dom/client'; import './index.css'; import { BrowserRouter } from 'react-router-dom'; import { AuthProvider } from 'react-oidc-context'; +import { App } from 'antd'; import { oidcConfig } from './config/oidc-config.tsx'; import { ApolloConnection } from './components/shared/apollo-connection.tsx'; import { AppContainer } from './App.container.tsx'; @@ -20,7 +21,9 @@ if (rootElement) { - + + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a3db070ac..14cae90b9 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -21,7 +21,7 @@ variables: - name: ServiceConnectionName value: 'ShareThrift-MSDN' - name: vmImageName - value: 'ubuntu-latest' + value: 'ubuntu-latest' - name: system.debug value: true - name: pnpm_config_cache diff --git a/package.json b/package.json index a730e69c7..840c32226 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,9 @@ "snyk:iac:report": "snyk iac test iac/**/*.bicep apps/**/iac/**/*.bicep --org=simnova --remote-repo-url=https://github.com/simnova/sharethrift --target-reference=main --target-name=sharethrift-iac --report" }, "pnpm": { + "overrides": { + "qs": "6.14.1" + }, "auditConfig": { "ignoreGhsas": [ "GHSA-6rw7-vpxm-498p" diff --git a/packages/cellix/mock-oauth2-server/src/index.ts b/packages/cellix/mock-oauth2-server/src/index.ts index 61f34b830..9869c7f90 100644 --- a/packages/cellix/mock-oauth2-server/src/index.ts +++ b/packages/cellix/mock-oauth2-server/src/index.ts @@ -1,8 +1,14 @@ -import { setupEnvironment } from './setup-environment.js'; import crypto, { type KeyObject, type webcrypto } from 'node:crypto'; import express from 'express'; -import { exportJWK, generateKeyPair, SignJWT, type JWK } from 'jose'; -import { exportPKCS8 } from 'jose'; +import { + exportJWK, + exportPKCS8, + generateKeyPair, + type JWK, + SignJWT, +} from 'jose'; + +import { setupEnvironment } from './setup-environment.js'; setupEnvironment(); const app = express(); @@ -164,7 +170,10 @@ async function main() { const { tid, code } = req.body; if (typeof code !== 'string') { - res.status(400).json({ error: 'invalid_request', error_description: 'code must be a string' }); + res.status(400).json({ + error: 'invalid_request', + error_description: 'code must be a string', + }); return; } @@ -190,13 +199,19 @@ async function main() { // Use different credentials based on portal type const email = isAdminPortal + // biome-ignore lint:useLiteralKeys ? process.env['Admin_Email'] || process.env['Email'] || '' + // biome-ignore lint:useLiteralKeys : process.env['Email'] || ''; const given_name = isAdminPortal + // biome-ignore lint:useLiteralKeys ? process.env['Admin_Given_Name'] || process.env['Given_Name'] || '' + // biome-ignore lint:useLiteralKeys : process.env['Given_Name'] || ''; const family_name = isAdminPortal + // biome-ignore lint:useLiteralKeys ? process.env['Admin_Family_Name'] || process.env['Family_Name'] || '' + // biome-ignore lint:useLiteralKeys : process.env['Family_Name'] || ''; const profile: TokenProfile = { @@ -243,10 +258,11 @@ async function main() { const requestedRedirectUri = redirect_uri as string; const normalizedRequested = normalizeUrl(requestedRedirectUri); - - const isAllowed = Array.from(allowedRedirectUris).some( - allowedUri => normalizeUrl(allowedUri) === normalizedRequested - ) || normalizeUrl(allowedRedirectUri) === normalizedRequested; + + const isAllowed = + Array.from(allowedRedirectUris).some( + (allowedUri) => normalizeUrl(allowedUri) === normalizedRequested, + ) || normalizeUrl(allowedRedirectUri) === normalizedRequested; if (!isAllowed) { res.status(400).send('Invalid redirect_uri'); @@ -255,14 +271,14 @@ async function main() { // Generate authorization code const code = `mock-auth-code-${Buffer.from(requestedRedirectUri).toString('base64')}`; - + try { const redirectUrl = new URL(requestedRedirectUri); redirectUrl.searchParams.set('code', code); if (state) { redirectUrl.searchParams.set('state', state as string); } - + // Send 302 redirect with Location header explicitly set to allowlisted URL const finalUrl = redirectUrl.toString(); res.setHeader('Location', finalUrl); diff --git a/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/features/update.feature b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/features/update.feature new file mode 100644 index 000000000..d052d73be --- /dev/null +++ b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/features/update.feature @@ -0,0 +1,58 @@ +Feature: Updating a reservation request + + Scenario: Successfully updating a reservation request state to Accepted + Given a reservation request ID "req-123" + And the reservation request exists with state "Requested" + When the update command is executed with state "Accepted" + Then the reservation request state should be updated to "Accepted" + And the update operation should succeed + + Scenario: Successfully updating closeRequestedBy to SHARER + Given a reservation request ID "req-123" + And the reservation request exists with state "Accepted" + When the update command is executed with closeRequestedBy "SHARER" + Then closeRequestedBy should be "SHARER" + And the update operation should succeed + + Scenario: Successfully updating closeRequestedBy to RESERVER + Given a reservation request ID "req-123" + And the reservation request exists with state "Accepted" + When the update command is executed with closeRequestedBy "RESERVER" + Then closeRequestedBy should be "RESERVER" + And the update operation should succeed + + Scenario: Auto-rejecting overlapping requests when accepting a request + Given a reservation request ID "req-123" + And the reservation request exists with state "Requested" + And the reservation request has listing ID "listing-456" + And there are overlapping pending requests for the same listing + When the update command is executed with state "Accepted" + Then the reservation request state should be updated to "Accepted" + And all overlapping pending requests should be automatically rejected + + Scenario: Updating a reservation request that does not exist + Given a reservation request ID "req-999" that does not exist + When the update command is executed with state "Accepted" + Then an error should be thrown with message "Reservation request not found" + + Scenario: Updating multiple fields at once + Given a reservation request ID "req-123" + And the reservation request exists with state "Requested" + When the update command is executed with state "Accepted" and closeRequestedBy "SHARER" + Then the reservation request state should be updated to "Accepted" + And closeRequestedBy should be "SHARER" + And the update operation should succeed + + Scenario: Auto-reject continues when individual rejection fails + Given a reservation request ID "req-123" + And there are multiple overlapping requests + And one rejection will fail + When the update command is executed with state "Accepted" + Then the main request should still be accepted + And the second overlapping request should be rejected + + Scenario: Update succeeds even when auto-reject query fails + Given a reservation request ID "req-123" + And the overlap query will fail + When the update command is executed with state "Accepted" + Then the main update should still succeed despite auto-reject failure diff --git a/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/index.ts b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/index.ts index e459f01a2..755f224cf 100644 --- a/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/index.ts +++ b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/index.ts @@ -1,36 +1,90 @@ import type { Domain } from '@sthrift/domain'; import type { DataSources } from '@sthrift/persistence'; -import { type ReservationRequestQueryActiveByReserverIdCommand, queryActiveByReserverId } from './query-active-by-reserver-id.ts'; -import { type ReservationRequestQueryPastByReserverIdCommand, queryPastByReserverId } from './query-past-by-reserver-id.ts'; -import { type ReservationRequestQueryActiveByReserverIdAndListingIdCommand, queryActiveByReserverIdAndListingId } from './query-active-by-reserver-id-and-listing-id.ts'; -import { type ReservationRequestQueryByIdCommand, queryById } from './query-by-id.ts'; -import { type ReservationRequestCreateCommand, create } from './create.ts'; -import { type ReservationRequestQueryOverlapByListingIdAndReservationPeriodCommand, queryOverlapByListingIdAndReservationPeriod } from './query-overlap-by-listing-id-and-reservation-period.ts'; -import { type ReservationRequestQueryActiveByListingIdCommand, queryActiveByListingId } from './query-active-by-listing-id.ts'; -import { type ReservationRequestQueryListingRequestsBySharerIdCommand, queryListingRequestsBySharerId } from './query-listing-requests-by-sharer-id.ts'; +import { create, type ReservationRequestCreateCommand } from './create.ts'; +import { + queryActiveByListingId, + type ReservationRequestQueryActiveByListingIdCommand, +} from './query-active-by-listing-id.ts'; +import { + queryActiveByReserverId, + type ReservationRequestQueryActiveByReserverIdCommand, +} from './query-active-by-reserver-id.ts'; +import { + queryActiveByReserverIdAndListingId, + type ReservationRequestQueryActiveByReserverIdAndListingIdCommand, +} from './query-active-by-reserver-id-and-listing-id.ts'; +import { + queryById, + type ReservationRequestQueryByIdCommand, +} from './query-by-id.ts'; +import { + queryListingRequestsBySharerId, + type ReservationRequestQueryListingRequestsBySharerIdCommand, +} from './query-listing-requests-by-sharer-id.ts'; +import { + queryOverlapByListingIdAndReservationPeriod, + type ReservationRequestQueryOverlapByListingIdAndReservationPeriodCommand, +} from './query-overlap-by-listing-id-and-reservation-period.ts'; +import { + queryPastByReserverId, + type ReservationRequestQueryPastByReserverIdCommand, +} from './query-past-by-reserver-id.ts'; +import { update, type ReservationRequestUpdateCommand } from './update.ts'; export interface ReservationRequestApplicationService { - queryById: (command: ReservationRequestQueryByIdCommand) => Promise, - queryActiveByReserverId: (command: ReservationRequestQueryActiveByReserverIdCommand) => Promise, - queryPastByReserverId: (command: ReservationRequestQueryPastByReserverIdCommand) => Promise, - queryActiveByReserverIdAndListingId: (command: ReservationRequestQueryActiveByReserverIdAndListingIdCommand) => Promise, - queryOverlapByListingIdAndReservationPeriod: (command: ReservationRequestQueryOverlapByListingIdAndReservationPeriodCommand) => Promise, - queryActiveByListingId: (command: ReservationRequestQueryActiveByListingIdCommand) => Promise, - queryListingRequestsBySharerId: (command: ReservationRequestQueryListingRequestsBySharerIdCommand) => Promise, - create: (command: ReservationRequestCreateCommand) => Promise, + queryById: ( + command: ReservationRequestQueryByIdCommand, + ) => Promise; + queryActiveByReserverId: ( + command: ReservationRequestQueryActiveByReserverIdCommand, + ) => Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + >; + queryPastByReserverId: ( + command: ReservationRequestQueryPastByReserverIdCommand, + ) => Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + >; + queryActiveByReserverIdAndListingId: ( + command: ReservationRequestQueryActiveByReserverIdAndListingIdCommand, + ) => Promise; + queryOverlapByListingIdAndReservationPeriod: ( + command: ReservationRequestQueryOverlapByListingIdAndReservationPeriodCommand, + ) => Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + >; + queryActiveByListingId: ( + command: ReservationRequestQueryActiveByListingIdCommand, + ) => Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + >; + queryListingRequestsBySharerId: ( + command: ReservationRequestQueryListingRequestsBySharerIdCommand, + ) => Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + >; + create: ( + command: ReservationRequestCreateCommand, + ) => Promise; + update: ( + command: ReservationRequestUpdateCommand, + ) => Promise; } export const ReservationRequest = ( - dataSources: DataSources + dataSources: DataSources, ): ReservationRequestApplicationService => { - return { - queryById: queryById(dataSources), - queryActiveByReserverId: queryActiveByReserverId(dataSources), - queryPastByReserverId: queryPastByReserverId(dataSources), - queryActiveByReserverIdAndListingId: queryActiveByReserverIdAndListingId(dataSources), - queryOverlapByListingIdAndReservationPeriod: queryOverlapByListingIdAndReservationPeriod(dataSources), - queryActiveByListingId: queryActiveByListingId(dataSources), - queryListingRequestsBySharerId: queryListingRequestsBySharerId(dataSources), - create: create(dataSources), - } -} \ No newline at end of file + return { + queryById: queryById(dataSources), + queryActiveByReserverId: queryActiveByReserverId(dataSources), + queryPastByReserverId: queryPastByReserverId(dataSources), + queryActiveByReserverIdAndListingId: + queryActiveByReserverIdAndListingId(dataSources), + queryOverlapByListingIdAndReservationPeriod: + queryOverlapByListingIdAndReservationPeriod(dataSources), + queryActiveByListingId: queryActiveByListingId(dataSources), + queryListingRequestsBySharerId: queryListingRequestsBySharerId(dataSources), + create: create(dataSources), + update: update(dataSources), + }; +}; diff --git a/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/update.test.ts b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/update.test.ts new file mode 100644 index 000000000..186df3ffc --- /dev/null +++ b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/update.test.ts @@ -0,0 +1,430 @@ +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { describeFeature, loadFeature } from '@amiceli/vitest-cucumber'; +import type { Domain } from '@sthrift/domain'; +import type { DataSources } from '@sthrift/persistence'; +import { expect, vi } from 'vitest'; +import { + update, + type ReservationRequestUpdateCommand, +} from './update.ts'; + +const test = { for: describeFeature }; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const feature = await loadFeature( + path.resolve(__dirname, 'features/update.feature'), +); + +test.for(feature, ({ Scenario, BeforeEachScenario }) => { + let mockDataSources: DataSources; + let command: ReservationRequestUpdateCommand; + let result: + | Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference + | undefined; + let error: Error | unknown; + let mockReservationRequest: Partial; + let mockRepo: Pick< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestRepository, + 'getById' | 'save' + >; + + BeforeEachScenario(() => { + mockReservationRequest = { + id: 'req-123', + state: 'Requested', + closeRequestedBy: null, + reservationPeriodStart: new Date('2024-01-01'), + reservationPeriodEnd: new Date('2024-01-07'), + loadListing: vi.fn().mockResolvedValue({ id: 'listing-456' }), + }; + + mockRepo = { + getById: vi.fn().mockResolvedValue(mockReservationRequest), + save: vi.fn().mockImplementation((request) => Promise.resolve(request)), + }; + + mockDataSources = { + readonlyDataSource: { + ReservationRequest: { + ReservationRequest: { + ReservationRequestReadRepo: { + queryOverlapByListingIdAndReservationPeriod: vi.fn(), + }, + }, + }, + }, + domainDataSource: { + ReservationRequest: { + ReservationRequest: { + ReservationRequestUnitOfWork: { + withScopedTransaction: vi.fn().mockImplementation( + // biome-ignore lint/suspicious/noExplicitAny: Test mock callback + async (callback: any) => { + await callback(mockRepo); + }, + ), + }, + }, + }, + }, + // biome-ignore lint/suspicious/noExplicitAny: Test mock type assertion + } as any; + + command = { + id: 'req-123', + }; + + result = undefined; + error = undefined; + }); + + Scenario( + 'Successfully updating a reservation request state to Accepted', + ({ Given, And, When, Then }) => { + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('the reservation request exists with state "Requested"', () => { + // Already set up in BeforeEachScenario + }); + + When('the update command is executed with state "Accepted"', async () => { + command.state = 'Accepted'; + + ( + // biome-ignore lint/suspicious/noExplicitAny: Test mock access + mockDataSources.readonlyDataSource as any + ).ReservationRequest.ReservationRequest.ReservationRequestReadRepo.queryOverlapByListingIdAndReservationPeriod.mockResolvedValue( + [], + ); + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }); + + Then( + 'the reservation request state should be updated to "Accepted"', + () => { + expect(mockReservationRequest.state).toBe('Accepted'); + }, + ); + + And('the update operation should succeed', () => { + expect(result).toBeDefined(); + expect(result?.id).toBe('req-123'); + }); + }, + ); + + Scenario( + 'Successfully updating closeRequestedBy to SHARER', + ({ Given, And, When, Then }) => { + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('the reservation request exists with state "Accepted"', () => { + mockReservationRequest.state = 'Accepted'; + }); + + When( + 'the update command is executed with closeRequestedBy "SHARER"', + async () => { + command.closeRequestedBy = 'SHARER'; + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }, + ); + + Then('closeRequestedBy should be "SHARER"', () => { + expect(mockReservationRequest.closeRequestedBy).toBe('SHARER'); + }); + + And('the update operation should succeed', () => { + expect(result).toBeDefined(); + expect(result?.id).toBe('req-123'); + }); + }, + ); + + Scenario( + 'Successfully updating closeRequestedBy to RESERVER', + ({ Given, And, When, Then }) => { + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('the reservation request exists with state "Accepted"', () => { + mockReservationRequest.state = 'Accepted'; + }); + + When( + 'the update command is executed with closeRequestedBy "RESERVER"', + async () => { + command.closeRequestedBy = 'RESERVER'; + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }, + ); + + Then('closeRequestedBy should be "RESERVER"', () => { + expect(mockReservationRequest.closeRequestedBy).toBe('RESERVER'); + }); + + And('the update operation should succeed', () => { + expect(result).toBeDefined(); + expect(result?.id).toBe('req-123'); + }); + }, + ); + + Scenario( + 'Auto-rejecting overlapping requests when accepting a request', + ({ Given, And, When, Then }) => { + // biome-ignore lint/suspicious/noExplicitAny: Test mock variable + let overlappingRequest1: any; + // biome-ignore lint/suspicious/noExplicitAny: Test mock variable + let overlappingRequest2: any; + + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('the reservation request exists with state "Requested"', () => { + // Already set up in BeforeEachScenario + }); + + And('the reservation request has listing ID "listing-456"', () => { + // Already mocked in loadListing + }); + + And( + 'there are overlapping pending requests for the same listing', + () => { + overlappingRequest1 = { + id: 'req-456', + state: 'Requested', + }; + overlappingRequest2 = { + id: 'req-789', + state: 'Requested', + }; + + ( + // biome-ignore lint/suspicious/noExplicitAny: Test mock access + mockDataSources.readonlyDataSource as any + ).ReservationRequest.ReservationRequest.ReservationRequestReadRepo.queryOverlapByListingIdAndReservationPeriod.mockResolvedValue( + [ + { id: 'req-123', state: 'Requested' }, // Self + overlappingRequest1, + overlappingRequest2, + ], + ); + + // Mock the repo.getById to return different requests based on ID + mockRepo.getById.mockImplementation((id: string) => { + if (id === 'req-123') return Promise.resolve(mockReservationRequest); + if (id === 'req-456') return Promise.resolve(overlappingRequest1); + if (id === 'req-789') return Promise.resolve(overlappingRequest2); + return Promise.resolve(null); + }); + }, + ); + + When('the update command is executed with state "Accepted"', async () => { + command.state = 'Accepted'; + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }); + + Then( + 'the reservation request state should be updated to "Accepted"', + () => { + expect(mockReservationRequest.state).toBe('Accepted'); + }, + ); + + And( + 'all overlapping pending requests should be automatically rejected', + () => { + expect(overlappingRequest1.state).toBe('Rejected'); + expect(overlappingRequest2.state).toBe('Rejected'); + }, + ); + }, + ); + + Scenario( + 'Updating a reservation request that does not exist', + ({ Given, When, Then }) => { + Given('a reservation request ID "req-999" that does not exist', () => { + command.id = 'req-999'; + mockRepo.getById.mockResolvedValue(null); + }); + + When('the update command is executed with state "Accepted"', async () => { + command.state = 'Accepted'; + + const updateFn = update(mockDataSources); + try { + await updateFn(command); + } catch (e) { + error = e; + } + }); + + Then( + 'an error should be thrown with message "Reservation request not found"', + () => { + expect(error).toBeDefined(); + expect(error.message).toBe('Reservation request not found'); + }, + ); + }, + ); + + Scenario( + 'Updating multiple fields at once', + ({ Given, And, When, Then }) => { + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('the reservation request exists with state "Requested"', () => { + // Already set up in BeforeEachScenario + }); + + When( + 'the update command is executed with state "Accepted" and closeRequestedBy "SHARER"', + async () => { + command.state = 'Accepted'; + command.closeRequestedBy = 'SHARER'; + + ( + // biome-ignore lint/suspicious/noExplicitAny: Test mock access + mockDataSources.readonlyDataSource as any + ).ReservationRequest.ReservationRequest.ReservationRequestReadRepo.queryOverlapByListingIdAndReservationPeriod.mockResolvedValue( + [], + ); + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }, + ); + + Then( + 'the reservation request state should be updated to "Accepted"', + () => { + expect(mockReservationRequest.state).toBe('Accepted'); + }, + ); + + And('closeRequestedBy should be "SHARER"', () => { + expect(mockReservationRequest.closeRequestedBy).toBe('SHARER'); + }); + + And('the update operation should succeed', () => { + expect(result).toBeDefined(); + expect(result?.id).toBe('req-123'); + }); + }, + ); + + Scenario( + 'Auto-reject continues when individual rejection fails', + ({ Given, And, When, Then }) => { + // biome-ignore lint/suspicious/noExplicitAny: Test mock variable + let overlappingRequest1: any; + // biome-ignore lint/suspicious/noExplicitAny: Test mock variable + let overlappingRequest2: any; + + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('there are multiple overlapping requests', () => { + overlappingRequest1 = { + id: 'req-456', + state: 'Requested', + }; + overlappingRequest2 = { + id: 'req-789', + state: 'Requested', + }; + + ( + // biome-ignore lint/suspicious/noExplicitAny: Test mock access + mockDataSources.readonlyDataSource as any + ).ReservationRequest.ReservationRequest.ReservationRequestReadRepo.queryOverlapByListingIdAndReservationPeriod.mockResolvedValue( + [ + { id: 'req-123', state: 'Requested' }, + overlappingRequest1, + overlappingRequest2, + ], + ); + }); + + And('one rejection will fail', () => { + // First call returns the request, second call throws error, third succeeds + mockRepo.getById + .mockResolvedValueOnce(mockReservationRequest) // Main request + .mockRejectedValueOnce(new Error('Database error')) // First overlap fails + .mockResolvedValueOnce(overlappingRequest2); // Second overlap succeeds + }); + + When('the update command is executed with state "Accepted"', async () => { + command.state = 'Accepted'; + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }); + + Then('the main request should still be accepted', () => { + expect(mockReservationRequest.state).toBe('Accepted'); + expect(result).toBeDefined(); + }); + + And('the second overlapping request should be rejected', () => { + expect(overlappingRequest2.state).toBe('Rejected'); + }); + }, + ); + + Scenario( + 'Update succeeds even when auto-reject query fails', + ({ Given, And, When, Then }) => { + Given('a reservation request ID "req-123"', () => { + // Already set in command + }); + + And('the overlap query will fail', () => { + ( + // biome-ignore lint/suspicious/noExplicitAny: Test mock access + mockDataSources.readonlyDataSource as any + ).ReservationRequest.ReservationRequest.ReservationRequestReadRepo.queryOverlapByListingIdAndReservationPeriod.mockRejectedValue( + new Error('Query failed'), + ); + }); + + When('the update command is executed with state "Accepted"', async () => { + command.state = 'Accepted'; + + const updateFn = update(mockDataSources); + result = await updateFn(command); + }); + + Then( + 'the main update should still succeed despite auto-reject failure', + () => { + expect(mockReservationRequest.state).toBe('Accepted'); + expect(result).toBeDefined(); + expect(result?.id).toBe('req-123'); + }, + ); + }, + ); +}); diff --git a/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/update.ts b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/update.ts new file mode 100644 index 000000000..c1bfe7b99 --- /dev/null +++ b/packages/sthrift/application-services/src/contexts/reservation-request/reservation-request/update.ts @@ -0,0 +1,116 @@ +import type { Domain } from '@sthrift/domain'; +import type { DataSources } from '@sthrift/persistence'; + +export interface ReservationRequestUpdateCommand { + id: string; + state?: string; + /** + * Which party requested to close the reservation. + * - undefined: do not change the current value + * - 'SHARER': sharer requested to close + * - 'RESERVER': reserver requested to close + * - null: clear close request + */ + closeRequestedBy?: 'SHARER' | 'RESERVER' | null; +} + +const ACCEPTED_STATE = 'Accepted'; +const REQUESTED_STATE = 'Requested'; +type ReservationRequestRepository = + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestRepository; + +export const update = (dataSources: DataSources) => { + return async ( + command: ReservationRequestUpdateCommand, + ): Promise => { + let updatedReservationRequest: + | Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference + | undefined; + + await dataSources.domainDataSource.ReservationRequest.ReservationRequest.ReservationRequestUnitOfWork.withScopedTransaction( + async (repo) => { + const reservationRequest = await repo.getById(command.id); + if (!reservationRequest) { + throw new Error('Reservation request not found'); + } + + // Update state if provided + // Domain layer validates state transitions and permissions via visa pattern + // The state setter routes to appropriate domain methods (accept(), reject(), etc.) + if (command.state !== undefined) { + reservationRequest.state = command.state; + } + + // Single source of truth: 'SHARER' | 'RESERVER' | null + if (command.closeRequestedBy !== undefined) { + reservationRequest.closeRequestedBy = command.closeRequestedBy; + } + + updatedReservationRequest = await repo.save(reservationRequest); + + // Auto-reject overlapping pending requests when accepting + // Check the actual state of the updated request after transition + if ( + updatedReservationRequest && + updatedReservationRequest.state === ACCEPTED_STATE + ) { + const listingId = (await updatedReservationRequest.loadListing()).id; + await autoRejectOverlappingRequests( + updatedReservationRequest, + listingId, + repo, + dataSources, + ); + } + }, + ); + + if (!updatedReservationRequest) { + throw new Error('Reservation request update failed'); + } + + return updatedReservationRequest; + }; +}; + +async function autoRejectOverlappingRequests( + acceptedRequest: Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference, + listingId: string, + repo: ReservationRequestRepository, + dataSources: DataSources, +): Promise { + try { + const overlappingRequests = + await dataSources.readonlyDataSource.ReservationRequest.ReservationRequest.ReservationRequestReadRepo.queryOverlapByListingIdAndReservationPeriod( + { + listingId, + reservationPeriodStart: acceptedRequest.reservationPeriodStart, + reservationPeriodEnd: acceptedRequest.reservationPeriodEnd, + }, + ); + + const requestsToReject = overlappingRequests.filter( + ( + request: Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference, + ) => + request.id !== acceptedRequest.id && request.state === REQUESTED_STATE, + ); + + for (const request of requestsToReject) { + try { + const requestToReject = await repo.getById(request.id); + + if (requestToReject?.state === REQUESTED_STATE) { + requestToReject.state = 'Rejected'; + await repo.save(requestToReject); + } + } catch { + // Individual rejection failure - continue processing other requests + // Outer catch will log if the entire auto-reject operation fails + } + } + } catch { + // Auto-reject overlapping requests failed + // Don't block the main update operation if background cleanup fails + } +} diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/events/reservation-request-accepted.event.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/events/reservation-request-accepted.event.ts new file mode 100644 index 000000000..ab2b8f970 --- /dev/null +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/events/reservation-request-accepted.event.ts @@ -0,0 +1,11 @@ +import { DomainSeedwork } from '@cellix/domain-seedwork'; + +export interface ReservationRequestAcceptedEventProps { + reservationRequestId: string; + listingId: string; + sharerId: string; + reserverId: string; + acceptedAt: Date; +} + +export class ReservationRequestAcceptedEvent extends DomainSeedwork.CustomDomainEventImpl {} diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.aggregate.feature b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.aggregate.feature index 30ebc9c6a..a766b65df 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.aggregate.feature +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.aggregate.feature @@ -22,21 +22,21 @@ Feature: Reservation Request Aggregate Given a reservation request in REQUESTED state When the reservation is cancelled Then the reservation request should be in the CANCELLED state - And close flags should remain false + And closeRequestedBy should remain null Scenario: Close a reservation request by sharer Given a reservation request in ACCEPTED state and close requested by sharer When the reservation is closed Then the reservation request should be in the CLOSED state - And closeRequestedBySharer should be true + And closeRequestedBy should be "SHARER" Scenario: Close a reservation request by reserver Given a reservation request in ACCEPTED state and close requested by reserver When the reservation is closed Then the reservation request should be in the CLOSED state - And closeRequestedByReserver should be true + And closeRequestedBy should be "RESERVER" Scenario: Request close by reserver Given a reservation request in ACCEPTED state When the reserver requests to close - Then closeRequestedByReserver should be true + Then closeRequestedBy should be "RESERVER" diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.entity.feature b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.entity.feature index c5872f1cc..b3d60ce81 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.entity.feature +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.entity.feature @@ -39,6 +39,6 @@ Scenario: Reservation request loadReserver should return a promise When I call the loadReserver method Then it should return a reserver reference -Scenario: Reservation request close flags should be booleans - When I access the close request flags - Then they should be booleans +Scenario: Reservation request closeRequestedBy should be nullable + When I access the close request field + Then it should be null by default diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.feature b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.feature index d2e100aed..78efa0de6 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.feature +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/features/reservation-request.feature @@ -56,10 +56,9 @@ Feature: ReservationRequest When I try to set state to "CANCELLED" Then a PermissionError should be thrown - Scenario: Closing an accepted reservation when both parties requested close + Scenario: Closing an accepted reservation when reserver requested close Given a ReservationRequest aggregate with state "ACCEPTED" - And closeRequestedBySharer is true - And closeRequestedByReserver is true + And closeRequestedBy is "RESERVER" When I set state to "CLOSED" Then the reservation request's state should be "CLOSED" @@ -70,12 +69,12 @@ Feature: ReservationRequest Scenario: Requesting close without permission Given a ReservationRequest aggregate with state "ACCEPTED" - When I try to set closeRequestedBySharer to true + When I try to set closeRequestedBy to "SHARER" Then a PermissionError should be thrown Scenario: Requesting close in invalid state Given a ReservationRequest aggregate with state "REQUESTED" - When I try to set closeRequestedByReserver to true + When I try to set closeRequestedBy to "RESERVER" Then an error should be thrown indicating "Cannot close reservation in current state" Scenario: Loading linked entities @@ -153,7 +152,7 @@ Feature: ReservationRequest Scenario: Closing with only sharer request Given a ReservationRequest aggregate with state "ACCEPTED" - And closeRequestedBySharer is true + And closeRequestedBy is "SHARER" When I set state to "CLOSED" Then the reservation request's state should be "CLOSED" diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/index.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/index.ts index 03568b053..d769c0ac3 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/index.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/index.ts @@ -3,5 +3,12 @@ export type { ReservationRequestProps, ReservationRequestEntityReference, } from './reservation-request.entity.ts'; +export { + ReservationRequestCloseRequestedByTypes, + ReservationRequestCloseRequestedByValue, +} from './reservation-request.value-objects.ts'; +export type { ReservationRequestCloseRequestedBy } from './reservation-request.value-objects.ts'; export type { ReservationRequestRepository } from './reservation-request.repository.ts'; export type { ReservationRequestUnitOfWork } from './reservation-request.uow.ts'; +export { ReservationRequestAcceptedEvent } from './events/reservation-request-accepted.event.ts'; +export type { ReservationRequestAcceptedEventProps } from './events/reservation-request-accepted.event.ts'; diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.aggregate.test.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.aggregate.test.ts index 4bdcfb290..b909671fc 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.aggregate.test.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.aggregate.test.ts @@ -142,8 +142,7 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { reserver, reservationPeriodStart: startDate, reservationPeriodEnd: endDate, - closeRequestedBySharer: overrides.closeRequestedBySharer ?? false, - closeRequestedByReserver: overrides.closeRequestedByReserver ?? false, + closeRequestedBy: overrides.closeRequestedBy ?? null, loadListing: async () => listing, loadReserver: async () => reserver, ...overrides, @@ -267,9 +266,8 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { new ReservationRequestStateValue(ReservationRequestStates.CANCELLED).valueOf() ); }); - And('close flags should remain false', () => { - expect(reservation.closeRequestedByReserver).toBe(false); - expect(reservation.closeRequestedBySharer).toBe(false); + And('closeRequestedBy should remain null', () => { + expect(reservation.closeRequestedBy).toBe(null); }); }); @@ -278,7 +276,7 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { listing = createMockListing(); reserver = createMockPersonalUser(); ({ startDate, endDate } = getFutureDates()); - props = createMockProps({ listing, reserver, reservationPeriodStart: startDate, reservationPeriodEnd: endDate, closeRequestedBySharer: true }); + props = createMockProps({ listing, reserver, reservationPeriodStart: startDate, reservationPeriodEnd: endDate, closeRequestedBy: 'SHARER' }); reservation = ReservationRequest.getNewInstance( props, props.state, @@ -298,8 +296,8 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { new ReservationRequestStateValue(ReservationRequestStates.CLOSED).valueOf() ); }); - And('closeRequestedBySharer should be true', () => { - expect(reservation.closeRequestedBySharer).toBe(true); + And('closeRequestedBy should be "SHARER"', () => { + expect(reservation.closeRequestedBy).toBe('SHARER'); }); }); @@ -308,7 +306,7 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { listing = createMockListing(); reserver = createMockPersonalUser(); ({ startDate, endDate } = getFutureDates()); - props = createMockProps({ listing, reserver, reservationPeriodStart: startDate, reservationPeriodEnd: endDate, closeRequestedByReserver: true }); + props = createMockProps({ listing, reserver, reservationPeriodStart: startDate, reservationPeriodEnd: endDate, closeRequestedBy: 'RESERVER' }); reservation = ReservationRequest.getNewInstance( props, props.state, @@ -328,8 +326,8 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { new ReservationRequestStateValue(ReservationRequestStates.CLOSED).valueOf() ); }); - And('closeRequestedByReserver should be true', () => { - expect(reservation.closeRequestedByReserver).toBe(true); + And('closeRequestedBy should be "RESERVER"', () => { + expect(reservation.closeRequestedBy).toBe('RESERVER'); }); }); @@ -351,10 +349,10 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { reservation.state = ReservationRequestStates.ACCEPTED; }); When('the reserver requests to close', () => { - reservation.closeRequestedByReserver = true; + reservation.closeRequestedBy = 'RESERVER'; }); - Then('closeRequestedByReserver should be true', () => { - expect(reservation.closeRequestedByReserver).toBe(true); + Then('closeRequestedBy should be "RESERVER"', () => { + expect(reservation.closeRequestedBy).toBe('RESERVER'); }); }); }); diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.test.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.test.ts index 1b6e95378..860d08971 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.test.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.test.ts @@ -24,8 +24,7 @@ function makeReservationRequestProps(overrides?: Partial ({ id: 'test-listing-id' }), reserver: { id: 'test-reserver-id' }, loadReserver: async () => ({ id: 'test-reserver-id' }), - closeRequestedBySharer: false, - closeRequestedByReserver: false, + closeRequestedBy: null, ...overrides, }; } @@ -163,18 +162,15 @@ test.for(feature, ({ Background, Scenario }) => { }); }); - Scenario('Reservation request close flags should be booleans', ({ When, Then }) => { + Scenario('Reservation request closeRequestedBy should be nullable', ({ When, Then }) => { - When('I access the close request flags', () => { + When('I access the close request field', () => { // Access the properties }); - Then('they should be booleans', () => { + Then('it should be null by default', () => { const reservationProps: ReservationRequestProps = props; - expect(typeof reservationProps.closeRequestedBySharer).toBe('boolean'); - expect(typeof reservationProps.closeRequestedByReserver).toBe('boolean'); - expect(reservationProps.closeRequestedBySharer).toBe(false); - expect(reservationProps.closeRequestedByReserver).toBe(false); + expect(reservationProps.closeRequestedBy).toBe(null); }); }); }); diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.ts index 6fdc56b34..3bd7d12b8 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.entity.ts @@ -1,6 +1,7 @@ import type { DomainSeedwork } from '@cellix/domain-seedwork'; import type { ItemListingEntityReference } from '../../listing/item/item-listing.entity.ts'; import type { UserEntityReference } from '../../user/index.ts'; +import type { ReservationRequestCloseRequestedBy } from './reservation-request.value-objects.ts'; export interface ReservationRequestProps extends DomainSeedwork.DomainEntityProps { @@ -14,8 +15,7 @@ export interface ReservationRequestProps loadListing(): Promise; reserver: Readonly; loadReserver(): Promise; - closeRequestedBySharer: boolean; - closeRequestedByReserver: boolean; + closeRequestedBy: ReservationRequestCloseRequestedBy | null; } export interface ReservationRequestEntityReference diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.repository.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.repository.ts index 217c82f09..5cfd71e5a 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.repository.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.repository.ts @@ -17,4 +17,10 @@ export interface ReservationRequestRepository< getById(id: string): Promise | undefined>; getByReserverId(reserverId: string): Promise[]>; getByListingId(listingId: string): Promise[]>; + queryOverlapByListingIdAndReservationPeriod( + listingId: string, + reservationPeriodStart: Date, + reservationPeriodEnd: Date, + excludeState: string, + ): Promise[]>; } diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.test.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.test.ts index 82dc7e3f3..f2ae07514 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.test.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.test.ts @@ -101,8 +101,7 @@ function makeBaseProps( loadListing: async () => makeListing(), reserver: makeUser(), loadReserver: async () => makeUser(), - closeRequestedBySharer: false, - closeRequestedByReserver: false, + closeRequestedBy: null, ...overrides, }; } @@ -436,7 +435,7 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { ); Scenario( - 'Closing an accepted reservation when both parties requested close', + 'Closing an accepted reservation when reserver requested close', ({ Given, And, When, Then }) => { Given('a ReservationRequest aggregate with state "ACCEPTED"', () => { aggregate = ReservationRequest.getNewInstance( @@ -450,11 +449,8 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { ); aggregate.state = toStateEnum('ACCEPTED'); }); - And('closeRequestedBySharer is true', () => { - aggregate.closeRequestedBySharer = true; - }); - And('closeRequestedByReserver is true', () => { - aggregate.closeRequestedByReserver = true; + And('closeRequestedBy is "RESERVER"', () => { + aggregate.closeRequestedBy = 'RESERVER'; }); When('I set state to "CLOSED"', () => { aggregate.state = toStateEnum('CLOSED'); @@ -511,9 +507,9 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { ); aggregate.state = toStateEnum('ACCEPTED'); }); - When('I try to set closeRequestedBySharer to true', () => { + When('I try to set closeRequestedBy to "SHARER"', () => { act = () => { - aggregate.closeRequestedBySharer = true; + aggregate.closeRequestedBy = 'SHARER'; }; }); Then('a PermissionError should be thrown', () => { @@ -534,9 +530,9 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { makePassport({ canCloseRequest: true }), ); }); - When('I try to set closeRequestedByReserver to true', () => { + When('I try to set closeRequestedBy to "RESERVER"', () => { act = () => { - aggregate.closeRequestedByReserver = true; + aggregate.closeRequestedBy = 'RESERVER'; }; }); Then( @@ -974,8 +970,8 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { ); aggregate.state = toStateEnum('ACCEPTED'); }); - And('closeRequestedBySharer is true', () => { - aggregate.closeRequestedBySharer = true; + And('closeRequestedBy is "SHARER"', () => { + aggregate.closeRequestedBy = 'SHARER'; }); When('I set state to "CLOSED"', () => { aggregate.state = toStateEnum('CLOSED'); diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.ts index 1502ff499..07665f3f0 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.ts @@ -1,6 +1,7 @@ import { DomainSeedwork } from '@cellix/domain-seedwork'; import type { Passport } from '../../passport.ts'; import type { ReservationRequestVisa } from '../reservation-request.visa.ts'; +import { ReservationRequestAcceptedEvent } from './events/reservation-request-accepted.event.ts'; import { ReservationRequestStates } from './reservation-request.value-objects.ts'; import * as ValueObjects from './reservation-request.value-objects.ts'; import type { ItemListingEntityReference } from '../../listing/item/item-listing.entity.ts'; @@ -199,10 +200,12 @@ export class ReservationRequest this.props.reserver = value; } - get closeRequestedBySharer(): boolean { - return this.props.closeRequestedBySharer; + get closeRequestedBy(): ValueObjects.ReservationRequestCloseRequestedBy | null { + return this.props.closeRequestedBy; } - set closeRequestedBySharer(value: boolean) { + set closeRequestedBy( + value: ValueObjects.ReservationRequestCloseRequestedBy | null, + ) { if ( !this.visa.determineIf( (domainPermissions) => domainPermissions.canCloseRequest, @@ -217,28 +220,13 @@ export class ReservationRequest throw new Error('Cannot close reservation in current state'); } - this.props.closeRequestedBySharer = value; - } - - get closeRequestedByReserver(): boolean { - return this.props.closeRequestedByReserver; - } - set closeRequestedByReserver(value: boolean) { - if ( - !this.visa.determineIf( - (domainPermissions) => domainPermissions.canCloseRequest, - ) - ) { - throw new DomainSeedwork.PermissionError( - 'You do not have permission to request close for this reservation request', - ); - } - - if (this.props.state.valueOf() !== ReservationRequestStates.ACCEPTED) { - throw new Error('Cannot close reservation in current state'); + if (value === null) { + this.props.closeRequestedBy = null; + return; } - this.props.closeRequestedByReserver = value; + this.props.closeRequestedBy = + new ValueObjects.ReservationRequestCloseRequestedByValue(value).valueOf() as ValueObjects.ReservationRequestCloseRequestedBy; } //#endregion Properties @@ -266,9 +254,19 @@ export class ReservationRequest throw new Error('Can only accept requested reservations'); } + const now = new Date(); this.props.state = new ValueObjects.ReservationRequestStateValue( ReservationRequestStates.ACCEPTED, ).valueOf(); + + // Emit domain event for automatic conversation creation + this.addDomainEvent(ReservationRequestAcceptedEvent, { + reservationRequestId: this.id, + listingId: this.props.listing.id, + sharerId: this.props.listing.sharer.id, + reserverId: this.props.reserver.id, + acceptedAt: now, + }); } private reject(): void { @@ -329,11 +327,7 @@ export class ReservationRequest throw new Error('Can only close accepted reservations'); } - if ( - !( - this.props.closeRequestedBySharer || this.props.closeRequestedByReserver - ) - ) { + if (this.props.closeRequestedBy === null) { throw new Error( 'Can only close reservation requests if at least one user requested it', ); diff --git a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.value-objects.ts b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.value-objects.ts index a9d332c63..29dce3c39 100644 --- a/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.value-objects.ts +++ b/packages/sthrift/domain/src/domain/contexts/reservation-request/reservation-request/reservation-request.value-objects.ts @@ -27,3 +27,28 @@ export class ReservationRequestStateValue extends ReservationRequestStateBase { super(value); } } + +export const ReservationRequestCloseRequestedByTypes = { + SHARER: 'SHARER', + RESERVER: 'RESERVER', +} as const; + +export type ReservationRequestCloseRequestedBy = + (typeof ReservationRequestCloseRequestedByTypes)[keyof typeof ReservationRequestCloseRequestedByTypes]; + +const ReservationRequestCloseRequestedByBase = VOString({ trim: true }); + +export class ReservationRequestCloseRequestedByValue extends ReservationRequestCloseRequestedByBase { + constructor(value: string) { + if ( + !Object.values(ReservationRequestCloseRequestedByTypes).includes( + value as ReservationRequestCloseRequestedBy, + ) + ) { + throw new Error( + `Invalid closeRequestedBy: ${value}. Allowed: ${Object.values(ReservationRequestCloseRequestedByTypes).join(', ')}`, + ); + } + super(value); + } +} diff --git a/packages/sthrift/event-handler/src/handlers/domain/index.ts b/packages/sthrift/event-handler/src/handlers/domain/index.ts index 134f339f0..1b87b2603 100644 --- a/packages/sthrift/event-handler/src/handlers/domain/index.ts +++ b/packages/sthrift/event-handler/src/handlers/domain/index.ts @@ -1,8 +1,7 @@ import type { DomainDataSource } from '@sthrift/domain'; export const RegisterDomainEventHandlers = ( - _domainDataSource: DomainDataSource + _domainDataSource: DomainDataSource, ): void => { - /* Register domain event handlers */ + /* Register domain event handlers */ }; - diff --git a/packages/sthrift/event-handler/src/handlers/index.ts b/packages/sthrift/event-handler/src/handlers/index.ts index 08253a3c6..bd06a87ad 100644 --- a/packages/sthrift/event-handler/src/handlers/index.ts +++ b/packages/sthrift/event-handler/src/handlers/index.ts @@ -1,10 +1,8 @@ -import type { DomainDataSource } from "@sthrift/domain"; -import { RegisterDomainEventHandlers } from "./domain/index.ts"; -import { RegisterIntegrationEventHandlers } from "./integration/index.ts"; +import type { DomainDataSource } from '@sthrift/domain'; +import { RegisterDomainEventHandlers } from './domain/index.ts'; +import { RegisterIntegrationEventHandlers } from './integration/index.ts'; -export const RegisterEventHandlers = ( - domainDataSource: DomainDataSource -) => { - RegisterDomainEventHandlers(domainDataSource); - RegisterIntegrationEventHandlers(domainDataSource); -} \ No newline at end of file +export const RegisterEventHandlers = (domainDataSource: DomainDataSource) => { + RegisterDomainEventHandlers(domainDataSource); + RegisterIntegrationEventHandlers(domainDataSource); +}; diff --git a/packages/sthrift/graphql/src/helpers/tracing.test.ts b/packages/sthrift/graphql/src/helpers/tracing.test.ts index f063e022b..d8bac9ba1 100644 --- a/packages/sthrift/graphql/src/helpers/tracing.test.ts +++ b/packages/sthrift/graphql/src/helpers/tracing.test.ts @@ -45,12 +45,15 @@ vi.mock('@opentelemetry/api', async (importOriginal) => { spanName: string, fn: (span: Span) => Promise, ): Promise => { - const mockSpan = createMockSpan(); - // Store references for assertions - (global as Record)['__mockSpan'] = mockSpan; - (global as Record)['__mockTracerName'] = tracerName; - (global as Record)['__mockSpanName'] = spanName; - return fn(mockSpan); + const mockSpan = createMockSpan(); + // Store references for assertions + // biome-ignore lint/complexity/useLiteralKeys: TypeScript requires bracket notation for index signatures + (global as Record)['__mockSpan'] = mockSpan; + // biome-ignore lint/complexity/useLiteralKeys: TypeScript requires bracket notation for index signatures + (global as Record)['__mockTracerName'] = tracerName; + // biome-ignore lint/complexity/useLiteralKeys: TypeScript requires bracket notation for index signatures + (global as Record)['__mockSpanName'] = spanName; + return fn(mockSpan); }, ), })), diff --git a/packages/sthrift/graphql/src/init/handler.test.ts b/packages/sthrift/graphql/src/init/handler.test.ts index ea322914f..97f342dca 100644 --- a/packages/sthrift/graphql/src/init/handler.test.ts +++ b/packages/sthrift/graphql/src/init/handler.test.ts @@ -88,9 +88,7 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { expect(ApolloServer).toHaveBeenCalledWith({ schema: {}, introspection: true, - validationRules: expect.arrayContaining([ - expect.any(Function), // depthLimit function - ]), + validationRules: expect.any(Array), allowBatchedHttpRequests: true, }); }, @@ -255,6 +253,7 @@ test.for(feature, ({ Scenario, BeforeEachScenario }) => { Then('it should configure depth limit validation rule', () => { const apolloConfig = getApolloConfig(); expect(apolloConfig.validationRules).toBeDefined(); + expect(apolloConfig.validationRules).toBeInstanceOf(Array); expect(apolloConfig.validationRules.length).toBeGreaterThan(0); }); diff --git a/packages/sthrift/graphql/src/init/handler.ts b/packages/sthrift/graphql/src/init/handler.ts index 67c7660a1..3522511aa 100644 --- a/packages/sthrift/graphql/src/init/handler.ts +++ b/packages/sthrift/graphql/src/init/handler.ts @@ -10,7 +10,7 @@ import type { GraphContext } from './context.ts'; import { combinedSchema } from '../schema/builder/schema-builder.ts'; import { applyMiddleware } from 'graphql-middleware'; import depthLimit from 'graphql-depth-limit'; - + // biome-ignore lint/complexity/useLiteralKeys: NODE_ENV is a standard environment variable const isProduction = process.env['NODE_ENV'] === 'production'; const MAX_QUERY_DEPTH = 10; diff --git a/packages/sthrift/graphql/src/schema/resolver-helper.feature b/packages/sthrift/graphql/src/schema/resolver-helper.feature index 6f3efffe1..8dd4fef17 100644 --- a/packages/sthrift/graphql/src/schema/resolver-helper.feature +++ b/packages/sthrift/graphql/src/schema/resolver-helper.feature @@ -45,6 +45,11 @@ Feature: GraphQL Resolver Helper Functions When PopulateUserFromField resolver is called Then it should return the original field value + Scenario: PopulateUserFromField returns original object when lookups fail + Given both AdminUser and PersonalUser lookups return null + When PopulateUserFromField resolver is called + Then it should fall back to the original field object + Scenario: PopulateItemListingFromField resolves listing by ID Given a parent object with a valid listing ID field When PopulateItemListingFromField resolver is called @@ -55,6 +60,11 @@ Feature: GraphQL Resolver Helper Functions When PopulateItemListingFromField resolver is called Then it should return the original field value + Scenario: PopulateItemListingFromField skips lookup for non-ObjectId shapes + Given listingId has an id field that is not a valid ObjectId + When PopulateItemListingFromField resolver is called + Then it should return the original listing object without querying + Scenario: getRequestedFieldPaths extracts field paths from selection Given a GraphQL resolve info with field selections When getRequestedFieldPaths is called diff --git a/packages/sthrift/graphql/src/schema/resolver-helper.test.ts b/packages/sthrift/graphql/src/schema/resolver-helper.test.ts index 955d355c2..885fb9881 100644 --- a/packages/sthrift/graphql/src/schema/resolver-helper.test.ts +++ b/packages/sthrift/graphql/src/schema/resolver-helper.test.ts @@ -252,11 +252,11 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { Scenario( 'PopulateUserFromField returns field value for invalid ID', ({ Given, When, Then }) => { - const parent = { userId: 'invalid-id' }; + const parent = { userId: { id: 'invalid-id' } }; Given('a parent object with an invalid user ID', () => { - // Invalid ObjectId - expect(parent.userId).toBe('invalid-id'); + // Invalid ObjectId shape but still includes id field + expect(parent.userId.id).toBe('invalid-id'); }); When('PopulateUserFromField resolver is called', async () => { @@ -265,11 +265,44 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { }); Then('it should return the original field value', () => { - expect(result).toBe('invalid-id'); + expect(result).toBe(parent.userId); }); }, ); + Scenario( + 'PopulateUserFromField returns original object when lookups fail', + ({ Given, When, Then }) => { + const parent = { + userId: { id: '507f1f77bcf86cd799439099', name: 'Cached User' }, + }; + + Given('both AdminUser and PersonalUser lookups return null', () => { + vi.mocked( + mockContext.applicationServices.User.AdminUser.queryById, + ).mockResolvedValue(null); + vi.mocked( + mockContext.applicationServices.User.PersonalUser.queryById, + ).mockResolvedValue(null); + }); + + When('PopulateUserFromField resolver is called', async () => { + const resolver = PopulateUserFromField('userId'); + result = await resolver(parent, {}, mockContext); + }); + + Then('it should fall back to the original field object', () => { + expect(result).toBe(parent.userId); + expect( + mockContext.applicationServices.User.AdminUser.queryById, + ).toHaveBeenCalledWith({ id: '507f1f77bcf86cd799439099' }); + expect( + mockContext.applicationServices.User.PersonalUser.queryById, + ).toHaveBeenCalledWith({ id: '507f1f77bcf86cd799439099' }); + }); + }, + ); + Scenario( 'PopulateItemListingFromField resolves listing by ID', ({ Given, When, Then }) => { @@ -312,6 +345,29 @@ test.for(feature, ({ Background, Scenario, BeforeEachScenario }) => { }, ); + Scenario( + 'PopulateItemListingFromField skips lookup for non-ObjectId shapes', + ({ Given, When, Then }) => { + const parent = { listingId: { id: 'not-a-valid-object-id', title: 'Cached' } }; + + Given('listingId has an id field that is not a valid ObjectId', () => { + expect(parent.listingId.id).toBe('not-a-valid-object-id'); + }); + + When('PopulateItemListingFromField resolver is called', async () => { + const resolver = PopulateItemListingFromField('listingId'); + result = await resolver(parent, {}, mockContext); + }); + + Then('it should return the original listing object without querying', () => { + expect(result).toBe(parent.listingId); + expect( + mockContext.applicationServices.Listing.ItemListing.queryById, + ).not.toHaveBeenCalled(); + }); + }, + ); + Scenario( 'getRequestedFieldPaths extracts field paths from selection', ({ Given, When, Then }) => { diff --git a/packages/sthrift/graphql/src/schema/types/reservation-request/features/reservation-request.resolvers.feature b/packages/sthrift/graphql/src/schema/types/reservation-request/features/reservation-request.resolvers.feature index 68ddb228e..23aebbc45 100644 --- a/packages/sthrift/graphql/src/schema/types/reservation-request/features/reservation-request.resolvers.feature +++ b/packages/sthrift/graphql/src/schema/types/reservation-request/features/reservation-request.resolvers.feature @@ -39,30 +39,24 @@ So that I can view my reservations and make new ones through the GraphQL API Then it should propagate the error message Scenario: Querying reservation requests for listings owned by sharer - Given a valid sharerId - And valid pagination arguments (page, pageSize) + Given a valid sharerId and reservation requests When the myListingsRequests query is executed - Then it should call ReservationRequest.queryListingRequestsBySharerId with the provided sharerId - And it should paginate and map the results using paginateAndFilterListingRequests - And it should return items, total, page, and pageSize + Then it should return raw domain objects without UI transformation - Scenario: Filtering myListingsRequests by search text + Scenario: Returning all reservation requests without filtering Given reservation requests for a sharer - And a searchText "camera" When the myListingsRequests query is executed - Then only listings whose titles include "camera" should be returned + Then all reservation requests should be returned - Scenario: Filtering myListingsRequests by status - Given reservation requests with mixed statuses ["Pending", "Approved"] - And a statusFilters ["Approved"] + Scenario: Returning mixed status reservation requests + Given reservation requests with mixed statuses When the myListingsRequests query is executed - Then only requests with status "Approved" should be included + Then all requests should be returned with their domain state - Scenario: Sorting myListingsRequests by requestedOn descending + Scenario: Returning reservation requests with different timestamps Given reservation requests with varying createdAt timestamps - And sorter field "requestedOn" with order "descend" When the myListingsRequests query is executed - Then results should be sorted by requestedOn in descending order + Then all requests should be returned in their original order Scenario: Error while querying myListingsRequests Given ReservationRequest.queryListingRequestsBySharerId throws an error @@ -126,19 +120,29 @@ So that I can view my reservations and make new ones through the GraphQL API When the createReservationRequest mutation is executed Then it should propagate the error message - Scenario: Mapping listing request fields - Given a ListingRequestDomainShape object with title, state, and reserver username - When paginateAndFilterListingRequests is called - Then it should map title, requestedBy, requestedOn, reservationPeriod, and status into ListingRequestUiShape - And missing fields should default to 'Unknown', '@unknown', or 'Pending' as appropriate + Scenario: Returning domain reservation request objects + Given a reservation request with complete domain properties + When the myListingsRequests query is executed + Then it should return domain objects with all properties - Scenario: Paginating listing requests - Given 25 listing requests and a pageSize of 10 - When paginateAndFilterListingRequests is called for page 2 - Then it should return 10 items starting from index 10 and total 25 + Scenario: Returning all listing requests + Given 25 listing requests + When the myListingsRequests query is executed + Then it should return all 25 requests - Scenario: Sorting listing requests by title ascending + Scenario: Returning listing requests with different titles Given multiple listing requests with varying titles - And sorter field "title" with order "ascend" - When paginateAndFilterListingRequests is called - Then the results should be sorted alphabetically by title \ No newline at end of file + When the myListingsRequests query is executed + Then all requests should be returned in their original order + + Scenario: Accepting a reservation request successfully + Given a verified user with a valid verifiedJwt containing email + And a valid reservation request id + When the acceptReservationRequest mutation is executed + Then it should call ReservationRequest.update with id and state "Accepted" + And it should return the accepted reservation request + + Scenario: Accepting a reservation request without authentication + Given a user without a verifiedJwt in their context + When the acceptReservationRequest mutation is executed + Then it should throw a "User must be authenticated to accept a reservation request" error \ No newline at end of file diff --git a/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.graphql b/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.graphql index 5a5ed3646..18cad6b53 100644 --- a/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.graphql +++ b/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.graphql @@ -22,14 +22,7 @@ enum ReservationRequestState { extend type Query { myActiveReservations(userId: ObjectID!): [ReservationRequest!]! myPastReservations(userId: ObjectID!): [ReservationRequest!]! - myListingsRequests( - page: Int! - pageSize: Int! - searchText: String! - statusFilters: [String!]! - sorter: SorterInput! - sharerId: ObjectID! - ): ListingRequestPage! + myListingsRequests(sharerId: ObjectID!): [ReservationRequest!]! myActiveReservationForListing( listingId: ObjectID! userId: ObjectID! @@ -46,6 +39,9 @@ extend type Mutation { createReservationRequest( input: CreateReservationRequestInput! ): ReservationRequest! + acceptReservationRequest( + input: AcceptReservationRequestInput! + ): ReservationRequest! cancelReservation(input: CancelReservationInput!): ReservationRequest! closeReservation(input: CloseReservationInput!): ReservationRequest! } @@ -61,6 +57,10 @@ input CreateReservationRequestInput { reservationPeriodEnd: DateTime! } +input AcceptReservationRequestInput { + id: ObjectID! +} + input CancelReservationInput { id: ObjectID! } diff --git a/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.test.ts b/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.test.ts index 4a20f5c4f..159fd54e0 100644 --- a/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.test.ts +++ b/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.test.ts @@ -55,8 +55,7 @@ function createMockReservationRequest( } as PersonalUserEntity, loadListing: vi.fn(), loadReserver: vi.fn(), - closeRequestedBySharer: false, - closeRequestedByReserver: false, + closeRequestedBy: null, ...overrides, }; return baseRequest; @@ -275,12 +274,10 @@ test.for(feature, ({ Scenario }) => { Scenario( 'Querying reservation requests for listings owned by sharer', - ({ Given, And, When, Then }) => { + ({ Given, When, Then }) => { const sharerId = 'sharer-123'; - Given('a valid sharerId', () => { + Given('a valid sharerId and reservation requests', () => { context = makeMockGraphContext(); - }); - And('valid pagination arguments (page, pageSize)', () => { const mockRequests = [ createMockReservationRequest({ id: '1', @@ -303,43 +300,31 @@ test.for(feature, ({ Scenario }) => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as TestResolver<{ sharerId: string; - page: number; - pageSize: number; }>; result = await resolver( {}, - { sharerId, page: 1, pageSize: 10 }, + { sharerId }, context, {} as never, ); }); Then( - 'it should call ReservationRequest.queryListingRequestsBySharerId with the provided sharerId', - () => { - expect( - context.applicationServices.ReservationRequest.ReservationRequest - .queryListingRequestsBySharerId, - ).toHaveBeenCalledWith({ sharerId }); - }, - ); - And( - 'it should paginate and map the results using paginateAndFilterListingRequests', + 'it should return raw domain objects without UI transformation', () => { expect(result).toBeDefined(); + expect(Array.isArray(result)).toBe(true); + const requests = result as ReservationRequestEntity[]; + expect(requests).toHaveLength(1); + expect(requests[0]?.id).toBe('1'); + expect(requests[0]?.state).toBe('Requested'); }, ); - And('it should return items, total, page, and pageSize', () => { - expect(result).toHaveProperty('items'); - expect(result).toHaveProperty('total'); - expect(result).toHaveProperty('page'); - expect(result).toHaveProperty('pageSize'); - }); }, ); Scenario( - 'Filtering myListingsRequests by search text', - ({ Given, And, When, Then }) => { + 'Returning all reservation requests without filtering', + ({ Given, When, Then }) => { Given('reservation requests for a sharer', () => { context = makeMockGraphContext(); const mockRequests = [ @@ -363,45 +348,37 @@ test.for(feature, ({ Scenario }) => { .queryListingRequestsBySharerId, ).mockResolvedValue(mockRequests); }); - And('a searchText "camera"', () => { - // Searchtext will be used in the When step - }); When('the myListingsRequests query is executed', async () => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as TestResolver<{ sharerId: string; - page: number; - pageSize: number; - searchText: string; }>; result = await resolver( {}, { sharerId: 'sharer-123', - page: 1, - pageSize: 10, - searchText: 'camera', }, context, {} as never, ); }); Then( - 'only listings whose titles include "camera" should be returned', + 'all reservation requests should be returned', () => { - const items = (result as { items: { title: string }[] }).items; - expect(items).toHaveLength(1); - expect(items[0]?.title).toBe('Camera'); + const requests = result as ReservationRequestEntity[]; + expect(requests).toHaveLength(2); + expect(requests[0]?.listing?.title).toBe('Camera'); + expect(requests[1]?.listing?.title).toBe('Drone'); }, ); }, ); Scenario( - 'Filtering myListingsRequests by status', - ({ Given, And, When, Then }) => { + 'Returning mixed status reservation requests', + ({ Given, When, Then }) => { Given( - 'reservation requests with mixed statuses ["Pending", "Approved"]', + 'reservation requests with mixed statuses', () => { context = makeMockGraphContext(); const mockRequests = [ @@ -430,33 +407,25 @@ test.for(feature, ({ Scenario }) => { ).mockResolvedValue(mockRequests); }, ); - And('a statusFilters ["Approved"]', () => { - // Status filters will be used in the When step - }); When('the myListingsRequests query is executed', async () => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as unknown as TestResolver<{ sharerId: string; - page: number; - pageSize: number; - statusFilters: string[]; }>; result = await resolver( {}, { sharerId: 'sharer-123', - page: 1, - pageSize: 10, - statusFilters: ['Accepted'], }, context, {} as never, ); }); - Then('only requests with status "Approved" should be included', () => { - const items = (result as { items: { status: string }[] }).items; - expect(items).toHaveLength(1); - expect(items[0]?.status).toBe('Accepted'); + Then('all requests should be returned with their domain state', () => { + const requests = result as ReservationRequestEntity[]; + expect(requests).toHaveLength(2); + expect(requests[0]?.state).toBe('Accepted'); + expect(requests[1]?.state).toBe('Requested'); }); }, ); @@ -807,8 +776,8 @@ test.for(feature, ({ Scenario }) => { ); Scenario( - 'Sorting myListingsRequests by requestedOn descending', - ({ Given, And, When, Then }) => { + 'Returning reservation requests with different timestamps', + ({ Given, When, Then }) => { Given('reservation requests with varying createdAt timestamps', () => { context = makeMockGraphContext(); const mockRequests = [ @@ -839,37 +808,28 @@ test.for(feature, ({ Scenario }) => { .queryListingRequestsBySharerId, ).mockResolvedValue(mockRequests); }); - And('sorter field "requestedOn" with order "descend"', () => { - // Sorter will be used in the When step - }); When('the myListingsRequests query is executed', async () => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as TestResolver<{ sharerId: string; - page: number; - pageSize: number; - sorter?: { field: string; order: 'ascend' | 'descend' }; }>; result = await resolver( {}, { sharerId: 'sharer-123', - page: 1, - pageSize: 10, - sorter: { field: 'requestedOn', order: 'descend' }, }, context, {} as never, ); }); Then( - 'results should be sorted by requestedOn in descending order', + 'all requests should be returned in their original order', () => { - const items = (result as { items: { requestedOn: string }[] }).items; - expect(items.length).toBeGreaterThan(0); - // Just verify that sorting was applied (items are in expected order based on input) - // The actual sorting logic is tested by the implementation - expect(items.length).toBe(3); + const requests = result as ReservationRequestEntity[]; + expect(requests).toHaveLength(3); + expect(requests[0]?.id).toBe('1'); + expect(requests[1]?.id).toBe('2'); + expect(requests[2]?.id).toBe('3'); }, ); }, @@ -955,11 +915,9 @@ test.for(feature, ({ Scenario }) => { }, ); - Scenario('Mapping listing request fields', ({ Given, When, Then, And }) => { - // This is tested implicitly through other scenarios that use myListingsRequests - // as they all verify the mapping occurs correctly + Scenario('Returning domain reservation request objects', ({ Given, When, Then }) => { Given( - 'a ListingRequestDomainShape object with title, state, and reserver username', + 'a reservation request with complete domain properties', () => { context = makeMockGraphContext(); const mockRequests = [ @@ -981,63 +939,35 @@ test.for(feature, ({ Scenario }) => { ).mockResolvedValue(mockRequests); }, ); - When('paginateAndFilterListingRequests is called', async () => { + When('the myListingsRequests query is executed', async () => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as TestResolver<{ sharerId: string; - page: number; - pageSize: number; }>; result = await resolver( {}, - { sharerId: 'sharer-123', page: 1, pageSize: 10 }, + { sharerId: 'sharer-123' }, context, {} as never, ); }); Then( - 'it should map title, requestedBy, requestedOn, reservationPeriod, and status into ListingRequestUiShape', - () => { - const items = ( - result as { - items: { - title: string; - requestedBy: string; - requestedOn: string; - reservationPeriod: string; - status: string; - }[]; - } - ).items; - expect(items[0]).toHaveProperty('title'); - expect(items[0]).toHaveProperty('requestedBy'); - expect(items[0]).toHaveProperty('requestedOn'); - expect(items[0]).toHaveProperty('reservationPeriod'); - expect(items[0]).toHaveProperty('status'); - }, - ); - And( - "missing fields should default to 'Unknown', '@unknown', or 'Pending' as appropriate", + 'it should return domain objects with all properties', () => { - // Test with missing fields - const items = ( - result as { - items: { - title: string; - requestedBy: string; - status: string; - }[]; - } - ).items; - expect(items[0]?.title).toBe('Test Item'); - expect(items[0]?.requestedBy).toBe('@testuser'); - expect(items[0]?.status).toBe('Requested'); + const requests = result as ReservationRequestEntity[]; + expect(requests[0]).toHaveProperty('id'); + expect(requests[0]).toHaveProperty('state'); + expect(requests[0]).toHaveProperty('createdAt'); + expect(requests[0]).toHaveProperty('reservationPeriodStart'); + expect(requests[0]).toHaveProperty('reservationPeriodEnd'); + expect(requests[0]).toHaveProperty('listing'); + expect(requests[0]).toHaveProperty('reserver'); }, ); }); - Scenario('Paginating listing requests', ({ Given, When, Then }) => { - Given('25 listing requests and a pageSize of 10', () => { + Scenario('Returning all listing requests', ({ Given, When, Then }) => { + Given('25 listing requests', () => { context = makeMockGraphContext(); const mockRequests = Array.from({ length: 25 }, (_, i) => createMockReservationRequest({ @@ -1055,40 +985,30 @@ test.for(feature, ({ Scenario }) => { .queryListingRequestsBySharerId, ).mockResolvedValue(mockRequests); }); - When('paginateAndFilterListingRequests is called for page 2', async () => { + When('the myListingsRequests query is executed', async () => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as TestResolver<{ sharerId: string; - page: number; - pageSize: number; }>; result = await resolver( {}, - { sharerId: 'sharer-123', page: 2, pageSize: 10 }, + { sharerId: 'sharer-123' }, context, {} as never, ); }); Then( - 'it should return 10 items starting from index 10 and total 25', + 'it should return all 25 requests', () => { - const paginatedResult = result as { - items: unknown[]; - total: number; - page: number; - pageSize: number; - }; - expect(paginatedResult.items.length).toBe(10); - expect(paginatedResult.total).toBe(25); - expect(paginatedResult.page).toBe(2); - expect(paginatedResult.pageSize).toBe(10); + const requests = result as ReservationRequestEntity[]; + expect(requests).toHaveLength(25); }, ); }); Scenario( - 'Sorting listing requests by title ascending', - ({ Given, And, When, Then }) => { + 'Returning listing requests with different titles', + ({ Given, When, Then }) => { Given('multiple listing requests with varying titles', () => { context = makeMockGraphContext(); const mockRequests = [ @@ -1119,38 +1039,172 @@ test.for(feature, ({ Scenario }) => { .queryListingRequestsBySharerId, ).mockResolvedValue(mockRequests); }); - And('sorter field "title" with order "ascend"', () => { - // Sorter will be used in the When step - }); - When('paginateAndFilterListingRequests is called', async () => { + When('the myListingsRequests query is executed', async () => { const resolver = reservationRequestResolvers.Query ?.myListingsRequests as TestResolver<{ sharerId: string; - page: number; - pageSize: number; - sorter?: { field: string; order: 'ascend' | 'descend' }; }>; result = await resolver( {}, { sharerId: 'sharer-123', - page: 1, - pageSize: 10, - sorter: { field: 'title', order: 'ascend' }, }, context, {} as never, ); }); - Then('the results should be sorted alphabetically by title', () => { - const items = (result as { items: { title: string }[] }).items; - expect(items.length).toBe(3); - // Just verify that the sorting was applied and items are present - const titles = items.map((item) => item.title); - expect(titles).toContain('Apple Drone'); - expect(titles).toContain('Zebra Camera'); - expect(titles).toContain('Microphone Beta'); + Then('all requests should be returned in their original order', () => { + const requests = result as ReservationRequestEntity[]; + expect(requests).toHaveLength(3); + expect(requests[0]?.listing.title).toBe('Zebra Camera'); + expect(requests[1]?.listing.title).toBe('Apple Drone'); + expect(requests[2]?.listing.title).toBe('Microphone Beta'); + }); + }, + ); + + Scenario( + 'Accepting a reservation request successfully', + ({ Given, And, When, Then }) => { + const requestId = 'request-123'; + const updatedRequest = createMockReservationRequest({ + id: requestId, + state: 'Accepted', + }); + + // Mock the sharer + const mockSharer = { + id: 'user-1', + }; + + // Mock the full listing with sharer populated + const mockFullListing = { + id: 'listing-1', + title: 'Test Listing', + sharer: mockSharer, + }; + + // Mock the listing reference in the reservation request + const mockListingRef = { + id: 'listing-1', + }; + + // Mock the authenticated user + const mockAuthUser = { + id: 'user-1', + email: 'sharer@example.com', + }; + + // Mock the reservation request with listing reference + const mockRequest = { + ...createMockReservationRequest({ + id: requestId, + state: 'Requested', + }), + listing: mockListingRef, + }; + + Given( + 'a verified user with a valid verifiedJwt containing email', + () => { + context = makeMockGraphContext({ + applicationServices: { + ReservationRequest: { + ReservationRequest: { + queryById: vi.fn().mockResolvedValue(mockRequest), + update: vi.fn().mockResolvedValue(updatedRequest), + }, + }, + Listing: { + ItemListing: { + queryById: vi.fn().mockResolvedValue(mockFullListing), + }, + }, + User: { + PersonalUser: { + queryByEmail: vi.fn().mockResolvedValue(mockAuthUser), + }, + }, + verifiedUser: { + verifiedJwt: { + sub: 'user-1', + email: 'sharer@example.com', + }, + }, + } as unknown as GraphContext['applicationServices'], + }); + }, + ); + + And('a valid reservation request id', () => { + // requestId is already set + }); + + When('the acceptReservationRequest mutation is executed', async () => { + const resolver = reservationRequestResolvers.Mutation + ?.acceptReservationRequest as TestResolver<{ + input: { id: string }; + }>; + result = await resolver( + {}, + { input: { id: requestId } }, + context, + {} as never, + ); + }); + + Then( + 'it should call ReservationRequest.update with id and state "Accepted"', + () => { + expect( + context.applicationServices.ReservationRequest.ReservationRequest + .update, + ).toHaveBeenCalledWith({ + id: requestId, + state: 'Accepted', + }); + }, + ); + + And('it should return the accepted reservation request', () => { + expect(result).toEqual(updatedRequest); + expect((result as ReservationRequestEntity).state).toBe('Accepted'); }); }, ); + + Scenario( + 'Accepting a reservation request without authentication', + ({ Given, When, Then }) => { + Given('a user without a verifiedJwt in their context', () => { + context = makeMockGraphContext({ + applicationServices: { + verifiedUser: undefined, + } as unknown as GraphContext['applicationServices'], + }); + }); + + When('the acceptReservationRequest mutation is executed', async () => { + const resolver = reservationRequestResolvers.Mutation + ?.acceptReservationRequest as TestResolver<{ + input: { id: string }; + }>; + try { + await resolver({}, { input: { id: 'request-123' } }, context, {} as never); + } catch (e) { + error = e as Error; + } + }); + + Then( + 'it should throw a "User must be authenticated to accept a reservation request" error', + () => { + expect(error).toBeDefined(); + expect(error?.message).toBe( + 'User must be authenticated to accept a reservation request', + ); + }, + ); + }, + ); }); diff --git a/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.ts b/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.ts index cdd60676d..0da5f96ee 100644 --- a/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.ts +++ b/packages/sthrift/graphql/src/schema/types/reservation-request/reservation-request.resolvers.ts @@ -1,116 +1,11 @@ -import type { GraphContext } from '../../../init/context.ts'; import type { GraphQLResolveInfo } from 'graphql'; +import type { GraphContext } from '../../../init/context.ts'; import type { Resolvers } from '../../builder/generated.ts'; import { PopulateItemListingFromField, PopulateUserFromField, } from '../../resolver-helper.ts'; -interface ListingRequestDomainShape { - id: string; - state?: string; - createdAt?: Date; - reservationPeriodStart?: Date; - reservationPeriodEnd?: Date; - listing?: { title?: string; [k: string]: unknown }; - reserver?: { account?: { username?: string } }; - [k: string]: unknown; // allow passthrough -} - -interface ListingRequestUiShape { - id: string; - title: string; - image: string; - requestedBy: string; - requestedOn: string; - reservationPeriod: string; - status: string; - _raw: ListingRequestDomainShape; - [k: string]: unknown; // enable dynamic field sorting access -} - -function paginateAndFilterListingRequests( - requests: ListingRequestDomainShape[], - options: { - page: number; - pageSize: number; - searchText?: string; - statusFilters: string[]; - sorter?: { field: string | null; order: 'ascend' | 'descend' | null }; - }, -) { - const filtered = [...requests]; - - // Map domain objects into shape expected by client (flatten minimal fields) - const mapped: ListingRequestUiShape[] = filtered.map((r) => { - const start = - r.reservationPeriodStart instanceof Date - ? r.reservationPeriodStart - : undefined; - const end = - r.reservationPeriodEnd instanceof Date - ? r.reservationPeriodEnd - : undefined; - return { - id: r.id, - title: r.listing?.title ?? 'Unknown', - image: '/assets/item-images/placeholder.png', // TODO: map real image when available - requestedBy: r.reserver?.account?.username - ? `@${r.reserver.account.username}` - : '@unknown', - requestedOn: - r.createdAt instanceof Date - ? r.createdAt.toISOString() - : new Date().toISOString(), - reservationPeriod: `${start ? start.toISOString().slice(0, 10) : 'N/A'} - ${end ? end.toISOString().slice(0, 10) : 'N/A'}`, - status: r.state ?? 'Pending', - _raw: r, - }; - }); - - let working = mapped; - if (options.searchText) { - const term = options.searchText.toLowerCase(); - working = working.filter((m) => m.title.toLowerCase().includes(term)); - } - - if (options.statusFilters?.length) { - working = working.filter((m) => options.statusFilters?.includes(m.status)); - } - - if (options.sorter?.field) { - const { field, order } = options.sorter; - working.sort((a: ListingRequestUiShape, b: ListingRequestUiShape) => { - const sortField = field as keyof ListingRequestUiShape; - const A = a[sortField]; - const B = b[sortField]; - if (A == null) { - return order === 'ascend' ? -1 : 1; - } - if (B == null) { - return order === 'ascend' ? 1 : -1; - } - if (A < B) { - return order === 'ascend' ? -1 : 1; - } - if (A > B) { - return order === 'ascend' ? 1 : -1; - } - return 0; - }); - } - - const total = working.length; - const startIndex = (options.page - 1) * options.pageSize; - const endIndex = startIndex + options.pageSize; - return { - items: working.slice(startIndex, endIndex), - total, - page: options.page, - pageSize: options.pageSize, - }; -} - const reservationRequest: Resolvers = { ReservationRequest: { reserver: PopulateUserFromField('reserver'), @@ -146,22 +41,16 @@ const reservationRequest: Resolvers = { args, context: GraphContext, ) => { - // Fetch reservation requests for listings owned by sharer from application services + // Fetch reservation requests for listings owned by sharer const requests = await context.applicationServices.ReservationRequest.ReservationRequest.queryListingRequestsBySharerId( { sharerId: args.sharerId, }, ); - return paginateAndFilterListingRequests( - requests as unknown as ListingRequestDomainShape[], - { - page: args.page, - pageSize: args.pageSize, - searchText: args.searchText, - statusFilters: [...(args.statusFilters ?? [])], - }, - ); + + // Return raw data - let GraphQL schema and UI handle any transformation + return requests ?? []; }, myActiveReservationForListing: async ( _parent, @@ -219,6 +108,35 @@ const reservationRequest: Resolvers = { }, ); }, + acceptReservationRequest: async ( + _parent: unknown, + args: { + input: { + id: string; + }; + }, + context: GraphContext, + _info: GraphQLResolveInfo, + ) => { + const verifiedJwt = context.applicationServices.verifiedUser?.verifiedJwt; + if (!verifiedJwt) { + throw new Error( + 'User must be authenticated to accept a reservation request', + ); + } + + // Delegate to application service - domain layer handles authorization via passport/visa + // The PersonalUserPassport is already set up with the authenticated user + // When update calls reservationRequest.state = 'Accepted', the domain aggregate + // checks permissions via the visa pattern (PersonalUserReservationRequestVisa) + // which validates that the current user is the listing sharer + return await context.applicationServices.ReservationRequest.ReservationRequest.update( + { + id: args.input.id, + state: 'Accepted', + }, + ); + }, }, }; diff --git a/packages/sthrift/messaging-service-mock/src/index.test.ts b/packages/sthrift/messaging-service-mock/src/index.test.ts index dda9dfb46..ede0a98d5 100644 --- a/packages/sthrift/messaging-service-mock/src/index.test.ts +++ b/packages/sthrift/messaging-service-mock/src/index.test.ts @@ -1,21 +1,24 @@ import { describe, it, expect, beforeAll, afterAll } from 'vitest'; import type { Server } from 'node:http'; +import type { AddressInfo } from 'node:net'; import { ServiceMessagingMock } from './index.ts'; import { startServer, stopServer } from '@sthrift/mock-messaging-server'; describe('ServiceMessagingMock Integration Tests', () => { let service: ServiceMessagingMock; let mockServer: Server; + let mockServerUrl: string; const originalEnv = { ...process.env }; - const MOCK_SERVER_PORT = 10000; - const MOCK_SERVER_URL = `http://localhost:${MOCK_SERVER_PORT}`; beforeAll(async () => { - process.env['MESSAGING_MOCK_URL'] = MOCK_SERVER_URL; - - mockServer = await startServer(MOCK_SERVER_PORT, true); - - await new Promise((resolve) => setTimeout(resolve, 500)); + mockServer = await startServer(0, true); + const address = mockServer.address(); + if (!address || typeof address === 'string') { + throw new Error('Mock messaging server did not bind to a TCP port'); + } + mockServerUrl = `http://localhost:${(address as AddressInfo).port}`; + process.env['MESSAGING_MOCK_URL'] = mockServerUrl; + await new Promise((resolve) => setTimeout(resolve, 500)); }, 15000); afterAll(async () => { @@ -27,14 +30,14 @@ describe('ServiceMessagingMock Integration Tests', () => { describe('Service Lifecycle', () => { it('should start up successfully in mock mode', async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await service.startUp(); expect(service).toBeDefined(); await service.shutDown(); }); it('should throw error when starting up twice', async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await service.startUp(); await expect(service.startUp()).rejects.toThrow( 'ServiceMessagingMock is already started', @@ -43,7 +46,7 @@ describe('ServiceMessagingMock Integration Tests', () => { }); it('should throw error when shutting down without starting', async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await expect(service.shutDown()).rejects.toThrow( 'ServiceMessagingMock is not started - shutdown cannot proceed', ); @@ -54,7 +57,7 @@ describe('ServiceMessagingMock Integration Tests', () => { let conversationId: string; beforeAll(async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await service.startUp(); }); @@ -116,7 +119,7 @@ describe('ServiceMessagingMock Integration Tests', () => { let createdConversationId: string; beforeAll(async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await service.startUp(); }); @@ -150,7 +153,7 @@ describe('ServiceMessagingMock Integration Tests', () => { describe('End-to-End Workflow', () => { beforeAll(async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await service.startUp(); }); @@ -198,7 +201,7 @@ describe('ServiceMessagingMock Integration Tests', () => { describe('Error Handling', () => { beforeAll(async () => { - service = new ServiceMessagingMock(MOCK_SERVER_URL); + service = new ServiceMessagingMock(mockServerUrl); await service.startUp(); }); diff --git a/packages/sthrift/mock-mongodb-memory-server/src/seed/item-listings.ts b/packages/sthrift/mock-mongodb-memory-server/src/seed/item-listings.ts index 8b24ccb00..bc87f5a4b 100644 --- a/packages/sthrift/mock-mongodb-memory-server/src/seed/item-listings.ts +++ b/packages/sthrift/mock-mongodb-memory-server/src/seed/item-listings.ts @@ -106,7 +106,7 @@ export const itemListings = [ }), createListing({ _id: '707f1f77bcf86cd799439034', - sharer: COMMON_USERS.diana, + sharer: new ObjectId('507f1f77bcf86cd799439014'), // Duy title: 'Cordless Drill', description: 'Professional grade cordless drill with multiple attachments. Perfect for home improvement projects.', @@ -121,7 +121,7 @@ export const itemListings = [ }), createListing({ _id: '707f1f77bcf86cd799439035', - sharer: COMMON_USERS.diana, + sharer: new ObjectId('507f1f77bcf86cd799439014'), // Duy title: 'Hand Mixer', description: 'Electric hand mixer with multiple speed settings. Great for baking and cooking.', diff --git a/packages/sthrift/mock-mongodb-memory-server/src/seed/reservation-requests.ts b/packages/sthrift/mock-mongodb-memory-server/src/seed/reservation-requests.ts index c895e17a4..2624cc148 100644 --- a/packages/sthrift/mock-mongodb-memory-server/src/seed/reservation-requests.ts +++ b/packages/sthrift/mock-mongodb-memory-server/src/seed/reservation-requests.ts @@ -77,4 +77,34 @@ export const reservationRequests = [ createdAt: new Date('2025-08-11T10:00:00Z'), updatedAt: new Date('2025-08-11T10:00:00Z'), }, + { + _id: '907f1f77bcf86cd799439056', + state: 'Requested', + reservationPeriodStart: new Date('2024-12-01T08:00:00Z'), + reservationPeriodEnd: new Date('2024-12-07T20:00:00Z'), + schemaVersion: '1.0.0', + listing: new ObjectId('707f1f77bcf86cd799439034'), // Cordless Drill (Duy's listing) + reserver: new ObjectId('507f1f77bcf86cd799439011'), // Alice (reserver) + closeRequestedBySharer: false, + closeRequestedByReserver: false, + version: 1, + discriminatorKey: 'reservation-request', + createdAt: new Date('2024-11-25T10:00:00Z'), + updatedAt: new Date('2024-11-25T10:00:00Z'), + }, + { + _id: '907f1f77bcf86cd799439057', + state: 'Requested', + reservationPeriodStart: new Date('2024-12-10T08:00:00Z'), + reservationPeriodEnd: new Date('2024-12-15T20:00:00Z'), + schemaVersion: '1.0.0', + listing: new ObjectId('707f1f77bcf86cd799439035'), // Hand Mixer (Duy's listing) + reserver: new ObjectId('507f1f77bcf86cd799439012'), // Bob (reserver) + closeRequestedBySharer: false, + closeRequestedByReserver: false, + version: 1, + discriminatorKey: 'reservation-request', + createdAt: new Date('2024-11-26T10:00:00Z'), + updatedAt: new Date('2024-11-26T10:00:00Z'), + }, ] as unknown as Models.ReservationRequest.ReservationRequest[]; diff --git a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/features/reservation-request.domain-adapter.feature b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/features/reservation-request.domain-adapter.feature index 1bd1deef8..f51f7fdda 100644 --- a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/features/reservation-request.domain-adapter.feature +++ b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/features/reservation-request.domain-adapter.feature @@ -23,17 +23,15 @@ And a ReservationRequestDomainAdapter wrapping the document When I set the state to "ACCEPTED" Then the state should be "ACCEPTED" - Scenario: Getting and setting closeRequestedBySharer - When I get the closeRequestedBySharer property - Then it should return a boolean value - When I set closeRequestedBySharer to true - Then closeRequestedBySharer should be true + Scenario: Getting and setting closeRequestedBy (SHARER) + When I get the closeRequestedBy property + Then it should return null by default + When I set closeRequestedBy to "SHARER" + Then closeRequestedBy should be "SHARER" - Scenario: Getting and setting closeRequestedByReserver - When I get the closeRequestedByReserver property - Then it should return a boolean value - When I set closeRequestedByReserver to true - Then closeRequestedByReserver should be true + Scenario: Getting and setting closeRequestedBy (RESERVER) + When I set closeRequestedBy to "RESERVER" + Then closeRequestedBy should be "RESERVER" Scenario: Setting reservationPeriodStart Given a new start date diff --git a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.test.ts b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.test.ts index 3a2f8ae3c..150582ee3 100644 --- a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.test.ts +++ b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.test.ts @@ -152,43 +152,37 @@ test.for(feature, ({ Scenario, Background, BeforeEachScenario }) => { }); }); - Scenario('Getting and setting closeRequestedBySharer', ({ When, Then }) => { - let value: boolean; + Scenario('Getting and setting closeRequestedBy (SHARER)', ({ When, Then }) => { + let value: string | null; - When('I get the closeRequestedBySharer property', () => { - value = adapter.closeRequestedBySharer; + When('I get the closeRequestedBy property', () => { + value = adapter.closeRequestedBy; }); - Then('it should return a boolean value', () => { - expect(typeof value).toBe('boolean'); + Then('it should return null by default', () => { + expect(value).toBe(null); }); - When('I set closeRequestedBySharer to true', () => { - adapter.closeRequestedBySharer = true; + When('I set closeRequestedBy to "SHARER"', () => { + adapter.closeRequestedBy = 'SHARER'; }); - Then('closeRequestedBySharer should be true', () => { - expect(adapter.closeRequestedBySharer).toBe(true); + Then('closeRequestedBy should be "SHARER"', () => { + expect(adapter.closeRequestedBy).toBe('SHARER'); + expect(doc.closeRequestedBySharer).toBe(true); + expect(doc.closeRequestedByReserver).toBe(false); }); }); - Scenario('Getting and setting closeRequestedByReserver', ({ When, Then }) => { - let value: boolean; - - When('I get the closeRequestedByReserver property', () => { - value = adapter.closeRequestedByReserver; - }); - - Then('it should return a boolean value', () => { - expect(typeof value).toBe('boolean'); - }); - - When('I set closeRequestedByReserver to true', () => { - adapter.closeRequestedByReserver = true; + Scenario('Getting and setting closeRequestedBy (RESERVER)', ({ When, Then }) => { + When('I set closeRequestedBy to "RESERVER"', () => { + adapter.closeRequestedBy = 'RESERVER'; }); - Then('closeRequestedByReserver should be true', () => { - expect(adapter.closeRequestedByReserver).toBe(true); + Then('closeRequestedBy should be "RESERVER"', () => { + expect(adapter.closeRequestedBy).toBe('RESERVER'); + expect(doc.closeRequestedBySharer).toBe(false); + expect(doc.closeRequestedByReserver).toBe(true); }); }); diff --git a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.ts b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.ts index a3976daca..e25ea91b9 100644 --- a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.ts +++ b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.domain-adapter.ts @@ -1,9 +1,9 @@ import { MongooseSeedwork } from '@cellix/mongoose-seedwork'; -import { Domain } from '@sthrift/domain'; import type { Models } from '@sthrift/data-sources-mongoose-models'; +import { Domain } from '@sthrift/domain'; import { ItemListingDomainAdapter } from '../../listing/item/item-listing.domain-adapter.ts'; -import { PersonalUserDomainAdapter } from '../../user/personal-user/personal-user.domain-adapter.ts'; import { AdminUserDomainAdapter } from '../../user/admin-user/admin-user.domain-adapter.ts'; +import { PersonalUserDomainAdapter } from '../../user/personal-user/personal-user.domain-adapter.ts'; export class ReservationRequestConverter extends MongooseSeedwork.MongoTypeConverter< Models.ReservationRequest.ReservationRequest, @@ -33,18 +33,20 @@ export class ReservationRequestDomainAdapter this.doc.state = value; } - get closeRequestedBySharer() { - return this.doc.closeRequestedBySharer; - } - set closeRequestedBySharer(value: boolean) { - this.doc.closeRequestedBySharer = value; - } - - get closeRequestedByReserver() { - return this.doc.closeRequestedByReserver; + get closeRequestedBy(): Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestCloseRequestedBy | null { + if (this.doc.closeRequestedBySharer) { + return 'SHARER'; + } + if (this.doc.closeRequestedByReserver) { + return 'RESERVER'; + } + return null; } - set closeRequestedByReserver(value: boolean) { - this.doc.closeRequestedByReserver = value; + set closeRequestedBy( + value: Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestCloseRequestedBy | null, + ) { + this.doc.closeRequestedBySharer = value === 'SHARER'; + this.doc.closeRequestedByReserver = value === 'RESERVER'; } get reservationPeriodStart() { @@ -79,8 +81,21 @@ export class ReservationRequestDomainAdapter if (!this.doc.listing) { throw new Error('listing is not populated'); } - if (this.doc.listing instanceof MongooseSeedwork.ObjectId) { + const listingDoc = this.doc.listing as + | Models.Listing.ItemListing + | MongooseSeedwork.ObjectId; + const needsListingPopulate = + listingDoc instanceof MongooseSeedwork.ObjectId; + const needsSharerPopulate = + !needsListingPopulate && + listingDoc?.sharer instanceof MongooseSeedwork.ObjectId; + if (needsListingPopulate) { await this.doc.populate('listing'); + } else if (needsSharerPopulate) { + await this.doc.populate({ + path: 'listing', + populate: { path: 'sharer' }, + }); } return new ItemListingDomainAdapter( this.doc.listing as Models.Listing.ItemListing, diff --git a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.repository.ts b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.repository.ts index ba1848fd4..e2d3a80ce 100644 --- a/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.repository.ts +++ b/packages/sthrift/persistence/src/datasources/domain/reservation-request/reservation-request/reservation-request.repository.ts @@ -2,96 +2,120 @@ import { Domain } from '@sthrift/domain'; import type { Models } from '@sthrift/data-sources-mongoose-models'; import { MongooseSeedwork } from '@cellix/mongoose-seedwork'; import type { ReservationRequestDomainAdapter } from './reservation-request.domain-adapter.ts'; - + // Type aliases for model and adapter - + type PropType = ReservationRequestDomainAdapter; type ReservationRequestModelType = Models.ReservationRequest.ReservationRequest; + + export class ReservationRequestRepository - extends MongooseSeedwork.MongoRepositoryBase< - ReservationRequestModelType, - PropType, - Domain.Passport, - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest - > - implements - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestRepository + extends MongooseSeedwork.MongoRepositoryBase< + ReservationRequestModelType, + PropType, + Domain.Passport, + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest + > + implements + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestRepository { - async getById( - id: string, - ): Promise< - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest - > { - const mongoReservation = await this.model - .findById(id) - .populate(['listing', 'reserver']) - .exec(); - if (!mongoReservation) { - throw new Error(`ReservationRequest with id ${id} not found`); - } - return this.typeConverter.toDomain(mongoReservation, this.passport); - } - - async getAll(): Promise< - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] - > { - const mongoReservations = await this.model - .find() - .populate(['listing', 'reserver']) - .exec(); - return mongoReservations.map((doc) => - this.typeConverter.toDomain(doc, this.passport), - ); - } - - getNewInstance( - state: string, - listing: Domain.Contexts.Listing.ItemListing.ItemListingEntityReference, - reserver: Domain.Contexts.User.UserEntityReference, - reservationPeriodStart: Date, - reservationPeriodEnd: Date, - ): Promise< - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest - > { - const adapter = this.typeConverter.toAdapter(new this.model()); - return Promise.resolve( - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest.getNewInstance( - adapter, - state, - listing, - reserver, - reservationPeriodStart, - reservationPeriodEnd, - this.passport, - ), - ); - } - - async getByReserverId( - reserverId: string, - ): Promise< - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] - > { - const mongoReservations = await this.model - .find({ reserver: reserverId }) - .populate(['listing', 'reserver']) - .exec(); - return mongoReservations.map((doc) => - this.typeConverter.toDomain(doc, this.passport), - ); - } - - async getByListingId( - listingId: string, - ): Promise< - Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] - > { - const mongoReservations = await this.model - .find({ listing: listingId }) - .populate(['listing', 'reserver']) - .exec(); - return mongoReservations.map((doc) => - this.typeConverter.toDomain(doc, this.passport), - ); - } -} + async getById( + id: string, + ): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest + > { + const mongoReservation = await this.model + .findById(id) + .populate(['listing', 'reserver']) + .exec(); + if (!mongoReservation) { + throw new Error(`ReservationRequest with id ${id} not found`); + } + return this.typeConverter.toDomain(mongoReservation, this.passport); + } + + async getAll(): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] + > { + const mongoReservations = await this.model + .find() + .exec(); + return mongoReservations.map((doc) => + this.typeConverter.toDomain(doc, this.passport), + ); + } + + getNewInstance( + state: string, + listing: Domain.Contexts.Listing.ItemListing.ItemListingEntityReference, + reserver: Domain.Contexts.User.UserEntityReference, + reservationPeriodStart: Date, + reservationPeriodEnd: Date, + ): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest + > { + const adapter = this.typeConverter.toAdapter(new this.model()); + return Promise.resolve( + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest.getNewInstance( + adapter, + state, + listing, + reserver, + reservationPeriodStart, + reservationPeriodEnd, + this.passport, + ), + ); + } + + async getByReserverId( + reserverId: string, + ): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] + > { + const mongoReservations = await this.model + .find({ reserver: reserverId }) + .exec(); + return mongoReservations.map((doc) => + this.typeConverter.toDomain(doc, this.passport), + ); + } + + async getByListingId( + listingId: string, + ): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] + > { + const mongoReservations = await this.model + .find({ listing: listingId }) + .exec(); + return mongoReservations.map((doc) => + this.typeConverter.toDomain(doc, this.passport), + ); + } + + async queryOverlapByListingIdAndReservationPeriod( + listingId: string, + reservationPeriodStart: Date, + reservationPeriodEnd: Date, + excludeState: string, + ): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequest[] + > { + const mongoReservations = await this.model + .find({ + listing: listingId, + state: { $ne: excludeState }, + $or: [ + { + reservationPeriodStart: { $lt: reservationPeriodEnd }, + reservationPeriodEnd: { $gt: reservationPeriodStart }, + }, + ], + }) + .exec(); + return mongoReservations.map((doc) => + this.typeConverter.toDomain(doc, this.passport), + ); + } +} \ No newline at end of file diff --git a/packages/sthrift/persistence/src/datasources/messaging/conversation/conversation/messaging-conversation.repository.ts b/packages/sthrift/persistence/src/datasources/messaging/conversation/conversation/messaging-conversation.repository.ts index e85d1cbb1..92e16979b 100644 --- a/packages/sthrift/persistence/src/datasources/messaging/conversation/conversation/messaging-conversation.repository.ts +++ b/packages/sthrift/persistence/src/datasources/messaging/conversation/conversation/messaging-conversation.repository.ts @@ -8,6 +8,9 @@ export interface MessagingConversationRepository { ) => Promise< Domain.Contexts.Conversation.Conversation.MessageEntityReference[] >; + ) => Promise< + Domain.Contexts.Conversation.Conversation.MessageEntityReference[] + >; sendMessage: ( conversation: Domain.Contexts.Conversation.Conversation.ConversationEntityReference, @@ -23,6 +26,9 @@ export interface MessagingConversationRepository { ) => Promise<{ id: string; displayName?: string }>; } +export class MessagingConversationRepositoryImpl + implements MessagingConversationRepository +{ export class MessagingConversationRepositoryImpl implements MessagingConversationRepository { @@ -34,6 +40,9 @@ export class MessagingConversationRepositoryImpl async getMessages( conversationId: string, + ): Promise< + Domain.Contexts.Conversation.Conversation.MessageEntityReference[] + > { ): Promise< Domain.Contexts.Conversation.Conversation.MessageEntityReference[] > { @@ -88,10 +97,13 @@ export class MessagingConversationRepositoryImpl } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - console.error('Error deleting conversation from messaging service:', { + console.error( + 'Error deleting conversation from messaging service:', + { conversationId, errorMessage, - }); + }, + ); throw error; } } @@ -105,13 +117,13 @@ export class MessagingConversationRepositoryImpl displayName, uniqueIdentifier, ); - const result: { id: string; displayName?: string } = { - id: conversation.id, - }; if (conversation.displayName) { - result.displayName = conversation.displayName; + return { + id: conversation.id, + displayName: conversation.displayName, + }; } - return result; + return { id: conversation.id }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; diff --git a/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.test.ts b/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.test.ts index 9b334ca78..d9a4dec23 100644 --- a/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.test.ts +++ b/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.test.ts @@ -150,6 +150,7 @@ test.for(feature, ({ Scenario, Background, BeforeEachScenario }) => { populate: vi.fn(), sort: vi.fn(), limit: vi.fn(), + select: vi.fn(), exec: vi.fn().mockResolvedValue(result), catch: vi.fn((onReject) => Promise.resolve(result).catch(onReject)), }; @@ -158,6 +159,8 @@ test.for(feature, ({ Scenario, Background, BeforeEachScenario }) => { mockQuery.populate.mockReturnValue(mockQuery); mockQuery.sort.mockReturnValue(mockQuery); mockQuery.limit.mockReturnValue(mockQuery); + mockQuery.select.mockReturnValue(mockQuery); + // Make the query thenable (like Mongoose queries are) by adding then as property Object.defineProperty(mockQuery, 'then', { @@ -180,6 +183,7 @@ test.for(feature, ({ Scenario, Background, BeforeEachScenario }) => { collection: { name: 'item-listings', }, + find: vi.fn(() => createMockQuery([{ _id: 'listing-1' }, { _id: 'listing-2' }])), } as unknown as Models.Listing.ItemListingModelType; const modelsContext = { diff --git a/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.ts b/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.ts index 61fcfc6a8..7d537cf2d 100644 --- a/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.ts +++ b/packages/sthrift/persistence/src/datasources/readonly/reservation-request/reservation-request/reservation-request.read-repository.ts @@ -1,15 +1,15 @@ +import { MongooseSeedwork } from '@cellix/mongoose-seedwork'; +import type { Models } from '@sthrift/data-sources-mongoose-models'; import type { Domain } from '@sthrift/domain'; +import type { FilterQuery } from 'mongoose'; import type { ModelsContext } from '../../../../models-context.ts'; -import { ReservationRequestDataSourceImpl } from './reservation-request.data.ts'; +import { ReservationRequestConverter } from '../../../domain/reservation-request/reservation-request/reservation-request.domain-adapter.ts'; import type { FindOneOptions, FindOptions, MongoDataSource, } from '../../mongo-data-source.ts'; -import { ReservationRequestConverter } from '../../../domain/reservation-request/reservation-request/reservation-request.domain-adapter.ts'; -import { MongooseSeedwork } from '@cellix/mongoose-seedwork'; -import type { FilterQuery, PipelineStage } from 'mongoose'; -import type { Models } from '@sthrift/data-sources-mongoose-models'; +import { ReservationRequestDataSourceImpl } from './reservation-request.data.ts'; // Reservation state constants for filtering (inline per codebase patterns) const ACTIVE_STATES = ['Accepted', 'Requested']; @@ -70,6 +70,13 @@ export interface ReservationRequestReadRepository { ) => Promise< Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] >; + queryOverlapByListingIdAndReservationPeriod: (params: { + listingId: string; + reservationPeriodStart: Date; + reservationPeriodEnd: Date; + }) => Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + >; } /** @@ -191,44 +198,28 @@ export class ReservationRequestReadRepositoryImpl ): Promise< Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] > { - // Use aggregation pipeline to join listings and filter by sharerId - const pipeline: PipelineStage[] = [ - { - $lookup: { - from: this.models.Listing.ItemListingModel.collection.name, - localField: 'listing', - foreignField: '_id', - as: 'listingDoc', - }, - }, - { $unwind: '$listingDoc' }, - { - $match: { - 'listingDoc.sharer': new MongooseSeedwork.ObjectId(sharerId), - }, - }, - ]; + // First, find all listings owned by this sharer + const listingIds = await this.models.Listing.ItemListingModel.find({ + sharer: new MongooseSeedwork.ObjectId(sharerId), + }) + .select('_id') + .lean() + .exec(); - // Apply additional options if provided (e.g., limit, sort) - if (options?.limit) { - pipeline.push({ $limit: options.limit } as PipelineStage); - } - if (options?.sort) { - pipeline.push({ $sort: options.sort } as PipelineStage); + // If no listings found, return empty array + if (listingIds.length === 0) { + return []; } - const docs = - await this.models.ReservationRequest.ReservationRequest.aggregate( - pipeline, - ).exec(); + // Query reservation requests for those listings + const filter: FilterQuery = { + listing: { $in: listingIds.map((l) => l._id) }, + }; - // Convert to domain entities - return docs.map((doc) => - this.converter.toDomain( - doc as Models.ReservationRequest.ReservationRequest, - this.passport, - ), - ); + return await this.queryMany(filter, { + ...options, + populateFields: PopulatedFields, + }); } async getActiveByReserverIdAndListingId( @@ -284,11 +275,27 @@ export class ReservationRequestReadRepositoryImpl }; return await this.queryMany(filter, options); } + + async queryOverlapByListingIdAndReservationPeriod(params: { + listingId: string; + reservationPeriodStart: Date; + reservationPeriodEnd: Date; + }): Promise< + Domain.Contexts.ReservationRequest.ReservationRequest.ReservationRequestEntityReference[] + > { + const filter: FilterQuery = { + listing: new MongooseSeedwork.ObjectId(params.listingId), + state: { $in: ACTIVE_STATES }, + reservationPeriodStart: { $lt: params.reservationPeriodEnd }, + reservationPeriodEnd: { $gt: params.reservationPeriodStart }, + }; + return await this.queryMany(filter); + } } export const getReservationRequestReadRepository = ( models: ModelsContext, passport: Domain.Passport, -) => { +): ReservationRequestReadRepository => { return new ReservationRequestReadRepositoryImpl(models, passport); }; diff --git a/packages/sthrift/ui-components/package.json b/packages/sthrift/ui-components/package.json index 56f05e48d..1924f98dc 100644 --- a/packages/sthrift/ui-components/package.json +++ b/packages/sthrift/ui-components/package.json @@ -77,4 +77,4 @@ "vitest": "catalog:" }, "license": "MIT" -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0a455eece..cf8357f01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,10 +8,10 @@ catalogs: default: '@vitest/browser-playwright': specifier: ^4.0.15 - version: 4.0.15 + version: 4.0.16 '@vitest/coverage-v8': specifier: ^4.0.15 - version: 4.0.15 + version: 4.0.16 mongodb: specifier: 6.18.0 version: 6.18.0 @@ -23,13 +23,13 @@ catalogs: version: 9.1.17 vite: specifier: ^7.3.0 - version: 7.3.0 + version: 7.3.1 vitest: specifier: ^4.0.15 - version: 4.0.15 + version: 4.0.16 overrides: - node-forge@<1.3.2: '>=1.3.2' + qs: 6.14.1 importers: @@ -37,46 +37,46 @@ importers: devDependencies: '@amiceli/vitest-cucumber': specifier: ^6.1.0 - version: 6.1.0(vitest@4.0.15) + version: 6.2.0(vitest@4.0.16) '@biomejs/biome': specifier: 2.0.0 version: 2.0.0 '@graphql-codegen/cli': specifier: ^5.0.7 - version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.10.4)(graphql@16.11.0)(typescript@5.8.3) + version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@24.10.4)(graphql@16.12.0)(typescript@5.8.3) '@graphql-codegen/introspection': specifier: ^4.0.3 - version: 4.0.3(graphql@16.11.0) + version: 4.0.3(graphql@16.12.0) '@graphql-codegen/typed-document-node': specifier: ^5.1.2 - version: 5.1.2(graphql@16.11.0) + version: 5.1.2(graphql@16.12.0) '@graphql-codegen/typescript': specifier: ^4.1.6 - version: 4.1.6(graphql@16.11.0) + version: 4.1.6(graphql@16.12.0) '@graphql-codegen/typescript-operations': specifier: ^4.6.1 - version: 4.6.1(graphql@16.11.0) + version: 4.6.1(graphql@16.12.0) '@graphql-codegen/typescript-resolvers': specifier: ^4.5.1 - version: 4.5.2(graphql@16.11.0) + version: 4.5.2(graphql@16.12.0) '@parcel/watcher': specifier: ^2.5.1 version: 2.5.1 '@playwright/test': specifier: ^1.55.1 - version: 1.56.1 + version: 1.57.0 '@sonar/scan': specifier: ^4.3.0 - version: 4.3.2 + version: 4.3.4 '@types/node': specifier: ^24.7.2 version: 24.10.4 '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) + version: 4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.15(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(vitest@4.0.15) + version: 4.0.16(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(vitest@4.0.16) azurite: specifier: ^3.35.0 version: 3.35.0 @@ -88,37 +88,37 @@ importers: version: 3.0.2 knip: specifier: ^5.61.1 - version: 5.73.3(@types/node@24.10.4)(typescript@5.8.3) + version: 5.80.1(@types/node@24.10.4)(typescript@5.8.3) rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 rollup: specifier: 3.29.5 version: 3.29.5 snyk: specifier: ^1.1301.0 - version: 1.1301.0 + version: 1.1301.2 tsx: specifier: ^4.20.3 - version: 4.20.6 + version: 4.21.0 turbo: specifier: ^2.5.8 - version: 2.5.8 + version: 2.7.3 typescript: specifier: ^5.8.3 version: 5.8.3 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) apps/api: dependencies: '@azure/functions': specifier: ^4.0.0 - version: 4.8.0 + version: 4.10.0 '@cellix/api-services-spec': specifier: workspace:* version: link:../../packages/cellix/api-services-spec @@ -185,7 +185,7 @@ importers: version: link:../../packages/cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -194,25 +194,25 @@ importers: dependencies: '@docusaurus/core': specifier: 3.9.2 - version: 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + version: 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/preset-classic': specifier: 3.9.2 - version: 3.9.2(@algolia/client-search@5.41.0)(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)(typescript@5.8.3) + version: 3.9.2(@algolia/client-search@5.46.2)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(search-insights@2.17.3)(typescript@5.8.3) '@mdx-js/react': specifier: ^3.0.0 - version: 3.1.1(@types/react@19.2.2)(react@19.2.0) + version: 3.1.1(@types/react@19.2.7)(react@19.2.3) clsx: specifier: ^2.0.0 version: 2.1.1 prism-react-renderer: specifier: ^2.3.0 - version: 2.4.1(react@19.2.0) + version: 2.4.1(react@19.2.3) react: specifier: ^19.0.0 - version: 19.2.0 + version: 19.2.3 react-dom: specifier: ^19.0.0 - version: 19.2.0(react@19.2.0) + version: 19.2.3(react@19.2.3) devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -222,28 +222,28 @@ importers: version: link:../../packages/cellix/vitest-config '@docusaurus/module-type-aliases': specifier: 3.9.2 - version: 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@docusaurus/plugin-content-docs': specifier: 3.9.2 - version: 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + version: 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/types': specifier: 3.9.2 - version: 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.9.1 '@testing-library/react': specifier: ^16.1.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@types/react': specifier: ^19.1.11 - version: 19.2.2 + version: 19.2.7 '@types/react-dom': specifier: ^19.1.6 - version: 19.2.2(@types/react@19.2.2) + version: 19.2.3(@types/react@19.2.7) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.15(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(vitest@4.0.15) + version: 4.0.16(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(vitest@4.0.16) jsdom: specifier: ^26.1.0 version: 26.1.0 @@ -252,49 +252,49 @@ importers: version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) apps/ui-sharethrift: dependencies: '@ant-design/icons': specifier: ^6.1.0 - version: 6.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 6.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@ant-design/v5-patch-for-react-19': specifier: ^1.0.3 - version: 1.0.3(antd@5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 1.0.3(antd@5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@apollo/client': specifier: ^4.0.7 - version: 4.0.8(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2) + version: 4.0.11(graphql-ws@6.0.6(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rxjs@7.8.2) '@sthrift/ui-components': specifier: workspace:* version: link:../../packages/sthrift/ui-components antd: specifier: ^5.27.1 - version: 5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) crypto-hash: specifier: ^3.1.0 version: 3.1.0 dayjs: specifier: ^1.11.18 - version: 1.11.18 + version: 1.11.19 graphql: specifier: ^16.11.0 - version: 16.11.0 + version: 16.12.0 lodash: specifier: ^4.17.21 version: 4.17.21 react: specifier: ^19.1.1 - version: 19.2.0 + version: 19.2.3 react-dom: specifier: ^19.1.1 - version: 19.2.0(react@19.2.0) + version: 19.2.3(react@19.2.3) react-oidc-context: specifier: ^3.3.0 - version: 3.3.0(oidc-client-ts@3.3.0)(react@19.2.0) + version: 3.3.0(oidc-client-ts@3.4.1)(react@19.2.3) react-router-dom: specifier: ^7.8.0 - version: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -307,73 +307,73 @@ importers: version: link:../../packages/cellix/vitest-config '@chromatic-com/storybook': specifier: ^4.1.0 - version: 4.1.2(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 4.1.3(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@eslint/js': specifier: ^9.30.1 - version: 9.38.0 + version: 9.39.2 '@graphql-typed-document-node/core': specifier: ^3.2.0 - version: 3.2.0(graphql@16.11.0) + version: 3.2.0(graphql@16.12.0) '@storybook/addon-a11y': specifier: ^9.1.17 - version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-docs': specifier: ^9.1.17 - version: 9.1.17(@types/react@19.2.2)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(@types/react@19.2.7)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-vitest': specifier: ^9.1.17 - version: 9.1.17(@vitest/browser-playwright@4.0.15)(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(@vitest/runner@4.0.15)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@4.0.15) + version: 9.1.17(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.16) '@storybook/react': specifier: ^9.1.17 - version: 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3) + version: 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3) '@storybook/react-vite': specifier: ^9.1.17 - version: 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.5)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.55.1)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 '@types/lodash': specifier: ^4.17.20 - version: 4.17.20 + version: 4.17.21 '@types/react': specifier: ^19.1.9 - version: 19.2.2 + version: 19.2.7 '@types/react-dom': specifier: ^19.1.7 - version: 19.2.2(@types/react@19.2.2) + version: 19.2.3(@types/react@19.2.7) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.7.0(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.15(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(vitest@4.0.15) + version: 4.0.16(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(vitest@4.0.16) eslint: specifier: ^9.30.1 - version: 9.38.0(jiti@2.6.1) + version: 9.39.2(jiti@2.6.1) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.38.0(jiti@2.6.1)) + version: 5.2.0(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-refresh: specifier: ^0.4.20 - version: 0.4.24(eslint@9.38.0(jiti@2.6.1)) + version: 0.4.26(eslint@9.39.2(jiti@2.6.1)) globals: specifier: ^16.3.0 - version: 16.4.0 + version: 16.5.0 storybook: specifier: 'catalog:' - version: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) typescript: specifier: ~5.8.3 version: 5.8.3 typescript-eslint: specifier: ^8.35.1 - version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) + version: 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/cellix/api-services-spec: devDependencies: @@ -382,19 +382,19 @@ importers: version: link:../typescript-config '@eslint/js': specifier: ^9.29.0 - version: 9.38.0 + version: 9.39.2 eslint: specifier: ^9.29.0 - version: 9.38.0(jiti@2.6.1) + version: 9.39.2(jiti@2.6.1) rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: specifier: ^8.34.0 - version: 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) + version: 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) packages/cellix/domain-seedwork: devDependencies: @@ -406,7 +406,7 @@ importers: version: link:../vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -421,7 +421,7 @@ importers: version: 1.9.0 '@opentelemetry/semantic-conventions': specifier: ^1.32.0 - version: 1.37.0 + version: 1.38.0 devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -431,7 +431,7 @@ importers: version: link:../vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -447,7 +447,7 @@ importers: version: link:../typescript-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -468,7 +468,7 @@ importers: version: 8.17.0 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -493,10 +493,10 @@ importers: version: 4.17.25 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 tsx: specifier: ^4.20.3 - version: 4.20.6 + version: 4.21.0 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -508,7 +508,7 @@ importers: version: link:../payment-service express: specifier: ^4.18.2 - version: 4.21.2 + version: 4.22.1 jose: specifier: ^5.10.0 version: 5.10.0 @@ -564,7 +564,7 @@ importers: version: 8.17.0 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 packages/cellix/payment-service: dependencies: @@ -586,7 +586,7 @@ importers: version: link:../vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -597,13 +597,13 @@ importers: dependencies: antd: specifier: '>=5.0.0' - version: 5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: specifier: '>=18.0.0' - version: 19.2.0 + version: 19.2.3 react-dom: specifier: '>=18.0.0' - version: 19.2.0(react@19.2.0) + version: 19.2.3(react@19.2.3) devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -613,64 +613,64 @@ importers: version: link:../vitest-config '@chromatic-com/storybook': specifier: ^4.1.1 - version: 4.1.2(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 4.1.3(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-a11y': specifier: ^9.1.17 - version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-docs': specifier: ^9.1.17 - version: 9.1.17(@types/react@19.2.2)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(@types/react@19.2.7)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-onboarding': specifier: ^9.1.17 - version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-vitest': specifier: ^9.1.17 - version: 9.1.17(@vitest/browser-playwright@4.0.15)(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(@vitest/runner@4.0.15)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@4.0.15) + version: 9.1.17(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.16) '@storybook/react': specifier: ^9.1.17 - version: 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3) + version: 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3) '@storybook/react-vite': specifier: ^9.1.17 - version: 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.5)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.55.1)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/react': specifier: ^19.1.16 - version: 19.2.2 + version: 19.2.7 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.15(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(vitest@4.0.15) + version: 4.0.16(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(vitest@4.0.16) jsdom: specifier: ^26.1.0 version: 26.1.0 react-oidc-context: specifier: ^3.3.0 - version: 3.3.0(oidc-client-ts@3.3.0)(react@19.2.0) + version: 3.3.0(oidc-client-ts@3.4.1)(react@19.2.3) react-router-dom: specifier: ^7.9.3 - version: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 storybook: specifier: 'catalog:' - version: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) typescript: specifier: ^5.8.3 version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/cellix/vitest-config: dependencies: '@storybook/addon-vitest': specifier: ^9.1.17 - version: 9.1.17(@vitest/browser-playwright@4.0.15)(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(@vitest/runner@4.0.15)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@4.0.15) + version: 9.1.17(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.16) '@vitest/browser-playwright': specifier: 'catalog:' - version: 4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) + version: 4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -702,7 +702,7 @@ importers: version: link:../../cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -727,7 +727,7 @@ importers: version: link:../../cellix/typescript-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -746,7 +746,7 @@ importers: version: link:../../cellix/typescript-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -780,22 +780,22 @@ importers: version: 1.0.1(@cucumber/cucumber@11.3.0)(@cucumber/messages@27.2.0) '@serenity-js/assertions': specifier: ^3.32.3 - version: 3.35.2 + version: 3.37.1 '@serenity-js/console-reporter': specifier: ^3.32.3 - version: 3.35.2 + version: 3.37.1 '@serenity-js/core': specifier: ^3.32.3 - version: 3.35.2 + version: 3.37.1 '@serenity-js/cucumber': specifier: ^3.32.3 - version: 3.35.2(@cucumber/cucumber@11.3.0) + version: 3.37.1(@cucumber/cucumber@11.3.0) '@serenity-js/serenity-bdd': specifier: ^3.32.3 - version: 3.35.2 + version: 3.37.1 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: 5.8.3 version: 5.8.3 @@ -811,7 +811,7 @@ importers: version: link:../../cellix/typescript-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -820,31 +820,31 @@ importers: dependencies: '@apollo/server': specifier: ^5.2.0 - version: 5.2.0(graphql@16.11.0) + version: 5.2.0(graphql@16.12.0) '@apollo/utils.withrequired': specifier: ^3.0.0 version: 3.0.0 '@as-integrations/azure-functions': specifier: ^0.2.0 - version: 0.2.2(@apollo/server@5.2.0(graphql@16.11.0)) + version: 0.2.3(@apollo/server@5.2.0(graphql@16.12.0)) '@azure/functions': specifier: ^4.0.0 - version: 4.8.0 + version: 4.10.0 '@graphql-tools/json-file-loader': specifier: ^8.0.20 - version: 8.0.20(graphql@16.11.0) + version: 8.0.26(graphql@16.12.0) '@graphql-tools/load': specifier: ^8.1.2 - version: 8.1.2(graphql@16.11.0) + version: 8.1.8(graphql@16.12.0) '@graphql-tools/load-files': specifier: ^7.0.1 - version: 7.0.1(graphql@16.11.0) + version: 7.0.1(graphql@16.12.0) '@graphql-tools/merge': specifier: ^9.1.1 - version: 9.1.1(graphql@16.11.0) + version: 9.1.7(graphql@16.12.0) '@graphql-tools/schema': specifier: ^10.0.25 - version: 10.0.25(graphql@16.11.0) + version: 10.0.31(graphql@16.12.0) '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.0 @@ -856,16 +856,16 @@ importers: version: link:../domain graphql: specifier: ^16.10.0 - version: 16.11.0 + version: 16.12.0 graphql-depth-limit: specifier: ^1.1.0 - version: 1.1.0(graphql@16.11.0) + version: 1.1.0(graphql@16.12.0) graphql-middleware: specifier: ^6.1.35 - version: 6.1.35(graphql@16.11.0) + version: 6.1.35(graphql@16.12.0) graphql-scalars: specifier: ^1.24.2 - version: 1.25.0(graphql@16.11.0) + version: 1.25.0(graphql@16.12.0) mongoose: specifier: 'catalog:' version: 8.17.0 @@ -881,7 +881,7 @@ importers: version: 1.1.6 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -896,7 +896,7 @@ importers: version: link:../../cellix/messaging-service axios: specifier: ^1.7.9 - version: 1.13.1 + version: 1.13.2 devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -924,7 +924,7 @@ importers: version: link:../../cellix/messaging-service twilio: specifier: ^5.10.7 - version: 5.10.7 + version: 5.11.2 devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -940,7 +940,7 @@ importers: version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/sthrift/mock-messaging-server: dependencies: @@ -949,7 +949,7 @@ importers: version: 16.6.1 express: specifier: ^4.18.2 - version: 4.21.2 + version: 4.22.1 mongodb: specifier: 'catalog:' version: 6.18.0 @@ -971,10 +971,10 @@ importers: version: 6.0.3 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 supertest: specifier: ^7.0.0 - version: 7.1.4 + version: 7.2.2 tsc-watch: specifier: ^7.1.1 version: 7.2.0(typescript@5.8.3) @@ -983,7 +983,7 @@ importers: version: 5.8.3 vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages/sthrift/mock-mongodb-memory-server: dependencies: @@ -1014,7 +1014,7 @@ importers: version: 7.7.1 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1029,7 +1029,7 @@ importers: version: link:../../cellix/payment-service axios: specifier: ^1.6.0 - version: 1.13.1 + version: 1.13.2 cybersource-rest-client: specifier: ^0.0.73 version: 0.0.73(undici@5.29.0) @@ -1057,7 +1057,7 @@ importers: version: link:../../cellix/payment-service axios: specifier: ^1.6.0 - version: 1.13.1 + version: 1.13.2 devDependencies: '@cellix/typescript-config': specifier: workspace:* @@ -1107,7 +1107,7 @@ importers: version: link:../../cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1116,7 +1116,7 @@ importers: dependencies: '@azure/functions': specifier: ^4.6.0 - version: 4.8.0 + version: 4.10.0 '@sthrift/application-services': specifier: workspace:* version: link:../application-services @@ -1129,7 +1129,7 @@ importers: version: link:../../cellix/typescript-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 packages/sthrift/service-blob-storage: dependencies: @@ -1148,7 +1148,7 @@ importers: version: link:../../cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1173,7 +1173,7 @@ importers: version: link:../../cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1228,7 +1228,7 @@ importers: version: link:../../cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1240,10 +1240,10 @@ importers: version: 8.1.6 react: specifier: '>=17.0.0' - version: 19.2.0 + version: 19.2.3 react-dom: specifier: '>=17.0.0' - version: 19.2.0(react@19.2.0) + version: 19.2.3(react@19.2.3) devDependencies: '@biomejs/biome': specifier: 2.0.0 @@ -1272,7 +1272,7 @@ importers: version: link:../../cellix/vitest-config rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1281,31 +1281,31 @@ importers: dependencies: '@ant-design/icons': specifier: ^6.1.0 - version: 6.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 6.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@apollo/client': specifier: ^4.0.7 - version: 4.0.8(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2) + version: 4.0.11(graphql-ws@6.0.6(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rxjs@7.8.2) '@graphql-typed-document-node/core': specifier: ^3.2.0 - version: 3.2.0(graphql@16.11.0) + version: 3.2.0(graphql@16.12.0) antd: specifier: ^5.27.1 - version: 5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) graphql: specifier: ^16.11.0 - version: 16.11.0 + version: 16.12.0 react: specifier: ^19.1.1 - version: 19.2.0 + version: 19.2.3 react-dom: specifier: ^19.1.1 - version: 19.2.0(react@19.2.0) + version: 19.2.3(react@19.2.3) react-oidc-context: specifier: ^3.3.0 - version: 3.3.0(oidc-client-ts@3.3.0)(react@19.2.0) + version: 3.3.0(oidc-client-ts@3.4.1)(react@19.2.3) react-router-dom: specifier: ^7.8.2 - version: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -1318,139 +1318,159 @@ importers: version: link:../../cellix/vitest-config '@chromatic-com/storybook': specifier: ^4.1.1 - version: 4.1.2(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 4.1.3(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-a11y': specifier: ^9.1.17 - version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-docs': specifier: ^9.1.17 - version: 9.1.17(@types/react@19.2.2)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(@types/react@19.2.7)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-onboarding': specifier: ^9.1.17 - version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) + version: 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) '@storybook/addon-vitest': specifier: ^9.1.17 - version: 9.1.17(@vitest/browser-playwright@4.0.15)(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(@vitest/runner@4.0.15)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@4.0.15) + version: 9.1.17(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.16) '@storybook/react': specifier: ^9.1.17 - version: 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3) + version: 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3) '@storybook/react-vite': specifier: ^9.1.17 - version: 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.5)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.55.1)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@types/react': specifier: ^19.1.11 - version: 19.2.2 + version: 19.2.7 '@types/react-dom': specifier: ^19.1.6 - version: 19.2.2(@types/react@19.2.2) + version: 19.2.3(@types/react@19.2.7) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.15(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(vitest@4.0.15) + version: 4.0.16(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(vitest@4.0.16) jsdom: specifier: ^26.1.0 version: 26.1.0 rimraf: specifier: ^6.0.1 - version: 6.0.1 + version: 6.1.2 storybook: specifier: 'catalog:' - version: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) typescript: specifier: ^5.8.3 version: 5.8.3 vite: specifier: 'catalog:' - version: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: 'catalog:' - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@algolia/abtesting@1.7.0': - resolution: {integrity: sha512-hOEItTFOvNLI6QX6TSGu7VE4XcUcdoKZT8NwDY+5mWwu87rGhkjlY7uesKTInlg6Sh8cyRkDBYRumxbkoBbBhA==} - engines: {node: '>= 14.0.0'} + '@ai-sdk/gateway@2.0.24': + resolution: {integrity: sha512-mflk80YF8hj8vrF9e1IHhovGKC1ubX+sY88pesSk3pUiXfH5VPO8dgzNnxjwsqsCZrnkHcztxS5cSl4TzSiEuA==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 - '@algolia/autocomplete-core@1.17.9': - resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} + '@ai-sdk/provider-utils@3.0.20': + resolution: {integrity: sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 - '@algolia/autocomplete-plugin-algolia-insights@1.17.9': - resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} + '@ai-sdk/provider@2.0.1': + resolution: {integrity: sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==} + engines: {node: '>=18'} + + '@ai-sdk/react@2.0.120': + resolution: {integrity: sha512-x7Oa2LDRURc8uRnAdcEfydbHLSXGYjNaFlQrGuxZAMfqhLJQ+7x4K8Z6O5vnLt414mrPaVvgirfRqsP/nsxtnw==} + engines: {node: '>=18'} peerDependencies: - search-insights: '>= 1 < 3' + react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1 + zod: ^3.25.76 || ^4.1.8 + peerDependenciesMeta: + zod: + optional: true + + '@algolia/abtesting@1.12.2': + resolution: {integrity: sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==} + engines: {node: '>= 14.0.0'} + + '@algolia/autocomplete-core@1.19.2': + resolution: {integrity: sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==} - '@algolia/autocomplete-preset-algolia@1.17.9': - resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} + '@algolia/autocomplete-plugin-algolia-insights@1.19.2': + resolution: {integrity: sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==} peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' + search-insights: '>= 1 < 3' - '@algolia/autocomplete-shared@1.17.9': - resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==} + '@algolia/autocomplete-shared@1.19.2': + resolution: {integrity: sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - '@algolia/client-abtesting@5.41.0': - resolution: {integrity: sha512-iRuvbEyuHCAhIMkyzG3tfINLxTS7mSKo7q8mQF+FbQpWenlAlrXnfZTN19LRwnVjx0UtAdZq96ThMWGS6cQ61A==} + '@algolia/client-abtesting@5.46.2': + resolution: {integrity: sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.41.0': - resolution: {integrity: sha512-OIPVbGfx/AO8l1V70xYTPSeTt/GCXPEl6vQICLAXLCk9WOUbcLGcy6t8qv0rO7Z7/M/h9afY6Af8JcnI+FBFdQ==} + '@algolia/client-analytics@5.46.2': + resolution: {integrity: sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.41.0': - resolution: {integrity: sha512-8Mc9niJvfuO8dudWN5vSUlYkz7U3M3X3m1crDLc9N7FZrIVoNGOUETPk3TTHviJIh9y6eKZKbq1hPGoGY9fqPA==} + '@algolia/client-common@5.46.2': + resolution: {integrity: sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.41.0': - resolution: {integrity: sha512-vXzvCGZS6Ixxn+WyzGUVDeR3HO/QO5POeeWy1kjNJbEf6f+tZSI+OiIU9Ha+T3ntV8oXFyBEuweygw4OLmgfiQ==} + '@algolia/client-insights@5.46.2': + resolution: {integrity: sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.41.0': - resolution: {integrity: sha512-tkymXhmlcc7w/HEvLRiHcpHxLFcUB+0PnE9FcG6hfFZ1ZXiWabH+sX+uukCVnluyhfysU9HRU2kUmUWfucx1Dg==} + '@algolia/client-personalization@5.46.2': + resolution: {integrity: sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.41.0': - resolution: {integrity: sha512-vyXDoz3kEZnosNeVQQwf0PbBt5IZJoHkozKRIsYfEVm+ylwSDFCW08qy2YIVSHdKy69/rWN6Ue/6W29GgVlmKQ==} + '@algolia/client-query-suggestions@5.46.2': + resolution: {integrity: sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.41.0': - resolution: {integrity: sha512-G9I2atg1ShtFp0t7zwleP6aPS4DcZvsV4uoQOripp16aR6VJzbEnKFPLW4OFXzX7avgZSpYeBAS+Zx4FOgmpPw==} + '@algolia/client-search@5.46.2': + resolution: {integrity: sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==} engines: {node: '>= 14.0.0'} '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/ingestion@1.41.0': - resolution: {integrity: sha512-sxU/ggHbZtmrYzTkueTXXNyifn+ozsLP+Wi9S2hOBVhNWPZ8uRiDTDcFyL7cpCs1q72HxPuhzTP5vn4sUl74cQ==} + '@algolia/ingestion@1.46.2': + resolution: {integrity: sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.41.0': - resolution: {integrity: sha512-UQ86R6ixraHUpd0hn4vjgTHbViNO8+wA979gJmSIsRI3yli2v89QSFF/9pPcADR6PbtSio/99PmSNxhZy+CR3Q==} + '@algolia/monitoring@1.46.2': + resolution: {integrity: sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.41.0': - resolution: {integrity: sha512-DxP9P8jJ8whJOnvmyA5mf1wv14jPuI0L25itGfOHSU6d4ZAjduVfPjTS3ROuUN5CJoTdlidYZE+DtfWHxJwyzQ==} + '@algolia/recommend@5.46.2': + resolution: {integrity: sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.41.0': - resolution: {integrity: sha512-C21J+LYkE48fDwtLX7YXZd2Fn7Fe0/DOEtvohSfr/ODP8dGDhy9faaYeWB0n1AvmZltugjkjAXT7xk0CYNIXsQ==} + '@algolia/requester-browser-xhr@5.46.2': + resolution: {integrity: sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.41.0': - resolution: {integrity: sha512-FhJy/+QJhMx1Hajf2LL8og4J7SqOAHiAuUXq27cct4QnPhSIuIGROzeRpfDNH5BUbq22UlMuGd44SeD4HRAqvA==} + '@algolia/requester-fetch@5.46.2': + resolution: {integrity: sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.41.0': - resolution: {integrity: sha512-tYv3rGbhBS0eZ5D8oCgV88iuWILROiemk+tQ3YsAKZv2J4kKUNvKkrX/If/SreRy4MGP2uJzMlyKcfSfO2mrsQ==} + '@algolia/requester-node-http@5.46.2': + resolution: {integrity: sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==} engines: {node: '>= 14.0.0'} - '@amiceli/vitest-cucumber@6.1.0': - resolution: {integrity: sha512-3GE3F8tHBkvf04PbVfH5hopNNwPjlV8ebf7NAfxPaKG31IZTWKl0VvYt0qHNepahdR7MVB6dOpW+e/RTP08FZg==} + '@amiceli/vitest-cucumber@6.2.0': + resolution: {integrity: sha512-tI6845JfzQOVV8gNau4yu5hXW0iipY78cCM5zQvRrcSV8yYrckJT+OECpyXWTEJZuZiDbT4D6TR1IFtM122dlw==} hasBin: true peerDependencies: vitest: ^4.0.4 @@ -1458,8 +1478,8 @@ packages: '@ant-design/colors@7.2.1': resolution: {integrity: sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==} - '@ant-design/colors@8.0.0': - resolution: {integrity: sha512-6YzkKCw30EI/E9kHOIXsQDHmMvTllT8STzjMb4K2qzit33RW2pqCJP0sk+hidBntXxE+Vz4n1+RvCTfBw6OErw==} + '@ant-design/colors@8.0.1': + resolution: {integrity: sha512-foPVl0+SWIslGUtD/xBr1p9U4AKzPhNYEseXYRRo5QSzGACYZrQbe11AYJbYfAWnWSpGBx6JjBmSeugUsD9vqQ==} '@ant-design/cssinjs-utils@1.1.3': resolution: {integrity: sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==} @@ -1516,8 +1536,8 @@ packages: peerDependencies: graphql: 14.x || 15.x || 16.x - '@apollo/client@4.0.8': - resolution: {integrity: sha512-oRnIcQjg8q22Fj1GaBUp+udhJswUtTMPM10v/8qb6xccluUpnYr9hPMiZkd+rcJKfg56OAsRJpvGKr18jkXcuw==} + '@apollo/client@4.0.11': + resolution: {integrity: sha512-jyW5j3DEYnFlYA1Lk9Szd7O/od1DptnbZnj03DQXxuQb+Gnop0w/uQxVRKaU7bPhvVuBnlAtZYPOykArX+xWdg==} peerDependencies: graphql: ^16.0.0 graphql-ws: ^5.5.5 || ^6.0.3 @@ -1619,11 +1639,11 @@ packages: peerDependencies: graphql: '*' - '@as-integrations/azure-functions@0.2.2': - resolution: {integrity: sha512-+tqdnQPF5tlpUCgexKwuamdGDEFNj+u0RqG1eEIXRZ3D7ZiQ20Mq5q3Q4nDPFcNVfcIF1+LVhF9cwLkxeLEJDA==} + '@as-integrations/azure-functions@0.2.3': + resolution: {integrity: sha512-NiP3GRxXLtOed2YDvmKp6Lb5+/DFPM7Eg/zrYnA7RCqdLb3gA0Wj0F6Bl/DubvH83jFjfgmmtI0qSj+T/wKoNw==} engines: {node: '>=18.0'} peerDependencies: - '@apollo/server': ^4.0.0 || ^5.0.0 + '@apollo/server': ^4 || ^5 '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -1668,8 +1688,8 @@ packages: resolution: {integrity: sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==} engines: {node: '>=18.0.0'} - '@azure/core-rest-pipeline@1.22.1': - resolution: {integrity: sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==} + '@azure/core-rest-pipeline@1.22.2': + resolution: {integrity: sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==} engines: {node: '>=20.0.0'} '@azure/core-tracing@1.3.1': @@ -1680,6 +1700,10 @@ packages: resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==} engines: {node: '>=20.0.0'} + '@azure/functions-extensions-base@0.2.0': + resolution: {integrity: sha512-ncCkHBNQYJa93dBIh+toH0v1iSgCzSo9tr94s6SMBe7DPWREkaWh8cq33A5P4rPSFX1g5W+3SPvIzDr/6/VOWQ==} + engines: {node: '>=18.0'} + '@azure/functions-opentelemetry-instrumentation@0.1.0': resolution: {integrity: sha512-eRitTbOUDhlzc4o2Q9rjbXiMYa/ep06m2jIkN7HOuLP0aHnjPh3zHXtqji/NyeqT/GfHjCgJr+r8+49s7KER7w==} engines: {node: '>=18.0'} @@ -1689,9 +1713,9 @@ packages: '@azure/functions@3.5.1': resolution: {integrity: sha512-6UltvJiuVpvHSwLcK/Zc6NfUwlkDLOFFx97BHCJzlWNsfiWwzwmTsxJXg4kE/LemKTHxPpfoPE+kOJ8hAdiKFQ==} - '@azure/functions@4.8.0': - resolution: {integrity: sha512-LNtl3xZNE40vE7+SIST+GYQX5cnnI1M65fXPi26l9XCdPakuQrz54lHv+qQQt1GG5JbqLfQk75iM7A6Y9O+2dQ==} - engines: {node: '>=18.0'} + '@azure/functions@4.10.0': + resolution: {integrity: sha512-hJ58IrZ4vyzcD/2FXTAoBr9iJO1gtb7jUbdU0lCOYOIeQNezVjNXaqLjECuP0GMGVq12RsqZoDfTRNo8xqcLYg==} + engines: {node: '>=20.0'} '@azure/identity@3.4.2': resolution: {integrity: sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==} @@ -2371,8 +2395,8 @@ packages: cpu: [x64] os: [win32] - '@chromatic-com/storybook@4.1.2': - resolution: {integrity: sha512-QAWGtHwib0qsP5CcO64aJCF75zpFgpKK3jNpxILzQiPK3sVo4EmnVGJVdwcZWpWrGdH8E4YkncGoitw4EXzKMg==} + '@chromatic-com/storybook@4.1.3': + resolution: {integrity: sha512-hc0HO9GAV9pxqDE6fTVOV5KeLpTiCfV8Jrpk5ogKLiIgeq2C+NPjpt74YnrZTjiK8E19fYcMP+2WY9ZtX7zHmw==} engines: {node: '>=20.0.0', yarn: '>=1.22.18'} peerDependencies: storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 @@ -2593,12 +2617,24 @@ packages: peerDependencies: postcss: ^8.4 + '@csstools/postcss-position-area-property@1.0.0': + resolution: {integrity: sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@csstools/postcss-progressive-custom-properties@4.2.1': resolution: {integrity: sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 + '@csstools/postcss-property-rule-prelude-list@1.0.0': + resolution: {integrity: sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@csstools/postcss-random-function@2.0.1': resolution: {integrity: sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==} engines: {node: '>=18'} @@ -2629,6 +2665,18 @@ packages: peerDependencies: postcss: ^8.4 + '@csstools/postcss-syntax-descriptor-syntax-production@1.0.1': + resolution: {integrity: sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-system-ui-font-family@1.0.0': + resolution: {integrity: sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@csstools/postcss-text-decoration-shorthand@4.0.3': resolution: {integrity: sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==} engines: {node: '>=18'} @@ -2744,11 +2792,25 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - '@docsearch/css@3.9.0': - resolution: {integrity: sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA==} + '@docsearch/core@4.4.0': + resolution: {integrity: sha512-kiwNo5KEndOnrf5Kq/e5+D9NBMCFgNsDoRpKQJ9o/xnSlheh6b8AXppMuuUVVdAUIhIfQFk/07VLjjk/fYyKmw==} + peerDependencies: + '@types/react': '>= 16.8.0 < 20.0.0' + react: '>= 16.8.0 < 20.0.0' + react-dom: '>= 16.8.0 < 20.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + react-dom: + optional: true + + '@docsearch/css@4.4.0': + resolution: {integrity: sha512-e9vPgtih6fkawakmYo0Y6V4BKBmDV7Ykudn7ADWXUs5b6pmtBRwDbpSG/WiaUG63G28OkJDEnsMvgIAnZgGwYw==} - '@docsearch/react@3.9.0': - resolution: {integrity: sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ==} + '@docsearch/react@4.4.0': + resolution: {integrity: sha512-z12zeg1mV7WD4Ag4pKSuGukETJLaucVFwszDXL/qLaEgRqxEaVacO9SR1qqnCXvZztlvz2rt7cMqryi/7sKfjA==} peerDependencies: '@types/react': '>= 16.8.0 < 20.0.0' react: '>= 16.8.0 < 20.0.0' @@ -2931,11 +2993,11 @@ packages: resolution: {integrity: sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==} engines: {node: '>=20.0'} - '@emnapi/core@1.7.1': - resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} + '@emnapi/core@1.8.1': + resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} @@ -2946,8 +3008,8 @@ packages: '@emotion/unitless@0.7.5': resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - '@envelop/core@5.3.2': - resolution: {integrity: sha512-06Mu7fmyKzk09P2i2kHpGfItqLLgCq7uO5/nX4fc/iHMplWPNuAx4iYR+WXUQoFHDnP6EUbceQNQ5iyeMz9f3g==} + '@envelop/core@5.4.0': + resolution: {integrity: sha512-/1fat63pySE8rw/dZZArEVytLD90JApY85deDJ0/34gm+yhQ3k70CloSUevxoOE4YCGveG3s9SJJfQeeB4NAtQ==} engines: {node: '>=18.0.0'} '@envelop/instrumentation@1.0.0': @@ -2958,12 +3020,6 @@ packages: resolution: {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} engines: {node: '>=18.0.0'} - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.25.12': resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} @@ -2976,12 +3032,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} @@ -2994,12 +3044,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} @@ -3012,12 +3056,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -3030,12 +3068,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} @@ -3048,12 +3080,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} @@ -3066,12 +3092,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -3084,12 +3104,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} @@ -3102,12 +3116,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} @@ -3120,12 +3128,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} @@ -3138,12 +3140,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} @@ -3156,12 +3152,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} @@ -3174,12 +3164,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} @@ -3192,12 +3176,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} @@ -3210,12 +3188,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -3228,12 +3200,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} @@ -3246,12 +3212,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -3264,12 +3224,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -3282,12 +3236,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -3300,12 +3248,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -3318,12 +3260,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -3336,12 +3272,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -3354,12 +3284,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} @@ -3372,12 +3296,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} @@ -3390,12 +3308,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} @@ -3408,12 +3320,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} @@ -3426,8 +3332,8 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -3444,20 +3350,16 @@ packages: resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.16.0': - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.17.0': resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/eslintrc@3.3.3': + resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.38.0': - resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} + '@eslint/js@9.39.2': + resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.7': @@ -3570,8 +3472,8 @@ packages: resolution: {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} engines: {node: '>=18.0.0'} - '@graphql-tools/apollo-engine-loader@8.0.22': - resolution: {integrity: sha512-ssD2wNxeOTRcUEkuGcp0KfZAGstL9YLTe/y3erTDZtOs2wL1TJESw8NVAp+3oUHPeHKBZQB4Z6RFEbPgMdT2wA==} + '@graphql-tools/apollo-engine-loader@8.0.28': + resolution: {integrity: sha512-MzgDrUuoxp6dZeo54zLBL3cEJKJtM3N/2RqK0rbPxPq5X2z6TUA7EGg8vIFTUkt5xelAsUrm8/4ai41ZDdxOng==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3587,8 +3489,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/code-file-loader@8.1.22': - resolution: {integrity: sha512-FSka29kqFkfFmw36CwoQ+4iyhchxfEzPbXOi37lCEjWLHudGaPkXc3RyB9LdmBxx3g3GHEu43a5n5W8gfcrMdA==} + '@graphql-tools/code-file-loader@8.1.28': + resolution: {integrity: sha512-BL3Ft/PFlXDE5nNuqA36hYci7Cx+8bDrPDc8X3VSpZy9iKFBY+oQ+IwqnEHCkt8OSp2n2V0gqTg4u3fcQP1Kwg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3634,20 +3536,20 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/executor-legacy-ws@1.1.19': - resolution: {integrity: sha512-bEbv/SlEdhWQD0WZLUX1kOenEdVZk1yYtilrAWjRUgfHRZoEkY9s+oiqOxnth3z68wC2MWYx7ykkS5hhDamixg==} + '@graphql-tools/executor-legacy-ws@1.1.25': + resolution: {integrity: sha512-6uf4AEXO0QMxJ7AWKVPqEZXgYBJaiz5vf29X0boG8QtcqWy8mqkXKWLND2Swdx0SbEx0efoGFcjuKufUcB0ASQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/executor@1.4.9': - resolution: {integrity: sha512-SAUlDT70JAvXeqV87gGzvDzUGofn39nvaVcVhNf12Dt+GfWHtNNO/RCn/Ea4VJaSLGzraUd41ObnN3i80EBU7w==} + '@graphql-tools/executor@1.5.1': + resolution: {integrity: sha512-n94Qcu875Mji9GQ52n5UbgOTxlgvFJicBPYD+FRks9HKIQpdNPjkkrKZUYNG51XKa+bf03rxNflm4+wXhoHHrA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/git-loader@8.0.26': - resolution: {integrity: sha512-0g+9eng8DaT4ZmZvUmPgjLTgesUa6M8xrDjNBltRldZkB055rOeUgJiKmL6u8PjzI5VxkkVsn0wtAHXhDI2UXQ==} + '@graphql-tools/git-loader@8.0.32': + resolution: {integrity: sha512-H5HTp2vevv0rRMEnCJBVmVF8md3LpJI1C1+d6OtzvmuONJ8mOX2mkf9rtoqwiztynVegaDUekvMFsc9k5iE2WA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3658,26 +3560,26 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/graphql-file-loader@8.1.2': - resolution: {integrity: sha512-VB6ttpwkqCu0KsA1/Wmev4qsu05Qfw49kgVSKkPjuyDQfVaqtr9ewEQRkX5CqnqHGEeLl6sOlNGEMM5fCVMWGQ==} + '@graphql-tools/graphql-file-loader@8.1.9': + resolution: {integrity: sha512-rkLK46Q62Zxift8B6Kfw6h8SH3pCR3DPCfNeC/lpLwYReezZz+2ARuLDFZjQGjW+4lpMwiAw8CIxDyQAUgqU6A==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/graphql-tag-pluck@8.3.21': - resolution: {integrity: sha512-TJhELNvR1tmghXMi6HVKp/Swxbx1rcSp/zdkuJZT0DCM3vOY11FXY6NW3aoxumcuYDNN3jqXcCPKstYGFPi5GQ==} + '@graphql-tools/graphql-tag-pluck@8.3.27': + resolution: {integrity: sha512-CJ0WVXhGYsfFngpRrAAcjRHyxSDHx4dEz2W15bkwvt9he/AWhuyXm07wuGcoLrl0q0iQp1BiRjU7D8SxWZo3JQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/import@7.1.2': - resolution: {integrity: sha512-+tlNQbLEqAA4LdWoLwM1tckx95lo8WIKd8vhj99b9rLwN/KfLwHWzdS3jnUFK7+99vmHmN1oE5v5zmqJz0MTKw==} + '@graphql-tools/import@7.1.9': + resolution: {integrity: sha512-mHzOgyfzsAgstaZPIFEtKg4GVH4FbDHeHYrSs73mAPKS5F59/FlRuUJhAoRnxbVnc3qIZ6EsWBjOjNbnPK8viA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/json-file-loader@8.0.20': - resolution: {integrity: sha512-5v6W+ZLBBML5SgntuBDLsYoqUvwfNboAwL6BwPHi3z/hH1f8BS9/0+MCW9OGY712g7E4pc3y9KqS67mWF753eA==} + '@graphql-tools/json-file-loader@8.0.26': + resolution: {integrity: sha512-kwy9IFi5QtXXTLBgWkvA1RqsZeJDn0CxsTbhNlziCzmga9fNo7qtZ18k9FYIq3EIoQQlok+b7W7yeyJATA2xhw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3688,8 +3590,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/load@8.1.2': - resolution: {integrity: sha512-WhDPv25/jRND+0uripofMX0IEwo6mrv+tJg6HifRmDu8USCD7nZhufT0PP7lIcuutqjIQFyogqT70BQsy6wOgw==} + '@graphql-tools/load@8.1.8': + resolution: {integrity: sha512-gxO662b64qZSToK3N6XUxWG5E6HOUjlg5jEnmGvD4bMtGJ0HwEe/BaVZbBQemCfLkxYjwRIBiVfOY9o0JyjZJg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3699,8 +3601,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@9.1.1': - resolution: {integrity: sha512-BJ5/7Y7GOhTuvzzO5tSBFL4NGr7PVqTJY3KeIDlVTT8YLcTXtBR+hlrC3uyEym7Ragn+zyWdHeJ9ev+nRX1X2w==} + '@graphql-tools/merge@9.1.7': + resolution: {integrity: sha512-Y5E1vTbTabvcXbkakdFUt4zUIzB1fyaEnVmIWN0l0GMed2gdD01TpZWLUm4RNAxpturvolrb24oGLQrBbPLSoQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3718,14 +3620,14 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/relay-operation-optimizer@7.0.21': - resolution: {integrity: sha512-vMdU0+XfeBh9RCwPqRsr3A05hPA3MsahFn/7OAwXzMySA5EVnSH5R4poWNs3h1a0yT0tDPLhxORhK7qJdSWj2A==} + '@graphql-tools/relay-operation-optimizer@7.0.27': + resolution: {integrity: sha512-rdkL1iDMFaGDiHWd7Bwv7hbhrhnljkJaD0MXeqdwQlZVgVdUDlMot2WuF7CEKVgijpH6eSC6AxXMDeqVgSBS2g==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/schema@10.0.25': - resolution: {integrity: sha512-/PqE8US8kdQ7lB9M5+jlW8AyVjRGCKU7TSktuW3WNKSKmDO0MK1wakvb5gGdyT49MjAIb4a3LWxIpwo5VygZuw==} + '@graphql-tools/schema@10.0.31': + resolution: {integrity: sha512-ZewRgWhXef6weZ0WiP7/MV47HXiuFbFpiDUVLQl6mgXsWSsGELKFxQsyUCBos60Qqy1JEFAIu3Ns6GGYjGkqkQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3741,8 +3643,14 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/utils@10.9.1': - resolution: {integrity: sha512-B1wwkXk9UvU7LCBkPs8513WxOQ2H8Fo5p8HR1+Id9WmYE5+bd51vqN+MbrqvWczHCH2gwkREgHJN88tE0n1FCw==} + '@graphql-tools/utils@10.11.0': + resolution: {integrity: sha512-iBFR9GXIs0gCD+yc3hoNswViL1O5josI33dUqiNStFI/MHLCEPduasceAcazRH77YONKNiviHBV8f7OgcT4o2Q==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/utils@11.0.0': + resolution: {integrity: sha512-bM1HeZdXA2C3LSIeLOnH/bcqSgbQgKEDrjxODjqi3y58xai2TkNrtYcQSoWzGbt9VMN1dORGjR7Vem8SPnUFQA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -3763,8 +3671,8 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@grpc/grpc-js@1.14.0': - resolution: {integrity: sha512-N8Jx6PaYzcTRNzirReJCtADVoq4z7+1KQ4E70jTg/koQiMoUSN1kbNjPOqpPbhMFhfU1/l7ixspPl8dNY+FoUg==} + '@grpc/grpc-js@1.14.3': + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} engines: {node: '>=12.10.0'} '@grpc/proto-loader@0.8.0': @@ -3794,8 +3702,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/external-editor@1.0.2': - resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3914,11 +3822,11 @@ packages: '@microsoft/applicationinsights-web-snippet@1.0.1': resolution: {integrity: sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==} - '@mongodb-js/saslprep@1.3.2': - resolution: {integrity: sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==} + '@mongodb-js/saslprep@1.4.4': + resolution: {integrity: sha512-p7X/ytJDIdwUfFL/CLOhKgdfJe1Fa8uw9seJYvdOmnP9JBWGWHW69HkOixXS6Wy9yvGf1MbhcS6lVmrhy4jm2g==} - '@napi-rs/wasm-runtime@1.1.0': - resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} '@neoconfetti/react@1.0.0': resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==} @@ -3973,8 +3881,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@2.2.0': - resolution: {integrity: sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==} + '@opentelemetry/core@2.3.0': + resolution: {integrity: sha512-PcmxJQzs31cfD0R2dE91YGFcLxOSN4Bxz7gez5UwSUjCai8BwH/GI5HchfVshHkWdTkUs0qcaPJgVHKXUp7I3A==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -4123,8 +4031,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@2.2.0': - resolution: {integrity: sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==} + '@opentelemetry/resources@2.3.0': + resolution: {integrity: sha512-shlr2l5g+87J8wqYlsLyaUsgKVRO7RtX70Ckd5CtDOWtImZgaUDmf4Z2ozuSKQLM2wPDR0TE/3bPVBNJtRm/cQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' @@ -4153,8 +4061,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.2.0': - resolution: {integrity: sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==} + '@opentelemetry/sdk-trace-base@2.3.0': + resolution: {integrity: sha512-B0TQ2e9h0ETjpI+eGmCz8Ojb+lnYms0SE3jFwEKrN/PK4aSVHU28AAmnOoBmfub+I3jfgPwvDJgomBA5a7QehQ==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' @@ -4165,8 +4073,8 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-web@2.2.0': - resolution: {integrity: sha512-x/LHsDBO3kfqaFx5qSzBljJ5QHsRXrvS4MybBDy1k7Svidb8ZyIPudWVzj3s5LpPkYZIgi9e+7tdsNCnptoelw==} + '@opentelemetry/sdk-trace-web@2.3.0': + resolution: {integrity: sha512-HwsfSVbG1JnW/KfxCQ0G6LtzWiSeEUyyj3s/HIxFenaLRsCQMB18N9y64Kkx6t/aLRCPkSZVqITxWbbqqvl5Xw==} engines: {node: ^18.19.0 || >=20.6.0} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' @@ -4179,112 +4087,112 @@ packages: resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} - '@opentelemetry/semantic-conventions@1.37.0': - resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} + '@opentelemetry/semantic-conventions@1.38.0': + resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==} engines: {node: '>=14'} - '@oxc-resolver/binding-android-arm-eabi@11.15.0': - resolution: {integrity: sha512-Q+lWuFfq7whNelNJIP1dhXaVz4zO9Tu77GcQHyxDWh3MaCoO2Bisphgzmsh4ZoUe2zIchQh6OvQL99GlWHg9Tw==} + '@oxc-resolver/binding-android-arm-eabi@11.16.2': + resolution: {integrity: sha512-lVJbvydLQIDZHKUb6Zs9Rq80QVTQ9xdCQE30eC9/cjg4wsMoEOg65QZPymUAIVJotpUAWJD0XYcwE7ugfxx5kQ==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.15.0': - resolution: {integrity: sha512-vbdBttesHR0W1oJaxgWVTboyMUuu+VnPsHXJ6jrXf4czELzB6GIg5DrmlyhAmFBhjwov+yJH/DfTnHS+2sDgOw==} + '@oxc-resolver/binding-android-arm64@11.16.2': + resolution: {integrity: sha512-fEk+g/g2rJ6LnBVPqeLcx+/alWZ/Db1UlXG+ZVivip0NdrnOzRL48PAmnxTMGOrLwsH1UDJkwY3wOjrrQltCqg==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.15.0': - resolution: {integrity: sha512-R67lsOe1UzNjqVBCwCZX1rlItTsj/cVtBw4Uy19CvTicqEWvwaTn8t34zLD75LQwDDPCY3C8n7NbD+LIdw+ZoA==} + '@oxc-resolver/binding-darwin-arm64@11.16.2': + resolution: {integrity: sha512-Pkbp1qi7kdUX6k3Fk1PvAg6p7ruwaWKg1AhOlDgrg2vLXjtv9ZHo7IAQN6kLj0W771dPJZWqNxoqTPacp2oYWA==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.15.0': - resolution: {integrity: sha512-77mya5F8WV0EtCxI0MlVZcqkYlaQpfNwl/tZlfg4jRsoLpFbaTeWv75hFm6TE84WULVlJtSgvf7DhoWBxp9+ZQ==} + '@oxc-resolver/binding-darwin-x64@11.16.2': + resolution: {integrity: sha512-FYCGcU1iSoPkADGLfQbuj0HWzS+0ItjDCt9PKtu2Hzy6T0dxO4Y1enKeCOxCweOlmLEkSxUlW5UPT4wvT3LnAg==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.15.0': - resolution: {integrity: sha512-X1Sz7m5PC+6D3KWIDXMUtux+0Imj6HfHGdBStSvgdI60OravzI1t83eyn6eN0LPTrynuPrUgjk7tOnOsBzSWHw==} + '@oxc-resolver/binding-freebsd-x64@11.16.2': + resolution: {integrity: sha512-1zHCoK6fMcBjE54P2EG/z70rTjcRxvyKfvk4E/QVrWLxNahuGDFZIxoEoo4kGnnEcmPj41F0c2PkrQbqlpja5g==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0': - resolution: {integrity: sha512-L1x/wCaIRre+18I4cH/lTqSAymlV0k4HqfSYNNuI9oeL28Ks86lI6O5VfYL6sxxWYgjuWB98gNGo7tq7d4GarQ==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.2': + resolution: {integrity: sha512-+ucLYz8EO5FDp6kZ4o1uDmhoP+M98ysqiUW4hI3NmfiOJQWLrAzQjqaTdPfIOzlCXBU9IHp5Cgxu6wPjVb8dbA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0': - resolution: {integrity: sha512-abGXd/zMGa0tH8nKlAXdOnRy4G7jZmkU0J85kMKWns161bxIgGn/j7zxqh3DKEW98wAzzU9GofZMJ0P5YCVPVw==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.16.2': + resolution: {integrity: sha512-qq+TpNXyw1odDgoONRpMLzH4hzhwnEw55398dL8rhKGvvYbio71WrJ00jE+hGlEi7H1Gkl11KoPJRaPlRAVGPw==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.15.0': - resolution: {integrity: sha512-SVjjjtMW66Mza76PBGJLqB0KKyFTBnxmtDXLJPbL6ZPGSctcXVmujz7/WAc0rb9m2oV0cHQTtVjnq6orQnI/jg==} + '@oxc-resolver/binding-linux-arm64-gnu@11.16.2': + resolution: {integrity: sha512-xlMh4gNtplNQEwuF5icm69udC7un0WyzT5ywOeHrPMEsghKnLjXok2wZgAA7ocTm9+JsI+nVXIQa5XO1x+HPQg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-arm64-musl@11.15.0': - resolution: {integrity: sha512-JDv2/AycPF2qgzEiDeMJCcSzKNDm3KxNg0KKWipoKEMDFqfM7LxNwwSVyAOGmrYlE4l3dg290hOMsr9xG7jv9g==} + '@oxc-resolver/binding-linux-arm64-musl@11.16.2': + resolution: {integrity: sha512-OZs33QTMi0xmHv/4P0+RAKXJTBk7UcMH5tpTaCytWRXls/DGaJ48jOHmriQGK2YwUqXl+oneuNyPOUO0obJ+Hg==} cpu: [arm64] os: [linux] - '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0': - resolution: {integrity: sha512-zbu9FhvBLW4KJxo7ElFvZWbSt4vP685Qc/Gyk/Ns3g2gR9qh2qWXouH8PWySy+Ko/qJ42+HJCLg+ZNcxikERfg==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.16.2': + resolution: {integrity: sha512-UVyuhaV32dJGtF6fDofOcBstg9JwB2Jfnjfb8jGlu3xcG+TsubHRhuTwQ6JZ1sColNT1nMxBiu7zdKUEZi1kwg==} cpu: [ppc64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0': - resolution: {integrity: sha512-Kfleehe6B09C2qCnyIU01xLFqFXCHI4ylzkicfX/89j+gNHh9xyNdpEvit88Kq6i5tTGdavVnM6DQfOE2qNtlg==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.16.2': + resolution: {integrity: sha512-YZZS0yv2q5nE1uL/Fk4Y7m9018DSEmDNSG8oJzy1TJjA1jx5HL52hEPxi98XhU6OYhSO/vC1jdkJeE8TIHugug==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-riscv64-musl@11.15.0': - resolution: {integrity: sha512-J7LPiEt27Tpm8P+qURDwNc8q45+n+mWgyys4/V6r5A8v5gDentHRGUx3iVk5NxdKhgoGulrzQocPTZVosq25Eg==} + '@oxc-resolver/binding-linux-riscv64-musl@11.16.2': + resolution: {integrity: sha512-9VYuypwtx4kt1lUcwJAH4dPmgJySh4/KxtAPdRoX2BTaZxVm/yEXHq0mnl/8SEarjzMvXKbf7Cm6UBgptm3DZw==} cpu: [riscv64] os: [linux] - '@oxc-resolver/binding-linux-s390x-gnu@11.15.0': - resolution: {integrity: sha512-+8/d2tAScPjVJNyqa7GPGnqleTB/XW9dZJQ2D/oIM3wpH3TG+DaFEXBbk4QFJ9K9AUGBhvQvWU2mQyhK/yYn3Q==} + '@oxc-resolver/binding-linux-s390x-gnu@11.16.2': + resolution: {integrity: sha512-3gbwQ+xlL5gpyzgSDdC8B4qIM4mZaPDLaFOi3c/GV7CqIdVJc5EZXW4V3T6xwtPBOpXPXfqQLbhTnUD4SqwJtA==} cpu: [s390x] os: [linux] - '@oxc-resolver/binding-linux-x64-gnu@11.15.0': - resolution: {integrity: sha512-xtvSzH7Nr5MCZI2FKImmOdTl9kzuQ51RPyLh451tvD2qnkg3BaqI9Ox78bTk57YJhlXPuxWSOL5aZhKAc9J6qg==} + '@oxc-resolver/binding-linux-x64-gnu@11.16.2': + resolution: {integrity: sha512-m0WcK0j54tSwWa+hQaJMScZdWneqE7xixp/vpFqlkbhuKW9dRHykPAFvSYg1YJ3MJgu9ZzVNpYHhPKJiEQq57Q==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-linux-x64-musl@11.15.0': - resolution: {integrity: sha512-14YL1zuXj06+/tqsuUZuzL0T425WA/I4nSVN1kBXeC5WHxem6lQ+2HGvG+crjeJEqHgZUT62YIgj88W+8E7eyg==} + '@oxc-resolver/binding-linux-x64-musl@11.16.2': + resolution: {integrity: sha512-ZjUm3w96P2t47nWywGwj1A2mAVBI/8IoS7XHhcogWCfXnEI3M6NPIRQPYAZW4s5/u3u6w1uPtgOwffj2XIOb/g==} cpu: [x64] os: [linux] - '@oxc-resolver/binding-openharmony-arm64@11.15.0': - resolution: {integrity: sha512-/7Qli+1Wk93coxnrQaU8ySlICYN8HsgyIrzqjgIkQEpI//9eUeaeIHZptNl2fMvBGeXa7k2QgLbRNaBRgpnvMw==} + '@oxc-resolver/binding-openharmony-arm64@11.16.2': + resolution: {integrity: sha512-OFVQ2x3VenTp13nIl6HcQ/7dmhFmM9dg2EjKfHcOtYfrVLQdNR6THFU7GkMdmc8DdY1zLUeilHwBIsyxv5hkwQ==} cpu: [arm64] os: [openharmony] - '@oxc-resolver/binding-wasm32-wasi@11.15.0': - resolution: {integrity: sha512-q5rn2eIMQLuc/AVGR2rQKb2EVlgreATGG8xXg8f4XbbYCVgpxaq+dgMbiPStyNywW1MH8VU2T09UEm30UtOQvg==} + '@oxc-resolver/binding-wasm32-wasi@11.16.2': + resolution: {integrity: sha512-+O1sY3RrGyA2AqDnd3yaDCsqZqCblSTEpY7TbbaOaw0X7iIbGjjRLdrQk9StG3QSiZuBy9FdFwotIiSXtwvbAQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.15.0': - resolution: {integrity: sha512-yCAh2RWjU/8wWTxQDgGPgzV9QBv0/Ojb5ej1c/58iOjyTuy/J1ZQtYi2SpULjKmwIxLJdTiCHpMilauWimE31w==} + '@oxc-resolver/binding-win32-arm64-msvc@11.16.2': + resolution: {integrity: sha512-jMrMJL+fkx6xoSMFPOeyQ1ctTFjavWPOSZEKUY5PebDwQmC9cqEr4LhdTnGsOtFrWYLXlEU4xWeMdBoc/XKkOA==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-ia32-msvc@11.15.0': - resolution: {integrity: sha512-lmXKb6lvA6M6QIbtYfgjd+AryJqExZVSY2bfECC18OPu7Lv1mHFF171Mai5l9hG3r4IhHPPIwT10EHoilSCYeA==} + '@oxc-resolver/binding-win32-ia32-msvc@11.16.2': + resolution: {integrity: sha512-tl0xDA5dcQplG2yg2ZhgVT578dhRFafaCfyqMEAXq8KNpor85nJ53C3PLpfxD2NKzPioFgWEexNsjqRi+kW2Mg==} cpu: [ia32] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.15.0': - resolution: {integrity: sha512-HZsfne0s/tGOcJK9ZdTGxsNU2P/dH0Shf0jqrPvsC6wX0Wk+6AyhSpHFLQCnLOuFQiHHU0ePfM8iYsoJb5hHpQ==} + '@oxc-resolver/binding-win32-x64-msvc@11.16.2': + resolution: {integrity: sha512-M7z0xjYQq1HdJk2DxTSLMvRMyBSI4wn4FXGcVQBsbAihgXevAReqwMdb593nmCK/OiFwSNcOaGIzUvzyzQ+95w==} cpu: [x64] os: [win32] - '@paralleldrive/cuid2@2.2.2': - resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + '@paralleldrive/cuid2@2.3.1': + resolution: {integrity: sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==} '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} @@ -4372,8 +4280,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.56.1': - resolution: {integrity: sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==} + '@playwright/test@1.57.0': + resolution: {integrity: sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==} engines: {node: '>=18'} hasBin: true @@ -4422,8 +4330,8 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rc-component/async-validator@5.0.4': - resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} + '@rc-component/async-validator@5.1.0': + resolution: {integrity: sha512-n4HcR5siNUXRX23nDizbZBQPO0ZM/5oTtmKZ6/eqL0L2bo747cklFdZGRN2f+c9qWGICwDzrhW0H7tE9PptdcA==} engines: {node: '>=14.x'} '@rc-component/color-picker@2.0.1': @@ -4456,8 +4364,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - '@rc-component/qrcode@1.0.1': - resolution: {integrity: sha512-g8eeeaMyFXVlq8cZUeaxCDhfIYjpao0l9cvm5gFwKXy/Vm1yDWV7h2sjH5jHYzdFedlVKBpATFB1VKMrHzwaWQ==} + '@rc-component/qrcode@1.1.1': + resolution: {integrity: sha512-LfLGNymzKdUPjXUbRP+xOhIWY4jQ+YMj5MmWAcgcAq1Ij8XP7tRmAXqyuv96XvLUBE/5cA8hLFl9eO1JQMujrA==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -4477,8 +4385,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - '@rc-component/util@1.3.0': - resolution: {integrity: sha512-hfXE04CVsxI/slmWKeSh6du7sSKpbvVdVEZCa8A+2QWDlL97EsCYme2c3ZWLn1uC9FR21JoewlrhUPWO4QgO8w==} + '@rc-component/util@1.7.0': + resolution: {integrity: sha512-tIvIGj4Vl6fsZFvWSkYw9sAfiCKUXMyhVz6kpKyZbwyZyRPqv2vxYZROdaO1VB4gqTNvUZFXh6i3APUiterw5g==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' @@ -4498,113 +4406,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.5': - resolution: {integrity: sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==} + '@rollup/rollup-android-arm-eabi@4.55.1': + resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.5': - resolution: {integrity: sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==} + '@rollup/rollup-android-arm64@4.55.1': + resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.5': - resolution: {integrity: sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==} + '@rollup/rollup-darwin-arm64@4.55.1': + resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.5': - resolution: {integrity: sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==} + '@rollup/rollup-darwin-x64@4.55.1': + resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.5': - resolution: {integrity: sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==} + '@rollup/rollup-freebsd-arm64@4.55.1': + resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.5': - resolution: {integrity: sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==} + '@rollup/rollup-freebsd-x64@4.55.1': + resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': - resolution: {integrity: sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==} + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.5': - resolution: {integrity: sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==} + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.5': - resolution: {integrity: sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==} + '@rollup/rollup-linux-arm64-gnu@4.55.1': + resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.5': - resolution: {integrity: sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==} + '@rollup/rollup-linux-arm64-musl@4.55.1': + resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.5': - resolution: {integrity: sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==} + '@rollup/rollup-linux-loong64-gnu@4.55.1': + resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.5': - resolution: {integrity: sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==} + '@rollup/rollup-linux-loong64-musl@4.55.1': + resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.55.1': + resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.5': - resolution: {integrity: sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==} + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.5': - resolution: {integrity: sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==} + '@rollup/rollup-linux-riscv64-musl@4.55.1': + resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.5': - resolution: {integrity: sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==} + '@rollup/rollup-linux-s390x-gnu@4.55.1': + resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.5': - resolution: {integrity: sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==} + '@rollup/rollup-linux-x64-gnu@4.55.1': + resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.5': - resolution: {integrity: sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==} + '@rollup/rollup-linux-x64-musl@4.55.1': + resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.5': - resolution: {integrity: sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==} + '@rollup/rollup-openbsd-x64@4.55.1': + resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.55.1': + resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.5': - resolution: {integrity: sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==} + '@rollup/rollup-win32-arm64-msvc@4.55.1': + resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.5': - resolution: {integrity: sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==} + '@rollup/rollup-win32-ia32-msvc@4.55.1': + resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.5': - resolution: {integrity: sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==} + '@rollup/rollup-win32-x64-gnu@4.55.1': + resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.5': - resolution: {integrity: sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==} + '@rollup/rollup-win32-x64-msvc@4.55.1': + resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} cpu: [x64] os: [win32] @@ -4644,21 +4567,21 @@ packages: resolution: {integrity: sha512-zCKpyDIWKHwtervNK2ZlaK8mMV7gVUijAgFeJStH+CU/imcdquizV3pFLlSQYRswG+Lbyd6CT/LGRh3IbtkCFw==} engines: {node: '>=8'} - '@serenity-js/assertions@3.35.2': - resolution: {integrity: sha512-Lm76gzSYDXqM5n6+zTw2WBmy3mqgZbj7pLVa17OafJEEPwnUP3Td0B/Pzn4QYq5I4EZrMSK8t/tYgjvklS3hFw==} - engines: {node: ^18.12 || ^20 || ^22} + '@serenity-js/assertions@3.37.1': + resolution: {integrity: sha512-AfNrbOafOeAWFcdA5H85HCvYiCGuyaTC+lG+SNawRTl+0p6CIYFx3yS8ITZpw7jYkITLEEplKA8Wwo76psAG1A==} + engines: {node: ^20 || ^22 || ^24} - '@serenity-js/console-reporter@3.35.2': - resolution: {integrity: sha512-gulRTet0lRXn/oC6Qdh+K+7oNuGNikdOtG1KMN/f3BfAAN338e9aSGPBhEYKqkrBXLqTBWX8/0Pfs70a6gutvA==} - engines: {node: ^18.12 || ^20 || ^22} + '@serenity-js/console-reporter@3.37.1': + resolution: {integrity: sha512-yq0RmldxF3Zj15BaDCG7cr8VKfIAZf3nKJ4LXSN11kJXe8M6b6Rcc54LgC/oNd3iZ0EkWEPvLkNxJUHTGbe16Q==} + engines: {node: ^20 || ^22 || ^24} - '@serenity-js/core@3.35.2': - resolution: {integrity: sha512-Oy/g3PQmyNHR4zo3N1K6f+texVLgW53ZaCzrdm9eYsFDaRZdQ/kKlYb8cAyZtMNUEuERUp2nKgiKWP0Tu1tsiQ==} - engines: {node: ^18.12 || ^20 || ^22} + '@serenity-js/core@3.37.1': + resolution: {integrity: sha512-gyc1HlSkN3mIe9S0fOYn2PdPzP5Q5+L7ujzVCHK8wQfEw7W86DFsgWz6MVnOMee5jWRTo+cQTfz/JMcK4ryszg==} + engines: {node: ^20 || ^22 || ^24} - '@serenity-js/cucumber@3.35.2': - resolution: {integrity: sha512-Urw1LPs/syOGKJh7MFGsCRkvpj93zSL/zd2h0PcaOGYY9G8MEjTenH6vnytQOOYvHWoOSGGZDOy7Vo2R3/QIDw==} - engines: {node: ^18.12 || ^20 || ^22} + '@serenity-js/cucumber@3.37.1': + resolution: {integrity: sha512-EVlbvGW2YLnUwVkc7jQRls65tQbP7N1QtvvzncYDyXSWXhFO/QwRcnFXrv4Fpu8+TqQhhuJ0FbKgAQWxL7ocCw==} + engines: {node: ^20 || ^22 || ^24} peerDependencies: '@cucumber/cucumber': ^7.3.2 || ^8.5.0 || ^9.1.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 cucumber: ^1.3.3 || ^2.3.1 || ^3.2.1 || ^4.2.1 || ^5.0.0 || ^6.0.0 @@ -4668,13 +4591,13 @@ packages: cucumber: optional: true - '@serenity-js/rest@3.35.2': - resolution: {integrity: sha512-ZAyKqN12lxQh0DkSlRLG1wl7w9E3s/0xwE0F/EM/FVJCKbi1VxRgYKNWBF1wHXfhT6W2rthIa2GwQ/z1z7irxA==} - engines: {node: ^18.12 || ^20 || ^22} + '@serenity-js/rest@3.37.1': + resolution: {integrity: sha512-xiZt5j8QVYSuH+moXUbUEpXGUfpgBhBr8NnEU32ijwFK+nXjDoIAA3uPN6CTZcK4/1qz7Hw/iqp/o+4cynxMYQ==} + engines: {node: ^20 || ^22 || ^24} - '@serenity-js/serenity-bdd@3.35.2': - resolution: {integrity: sha512-LaoPzPEGnOh3HTBgPXK8+sJhj4IFmAfRfrFGZqBhQxmaxNwJdSjfe6CZns4sMcCluvNoy4mJgy7V6NgBnxB3ow==} - engines: {node: ^18.12 || ^20 || ^22} + '@serenity-js/serenity-bdd@3.37.1': + resolution: {integrity: sha512-7uNWnKf4bDT4ic+eWtwInS4hQeQNVd2W0hiBmyyqeFPjVUT/28+K0aYL8Gm8oDWWvWD2b7TvP71xFFBfca2gVA==} + engines: {node: ^20 || ^22 || ^24} hasBin: true '@sideway/address@4.1.5': @@ -4713,13 +4636,13 @@ packages: '@so-ric/colorspace@1.1.6': resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} - '@sonar/scan@4.3.2': - resolution: {integrity: sha512-dQiCZUPGstTWV6gJwZgbY25DPHN2l0qPv0dyd9/+0NY7Qqu/SKhwqslfBAqeQ1ZaDGabQT8c5NAyZPIcLdjFrw==} + '@sonar/scan@4.3.4': + resolution: {integrity: sha512-Xa1Ln9Onmmgwidi9EQljPkWDqFnVX+DhJbTW16NHFMccCas2PXyyVsBezp873i4YgsYYyV6Yn59Ipm4eMVDV5Q==} engines: {node: '>= 18'} hasBin: true - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@storybook/addon-a11y@9.1.17': resolution: {integrity: sha512-xP2Nb+idph2r0wE2Lc3z7LjtyXxTS+U+mJWmS8hw5w0oU2TkVdV7Ew/V7/iNl5jIWMXIp9HCRmcJuKSSGuertA==} @@ -4897,8 +4820,8 @@ packages: resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/react@16.3.0': - resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + '@testing-library/react@16.3.1': + resolution: {integrity: sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==} engines: {node: '>=18'} peerDependencies: '@testing-library/dom': ^10.0.0 @@ -4918,8 +4841,8 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@theguild/federation-composition@0.20.2': - resolution: {integrity: sha512-QI4iSdrc4JvCWnMb1QbiHnEpdD33KGdiU66qfWOcM8ENebRGHkGjXDnUrVJ8F9g1dmCRMTNfn2NFGqTcDpeYXw==} + '@theguild/federation-composition@0.21.1': + resolution: {integrity: sha512-iw1La4tbRaWKBgz+J9b1ydxv+kgt+7n04ZgD8HSeDJodLsLAxbXj/gLif5f2vyMa98ommBQ73ztBe8zOzGq5YQ==} engines: {node: '>=18'} peerDependencies: graphql: ^16.0.0 @@ -4931,8 +4854,8 @@ packages: '@ts-morph/common@0.27.0': resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + '@tsconfig/node10@1.0.12': + resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -5003,9 +4926,6 @@ packages: '@types/express-serve-static-core@4.19.7': resolution: {integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==} - '@types/express-serve-static-core@5.1.0': - resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} - '@types/express@4.17.25': resolution: {integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==} @@ -5051,8 +4971,8 @@ packages: '@types/jsonwebtoken@9.0.10': resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==} - '@types/lodash@4.17.20': - resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/lodash@4.17.21': + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} @@ -5099,8 +5019,8 @@ packages: '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react-dom@19.2.2': - resolution: {integrity: sha512-9KQPoO6mZCi7jcIStSnlOWn2nEF3mNmyr3rIAsGnAbQKYbRLyqmeSc39EVgtxXVia+LMT8j3knZLAZAh+xLmrw==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: '@types/react': ^19.2.0 @@ -5113,11 +5033,11 @@ packages: '@types/react-router@5.1.20': resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} - '@types/react@19.2.2': - resolution: {integrity: sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==} + '@types/react@19.2.7': + resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} - '@types/readable-stream@4.0.22': - resolution: {integrity: sha512-/FFhJpfCLAPwAcN3mFycNUa77ddnr8jTgF5VmSNetaemWB2cIlfCA9t0YTM3JAT0wOcv8D4tjPo7pkDhK3EJIg==} + '@types/readable-stream@4.0.23': + resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==} '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -5173,8 +5093,8 @@ packages: '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - '@types/validator@13.15.4': - resolution: {integrity: sha512-LSFfpSnJJY9wbC0LQxgvfb+ynbHftFo0tMsFOl/J4wexLnYMmDSPaj2ZyDv3TkfL1UePxPrxOWJfbiRS8mQv7A==} + '@types/validator@13.15.10': + resolution: {integrity: sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==} '@types/webidl-conversions@7.0.3': resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} @@ -5188,97 +5108,101 @@ packages: '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@17.0.34': - resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@types/yargs@17.0.35': + resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.46.2': - resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} + '@typescript-eslint/eslint-plugin@8.52.0': + resolution: {integrity: sha512-okqtOgqu2qmZJ5iN4TWlgfF171dZmx2FzdOv2K/ixL2LZWDStL8+JgQerI2sa8eAEfoydG9+0V96m7V+P8yE1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.2 + '@typescript-eslint/parser': ^8.52.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.2': - resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + '@typescript-eslint/parser@8.52.0': + resolution: {integrity: sha512-iIACsx8pxRnguSYhHiMn2PvhvfpopO9FXHyn1mG5txZIsAaB6F0KwbFnUQN3KCiG3Jcuad/Cao2FAs1Wp7vAyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.2': - resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + '@typescript-eslint/project-service@8.52.0': + resolution: {integrity: sha512-xD0MfdSdEmeFa3OmVqonHi+Cciab96ls1UhIF/qX/O/gPu5KXD0bY9lu33jj04fjzrXHcuvjBcBC+D3SNSadaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.2': - resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + '@typescript-eslint/scope-manager@8.52.0': + resolution: {integrity: sha512-ixxqmmCcc1Nf8S0mS0TkJ/3LKcC8mruYJPOU6Ia2F/zUUR4pApW7LzrpU3JmtePbRUTes9bEqRc1Gg4iyRnDzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.2': - resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + '@typescript-eslint/tsconfig-utils@8.52.0': + resolution: {integrity: sha512-jl+8fzr/SdzdxWJznq5nvoI7qn2tNYV/ZBAEcaFMVXf+K6jmXvAFrgo/+5rxgnL152f//pDEAYAhhBAZGrVfwg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.2': - resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} + '@typescript-eslint/type-utils@8.52.0': + resolution: {integrity: sha512-JD3wKBRWglYRQkAtsyGz1AewDu3mTc7NtRjR/ceTyGoPqmdS5oCdx/oZMWD5Zuqmo6/MpsYs0wp6axNt88/2EQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.2': - resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + '@typescript-eslint/types@8.52.0': + resolution: {integrity: sha512-LWQV1V4q9V4cT4H5JCIx3481iIFxH1UkVk+ZkGGAV1ZGcjGI9IoFOfg3O6ywz8QqCDEp7Inlg6kovMofsNRaGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.2': - resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + '@typescript-eslint/typescript-estree@8.52.0': + resolution: {integrity: sha512-XP3LClsCc0FsTK5/frGjolyADTh3QmsLp6nKd476xNI9CsSsLnmn4f0jrzNoAulmxlmNIpeXuHYeEQv61Q6qeQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.2': - resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} + '@typescript-eslint/utils@8.52.0': + resolution: {integrity: sha512-wYndVMWkweqHpEpwPhwqE2lnD2DxC6WVLupU/DOt/0/v+/+iQbbzO3jOHjmBMnhu0DgLULvOaU4h4pwHYi2oRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.2': - resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + '@typescript-eslint/visitor-keys@8.52.0': + resolution: {integrity: sha512-ink3/Zofus34nmBsPjow63FP5M7IGff0RKAgqR6+CFpdk22M7aLwC9gOcLGYqr7MczLPzZVERW9hRog3O4n1sQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typespec/ts-http-runtime@0.3.1': - resolution: {integrity: sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==} + '@typespec/ts-http-runtime@0.3.2': + resolution: {integrity: sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==} engines: {node: '>=20.0.0'} '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@vercel/oidc@3.0.5': + resolution: {integrity: sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==} + engines: {node: '>= 20'} + '@vitejs/plugin-react@4.7.0': resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/browser-playwright@4.0.15': - resolution: {integrity: sha512-94yVpDbb+ykiT7mK6ToonGnq2GIHEQGBTZTAzGxBGQXcVNCh54YKC2/WkfaDzxy0m6Kgw05kq3FYHKHu+wRdIA==} + '@vitest/browser-playwright@4.0.16': + resolution: {integrity: sha512-I2Fy/ANdphi1yI46d15o0M1M4M0UJrUiVKkH5oKeRZZCdPg0fw/cfTKZzv9Ge9eobtJYp4BGblMzXdXH0vcl5g==} peerDependencies: playwright: '*' - vitest: 4.0.15 + vitest: 4.0.16 - '@vitest/browser@4.0.15': - resolution: {integrity: sha512-zedtczX688KehaIaAv7m25CeDLb0gBtAOa2Oi1G1cqvSO5aLSVfH6lpZMJLW8BKYuWMxLQc9/5GYoM+jgvGIrw==} + '@vitest/browser@4.0.16': + resolution: {integrity: sha512-t4toy8X/YTnjYEPoY0pbDBg3EvDPg1elCDrfc+VupPHwoN/5/FNQ8Z+xBYIaEnOE2vVEyKwqYBzZ9h9rJtZVcg==} peerDependencies: - vitest: 4.0.15 + vitest: 4.0.16 - '@vitest/coverage-v8@4.0.15': - resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} + '@vitest/coverage-v8@4.0.16': + resolution: {integrity: sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==} peerDependencies: - '@vitest/browser': 4.0.15 - vitest: 4.0.15 + '@vitest/browser': 4.0.16 + vitest: 4.0.16 peerDependenciesMeta: '@vitest/browser': optional: true @@ -5286,8 +5210,8 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.0.15': - resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} + '@vitest/expect@4.0.16': + resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} '@vitest/mocker@3.2.4': resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} @@ -5300,8 +5224,8 @@ packages: vite: optional: true - '@vitest/mocker@4.0.15': - resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} + '@vitest/mocker@4.0.16': + resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -5314,26 +5238,26 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.0.15': - resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} + '@vitest/pretty-format@4.0.16': + resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} - '@vitest/runner@4.0.15': - resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} + '@vitest/runner@4.0.16': + resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} - '@vitest/snapshot@4.0.15': - resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} + '@vitest/snapshot@4.0.16': + resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.0.15': - resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} + '@vitest/spy@4.0.16': + resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.0.15': - resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} + '@vitest/utils@4.0.16': + resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -5384,12 +5308,12 @@ packages: resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} engines: {node: '>=18.0.0'} - '@whatwg-node/fetch@0.10.11': - resolution: {integrity: sha512-eR8SYtf9Nem1Tnl0IWrY33qJ5wCtIWlt3Fs3c6V4aAaTFLtkEQErXu3SSZg/XCHrj9hXSJ8/8t+CdMk5Qec/ZA==} + '@whatwg-node/fetch@0.10.13': + resolution: {integrity: sha512-b4PhJ+zYj4357zwk4TTuF2nEe0vVtOrwdsrNo5hL+u1ojXNhh1FgJ6pg1jzDlwlT4oBdzfSwaBwMCtFCsIWg8Q==} engines: {node: '>=18.0.0'} - '@whatwg-node/node-fetch@0.8.1': - resolution: {integrity: sha512-cQmQEo7IsI0EPX9VrwygXVzrVlX43Jb7/DBZSmpnC7xH4xkyOnn/HykHpTaQk7TUs7zh59A5uTGqx3p2Ouzffw==} + '@whatwg-node/node-fetch@0.8.5': + resolution: {integrity: sha512-4xzCl/zphPqlp9tASLVeUhB5+WJHbuWGYpfoC2q1qh5dw0AqZBW7L27V5roxYWijPxj4sspRAAoOH3d2ztaHUQ==} engines: {node: '>=18.0.0'} '@whatwg-node/promise-helpers@1.3.2': @@ -5475,6 +5399,12 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} + ai@5.0.118: + resolution: {integrity: sha512-sKJHfhJkvAyq5NC3yJJ4R8Z3tn4pSHF760/jInKAtmLwPLWTHfGo293DSO4un8QUAgJOagHd09VSXOXv+STMNQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -5499,13 +5429,13 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - algoliasearch-helper@3.26.0: - resolution: {integrity: sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw==} + algoliasearch-helper@3.27.0: + resolution: {integrity: sha512-eNYchRerbsvk2doHOMfdS1/B6Tm70oGtu8mzQlrNzbCeQ8p1MjCW8t/BL6iZ5PD+cL5NNMgTMyMnmiXZ1sgmNw==} peerDependencies: algoliasearch: '>= 3.1 < 6' - algoliasearch@5.41.0: - resolution: {integrity: sha512-9E4b3rJmYbBkn7e3aAPt1as+VVnRhsR4qwRRgOzpeyz4PAOuwKh0HI4AN6mTrqK0S0M9fCCSTOUnuJ8gPY/tvA==} + algoliasearch@5.46.2: + resolution: {integrity: sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -5548,8 +5478,8 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - antd@5.27.6: - resolution: {integrity: sha512-70HrjVbzDXvtiUQ5MP1XdNudr/wGAk9Ivaemk6f36yrAeJurJSmZ8KngOIilolLRHdGuNc6/Vk+4T1OZpSjpag==} + antd@5.29.3: + resolution: {integrity: sha512-3DdbGCa9tWAJGcCJ6rzR8EJFsv2CtyEbkVabZE14pfgUHfCicWCj0/QzQVLDYg8CPfQk9BH7fHCoTXHTy7MP/A==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -5633,8 +5563,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.8: - resolution: {integrity: sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==} + ast-v8-to-istanbul@0.3.10: + resolution: {integrity: sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -5672,8 +5602,8 @@ packages: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + autoprefixer@10.4.23: + resolution: {integrity: sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -5687,8 +5617,8 @@ packages: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} engines: {node: '>= 6.0.0'} - axe-core@4.11.0: - resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} + axe-core@4.11.1: + resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} axios-cookiejar-support@4.0.7: @@ -5704,17 +5634,11 @@ packages: axios@0.27.2: resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} - axios@1.11.0: - resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} - axios@1.12.0: resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} - axios@1.12.2: - resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} - - axios@1.13.1: - resolution: {integrity: sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==} + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} azurite@3.35.0: resolution: {integrity: sha512-GzKmi+/5U0baNRjEEVtBMLpLuIKEJ0uSh0VWBzOI4qe4f5ziJyoZQmcTO7QhxZTF6+rphj7TZS3PtJY7uiiacA==} @@ -5760,8 +5684,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.8.1: - resolution: {integrity: sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==} + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: @@ -5775,8 +5699,8 @@ packages: resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} engines: {node: '>=6.0.0'} - baseline-browser-mapping@2.8.21: - resolution: {integrity: sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==} + baseline-browser-mapping@2.9.13: + resolution: {integrity: sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ==} hasBin: true basic-auth@2.0.1: @@ -5800,15 +5724,15 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bl@6.1.4: - resolution: {integrity: sha512-ZV/9asSuknOExbM/zPPA8z00lc1ihPKWaStHkkQrxHNeYx+yY+TmF+v80dpv2G0mv3HVXBu7ryoAsxbFFhf4eg==} + bl@6.1.6: + resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==} - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + body-parser@1.20.4: + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.1: - resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} bonjour-service@1.3.0: @@ -5839,8 +5763,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.27.0: - resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -5924,8 +5848,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} + caniuse-lite@1.0.30001763: + resolution: {integrity: sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -5946,8 +5870,8 @@ packages: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} - chai@6.2.1: - resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@2.4.2: @@ -5984,14 +5908,14 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@2.1.0: - resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} cheerio-select@2.1.0: @@ -6005,8 +5929,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chromatic@12.2.0: - resolution: {integrity: sha512-GswmBW9ZptAoTns1BMyjbm55Z7EsIJnUvYKdQqXIBZIKbGErmpA+p4c0BYA+nzw5B0M+rb3Iqp1IaH8TFwIQew==} + chromatic@13.3.5: + resolution: {integrity: sha512-MzPhxpl838qJUo0A55osCF2ifwPbjcIPeElr1d4SHcjnHoIcg7l1syJDrAYK/a+PcCBrOGi06jPNpQAln5hWgw==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -6103,8 +6027,8 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-convert@3.1.2: - resolution: {integrity: sha512-UNqkvCDXstVck3kdowtOTWROIJQwafjOfXSmddoDrXo4cewMKmusCeF22Q24zvjR8nwWib/3S/dfyzPItPEiJg==} + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} engines: {node: '>=14.6'} color-name@1.1.3: @@ -6113,16 +6037,16 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-name@2.0.2: - resolution: {integrity: sha512-9vEt7gE16EW7Eu7pvZnR0abW9z6ufzhXxGXZEVU9IqPdlsUiMwJeJfRtq0zePUmnbHGT9zajca7mX8zgoayo4A==} + color-name@2.1.0: + resolution: {integrity: sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==} engines: {node: '>=12.20'} - color-string@2.1.2: - resolution: {integrity: sha512-RxmjYxbWemV9gKu4zPgiZagUxbH3RQpEIO77XoSSX0ivgABDZ+h8Zuash/EMFLTI4N9QgFPOJ6JQpPZKFxa+dA==} + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} engines: {node: '>=18'} - color@5.0.2: - resolution: {integrity: sha512-e2hz5BzbUPcYlIRHo8ieAhYgoajrJr+hWoceg6E345TPsATMUKqDgzt8fSXZJJbxfpiPzkWyphz8yn8At7q3fA==} + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} engines: {node: '>=18'} colord@2.9.3: @@ -6237,19 +6161,19 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.7: + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} cookie@0.7.2: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} cookiejar@2.1.4: @@ -6264,14 +6188,14 @@ packages: peerDependencies: webpack: ^5.1.0 - core-js-compat@3.46.0: - resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} + core-js-compat@3.47.0: + resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==} - core-js-pure@3.46.0: - resolution: {integrity: sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==} + core-js-pure@3.47.0: + resolution: {integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==} - core-js@3.46.0: - resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} + core-js@3.47.0: + resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -6322,8 +6246,8 @@ packages: peerDependencies: postcss: ^8.4 - css-declaration-sorter@7.3.0: - resolution: {integrity: sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==} + css-declaration-sorter@7.3.1: + resolution: {integrity: sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 @@ -6398,8 +6322,8 @@ packages: css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - cssdb@8.4.2: - resolution: {integrity: sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==} + cssdb@8.6.0: + resolution: {integrity: sha512-7ZrRi/Z3cRL1d5I8RuXEWAkRFP3J4GeQRiyVknI4KC70RAU8hT4LysUZDe0y+fYNOktCbxE8sOPUOhyR12UqGQ==} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -6438,8 +6362,8 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} cybersource-rest-client@0.0.73: resolution: {integrity: sha512-E9Wob960gV01W/fGj4SU5xC0rPVZJbshOsIYqkpfpRGLJIfwZp3gv/stW2F9XsWviRvZrp2S9c6TYtcP+4P1Hw==} @@ -6470,8 +6394,8 @@ packages: dataloader@2.2.3: resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} - dayjs@1.11.18: - resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -6522,12 +6446,12 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} engines: {node: '>=18'} defaults@1.0.4: @@ -6590,10 +6514,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} - detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -6705,8 +6625,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.243: - resolution: {integrity: sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} emitter-listener@1.1.2: resolution: {integrity: sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==} @@ -6730,16 +6650,12 @@ packages: enabled@2.0.0: resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + enhanced-resolve@5.18.4: + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -6759,8 +6675,8 @@ packages: error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-aggregate-error@1.0.14: @@ -6778,6 +6694,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -6807,11 +6726,6 @@ packages: peerDependencies: esbuild: '>=0.12 <1' - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.25.12: resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} @@ -6855,8 +6769,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-refresh@0.4.24: - resolution: {integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==} + eslint-plugin-react-refresh@0.4.26: + resolution: {integrity: sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==} peerDependencies: eslint: '>=8.40' @@ -6876,8 +6790,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.38.0: - resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} + eslint@9.39.2: + resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -6895,8 +6809,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -6971,18 +6885,18 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - expect-type@1.2.2: - resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - express@4.22.1: resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} engines: {node: '>= 0.10.0'} @@ -7016,8 +6930,8 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -7091,8 +7005,8 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + finalhandler@1.3.2: + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} engines: {node: '>= 0.8'} finalhandler@2.1.1: @@ -7172,8 +7086,8 @@ packages: resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} engines: {node: '>= 0.12'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} format@0.2.2: @@ -7197,8 +7111,8 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} @@ -7211,8 +7125,8 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.3.2: - resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} engines: {node: '>=14.14'} fs.realpath@1.0.0: @@ -7307,18 +7221,13 @@ packages: resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} engines: {node: '>= 0.10'} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} hasBin: true - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + glob@13.0.0: + resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} engines: {node: 20 || >=22} - hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -7336,8 +7245,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} globalthis@1.0.4: @@ -7370,9 +7279,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-config@5.1.5: resolution: {integrity: sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==} engines: {node: '>= 16.0.0'} @@ -7435,8 +7341,8 @@ packages: engines: {node: '>= 6.x'} deprecated: 'No longer supported; please update to a newer version. Details: https://github.com/graphql/graphql-js#version-support' - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} gray-matter@4.0.3: @@ -7504,8 +7410,8 @@ packages: hast-util-to-jsx-runtime@2.3.6: resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -7561,8 +7467,8 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - html-webpack-plugin@5.6.4: - resolution: {integrity: sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw==} + html-webpack-plugin@5.6.5: + resolution: {integrity: sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==} engines: {node: '>=10.13.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -7602,10 +7508,6 @@ packages: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - http-errors@2.0.1: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} @@ -7661,8 +7563,8 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} icss-utils@5.1.0: @@ -7746,8 +7648,8 @@ packages: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} inquirer@8.2.7: resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} @@ -7764,8 +7666,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + ipaddr.js@2.3.0: + resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} engines: {node: '>= 10'} is-absolute@1.0.0: @@ -8059,10 +7961,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} - engines: {node: 20 || >=22} - jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8098,12 +7996,8 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.1: @@ -8139,6 +8033,9 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -8160,26 +8057,13 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - jsonwebtoken@9.0.3: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} - jwa@1.4.2: - resolution: {integrity: sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==} - jwa@2.0.1: resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - - jws@4.0.0: - resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} - jws@4.0.1: resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} @@ -8206,8 +8090,8 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - knip@5.73.3: - resolution: {integrity: sha512-676xuqNQidE9yZeUUX7lJeZ0d1N7QBTbmO1J0p+SyuXlbpdE4pd8Ql3WVMvrvaaaG2z/+3ExeFNm0Q9mVIjuKw==} + knip@5.80.1: + resolution: {integrity: sha512-aMqGxyoAgLzTd6g3bN7J+Mef0R/WqWKz4zazvKQisprPdszp7X/CHRAPVsVYIkUAIDWCiC/s65JOrva3DwR9yQ==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -8242,76 +8126,6 @@ packages: lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - lightningcss-android-arm64@1.30.2: - resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] - - lightningcss-darwin-arm64@1.30.2: - resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.30.2: - resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.30.2: - resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.30.2: - resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.30.2: - resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-musl@1.30.2: - resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-x64-gnu@1.30.2: - resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-musl@1.30.2: - resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-win32-arm64-msvc@1.30.2: - resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] - - lightningcss-win32-x64-msvc@1.30.2: - resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.30.2: - resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} - engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -8447,19 +8261,15 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - lru.min@1.1.2: - resolution: {integrity: sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==} + lru.min@1.1.3: + resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==} engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} luxon@3.6.1: @@ -8504,6 +8314,11 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + matcher@3.0.0: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} @@ -8878,8 +8693,8 @@ packages: socks: optional: true - mongodb@6.20.0: - resolution: {integrity: sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==} + mongodb@6.21.0: + resolution: {integrity: sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A==} engines: {node: '>=16.20.1'} peerDependencies: '@aws-sdk/credential-providers': ^3.188.0 @@ -8945,16 +8760,16 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - mysql2@3.15.3: - resolution: {integrity: sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg==} + mysql2@3.16.0: + resolution: {integrity: sha512-AEGW7QLLSuSnjCS4pk3EIqOmogegmze9h8EyrndavUQnIUcfkVal/sK7QznE+a3bc6rzPbAiui9Jcb+96tPwYA==} engines: {node: '>= 8.0'} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - named-placeholders@1.1.3: - resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} - engines: {node: '>=12.0.0'} + named-placeholders@1.1.6: + resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} + engines: {node: '>=8.0.0'} nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} @@ -9020,8 +8835,8 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.2: - resolution: {integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==} + node-forge@1.3.3: + resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==} engines: {node: '>= 6.13.0'} node-int64@0.4.0: @@ -9045,12 +8860,8 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@8.1.0: - resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} engines: {node: '>=14.16'} npm-run-path@4.0.1: @@ -9072,8 +8883,8 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - nwsapi@2.2.22: - resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -9101,8 +8912,8 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - oidc-client-ts@3.3.0: - resolution: {integrity: sha512-t13S540ZwFOEZKLYHJwSfITugupW4uYLwuQSSXyKH/wHwZ+7FvgHE7gnNJh1YQIZ1Yd1hKSRjqeXGSUtS0r9JA==} + oidc-client-ts@3.4.1: + resolution: {integrity: sha512-jNdst/U28Iasukx/L5MP6b274Vr7ftQs6qAhPBCvz6Wt5rPCA+Q/tUmCzfCHHWweWw5szeMy2Gfrm1rITwUKrw==} engines: {node: '>=18'} on-finished@2.3.0: @@ -9154,8 +8965,8 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - oxc-resolver@11.15.0: - resolution: {integrity: sha512-Hk2J8QMYwmIO9XTCUiOH00+Xk2/+aBxRUnhrSlANDyCnLYc32R1WSIq1sU2yEdlqd53FfMpPEpnBYIKQMzliJw==} + oxc-resolver@11.16.2: + resolution: {integrity: sha512-Uy76u47vwhhF7VAmVY61Srn+ouiOobf45MU9vGct9GD2ARy6hKoqEElyHDB0L+4JOM6VLuZ431KiLwyjI/A21g==} p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} @@ -9304,8 +9115,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + path-scurry@2.0.1: + resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: @@ -9367,13 +9178,13 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - playwright-core@1.56.1: - resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} + playwright-core@1.57.0: + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} engines: {node: '>=18'} hasBin: true - playwright@1.56.1: - resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==} + playwright@1.57.0: + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} engines: {node: '>=18'} hasBin: true @@ -9696,8 +9507,8 @@ packages: peerDependencies: postcss: ^8.4 - postcss-preset-env@10.4.0: - resolution: {integrity: sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==} + postcss-preset-env@10.6.0: + resolution: {integrity: sha512-+LzpUSLCGHUdlZ1YZP7lp7w1MjxInJRSG0uaLyk/V/BM17iU2B7xTO7I8x3uk0WQAcLLh/ffqKzOzfaBvG7Fdw==} engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -9741,8 +9552,8 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-sort-media-queries@5.2.0: @@ -9824,15 +9635,12 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - properties-file@3.6.1: - resolution: {integrity: sha512-9NUyJcxSqdWcJGRpPq6rT7exQbSQMPs0sK6KTvCJsLrTQRwq+hmt/wIB32ugNZmvEuSPyFO+y4nLK3vX34i5Wg==} + properties-file@3.6.3: + resolution: {integrity: sha512-T0BLq5U7vMtfoHMAyirR386h/PkS9rva/EQIvy3yFmkYIjc485tgxN7eHgbtJx48O28A94MUYuRGF/iyC/L54A==} property-expr@2.0.6: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -9866,12 +9674,8 @@ packages: resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} engines: {node: '>=12.20'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} querystringify@2.2.0: @@ -9895,8 +9699,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + raw-body@2.5.3: + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} raw-body@3.0.2: @@ -10040,8 +9844,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - rc-segmented@2.7.0: - resolution: {integrity: sha512-liijAjXz+KnTRVnxxXG2sYDGd6iLL7VpGGdR8gwoxAXy2KglviKCxLWZdjKYJzYzGSUwKDSTdYk8brj54Bn5BA==} + rc-segmented@2.7.1: + resolution: {integrity: sha512-izj1Nw/Dw2Vb7EVr+D/E9lUTkBe+kKC+SAFSU9zqr7WV2W5Ktaa9Gc7cB2jTqgk8GROJayltaec+DBlYKc6d+g==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' @@ -10112,8 +9916,8 @@ packages: react: '*' react-dom: '*' - rc-upload@4.9.2: - resolution: {integrity: sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==} + rc-upload@4.11.0: + resolution: {integrity: sha512-ZUyT//2JAehfHzjWowqROcwYJKnZkIUGWaTE/VogVrepSl7AFNbQf4+zGfX4zl9Vrj/Jm8scLO0R6UlPDKK4wA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -10144,10 +9948,10 @@ packages: resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} engines: {node: ^20.9.0 || >=22} - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + react-dom@19.2.3: + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: - react: ^19.2.0 + react: ^19.2.3 react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} @@ -10196,8 +10000,8 @@ packages: peerDependencies: react: '>=15' - react-router-dom@7.9.5: - resolution: {integrity: sha512-mkEmq/K8tKN63Ae2M7Xgz3c9l9YNbY+NHH6NNeUmLA3kDkhKXRsNb/ZpxaEunvGo2/3YXdk5EJU3Hxp3ocaBPw==} + react-router-dom@7.12.0: + resolution: {integrity: sha512-pfO9fiBcpEfX4Tx+iTYKDtPbrSLLCbwJ5EqP+SPYQu1VYCXdy79GSj0wttR0U4cikVdlImZuEZ/9ZNCgoaxwBA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -10208,8 +10012,8 @@ packages: peerDependencies: react: '>=15' - react-router@7.9.5: - resolution: {integrity: sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==} + react-router@7.12.0: + resolution: {integrity: sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -10218,8 +10022,8 @@ packages: react-dom: optional: true - react@19.2.0: - resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + react@19.2.3: + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} read-package-up@11.0.0: @@ -10440,8 +10244,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} + rimraf@6.1.2: + resolution: {integrity: sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==} engines: {node: 20 || >=22} hasBin: true @@ -10454,8 +10258,8 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.53.5: - resolution: {integrity: sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==} + rollup@4.55.1: + resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -10506,8 +10310,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + sax@1.4.4: + resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} + engines: {node: '>=11.0.0'} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -10574,18 +10379,13 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + send@0.19.2: + resolution: {integrity: sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==} engines: {node: '>= 0.8.0'} sentence-case@3.0.4: @@ -10645,8 +10445,8 @@ packages: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + serve-static@1.16.3: + resolution: {integrity: sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==} engines: {node: '>= 0.8.0'} set-cookie-parser@2.7.2: @@ -10776,15 +10576,15 @@ packages: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} engines: {node: '>=8.0.0'} - smol-toml@1.5.2: - resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==} + smol-toml@1.6.0: + resolution: {integrity: sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==} engines: {node: '>= 18'} snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - snyk@1.1301.0: - resolution: {integrity: sha512-kTb8F9L1PlI3nYWlp60wnSGWGmcRs6bBtSBl9s8YYhAiFZNseIZfXolQXBSCaya5QlcxzfH1pb4aqCNMbi0tgg==} + snyk@1.1301.2: + resolution: {integrity: sha512-FUTV/2WStY0GyvJROvxKPa2A3FzgVNIUB8rR2LMiR1to9onrnyO233HEIOS1HU+dJTXHFSh8z3fMze2TqPt58w==} engines: {node: '>=12'} hasBin: true @@ -10875,10 +10675,6 @@ packages: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -11000,11 +10796,11 @@ packages: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} - style-to-js@1.1.18: - resolution: {integrity: sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==} + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - style-to-object@1.0.11: - resolution: {integrity: sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==} + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} stylehacks@6.1.1: resolution: {integrity: sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==} @@ -11018,12 +10814,12 @@ packages: subarg@1.0.0: resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} - superagent@10.2.3: - resolution: {integrity: sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==} + superagent@10.3.0: + resolution: {integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==} engines: {node: '>=14.18.0'} - supertest@7.1.4: - resolution: {integrity: sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==} + supertest@7.2.2: + resolution: {integrity: sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==} engines: {node: '>=14.18.0'} supports-color@5.5.0: @@ -11053,9 +10849,18 @@ packages: swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + swr@2.3.8: + resolution: {integrity: sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + sync-fetch@0.6.0: + resolution: {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} + engines: {node: '>=18'} + sync-fetch@0.6.0-2: resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} engines: {node: '>=18'} @@ -11071,8 +10876,8 @@ packages: resolution: {integrity: sha512-NmedZS0NJiTv3CoYnf1FtjxIDUgVYzEmavrc8q2WHRb+lP4deI9BpQfmNnBZZaWusDbP5FVFZCcvzb3xOlNVlQ==} engines: {node: '>=16'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} + terser-webpack-plugin@5.3.16: + resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -11087,8 +10892,8 @@ packages: uglify-js: optional: true - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + terser@5.44.1: + resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==} engines: {node: '>=10'} hasBin: true @@ -11115,6 +10920,10 @@ packages: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} + throttleit@2.1.0: + resolution: {integrity: sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==} + engines: {node: '>=18'} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -11131,9 +10940,9 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tiny-types@1.24.1: - resolution: {integrity: sha512-95cv2seZBqFIFw1r/+0PGVWTaChHU7JR2MvGUCCEJ39Rf+fqwj3l0WuTFaqUCpUXkU2coV+YOuUJ2KrB/QcxLw==} - engines: {node: ^20 || ^22 || >=24.0.0} + tiny-types@1.24.3: + resolution: {integrity: sha512-LrDkHlUBPHfzzPDTKLX/IP0zruq346GVGK74VncAjyFVQqi1VZZgoqJ6XIrXkcqPH/CF/YWeW0Ps770sY4wfzA==} + engines: {node: ^20 || ^22 || ^24} tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} @@ -11247,8 +11056,8 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -11314,8 +11123,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.20.6: - resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} hasBin: true @@ -11323,42 +11132,42 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - turbo-darwin-64@2.5.8: - resolution: {integrity: sha512-Dh5bCACiHO8rUXZLpKw+m3FiHtAp2CkanSyJre+SInEvEr5kIxjGvCK/8MFX8SFRjQuhjtvpIvYYZJB4AGCxNQ==} + turbo-darwin-64@2.7.3: + resolution: {integrity: sha512-aZHhvRiRHXbJw1EcEAq4aws1hsVVUZ9DPuSFaq9VVFAKCup7niIEwc22glxb7240yYEr1vLafdQ2U294Vcwz+w==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.8: - resolution: {integrity: sha512-f1H/tQC9px7+hmXn6Kx/w8Jd/FneIUnvLlcI/7RGHunxfOkKJKvsoiNzySkoHQ8uq1pJnhJ0xNGTlYM48ZaJOQ==} + turbo-darwin-arm64@2.7.3: + resolution: {integrity: sha512-CkVrHSq+Bnhl9sX2LQgqQYVfLTWC2gvI74C4758OmU0djfrssDKU9d4YQF0AYXXhIIRZipSXfxClQziIMD+EAg==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.8: - resolution: {integrity: sha512-hMyvc7w7yadBlZBGl/bnR6O+dJTx3XkTeyTTH4zEjERO6ChEs0SrN8jTFj1lueNXKIHh1SnALmy6VctKMGnWfw==} + turbo-linux-64@2.7.3: + resolution: {integrity: sha512-GqDsCNnzzr89kMaLGpRALyigUklzgxIrSy2pHZVXyifgczvYPnLglex78Aj3T2gu+T3trPPH2iJ+pWucVOCC2Q==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.8: - resolution: {integrity: sha512-LQELGa7bAqV2f+3rTMRPnj5G/OHAe2U+0N9BwsZvfMvHSUbsQ3bBMWdSQaYNicok7wOZcHjz2TkESn1hYK6xIQ==} + turbo-linux-arm64@2.7.3: + resolution: {integrity: sha512-NdCDTfIcIo3dWjsiaAHlxu5gW61Ed/8maah1IAF/9E3EtX0aAHNiBMbuYLZaR4vRJ7BeVkYB6xKWRtdFLZ0y3g==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.8: - resolution: {integrity: sha512-3YdcaW34TrN1AWwqgYL9gUqmZsMT4T7g8Y5Azz+uwwEJW+4sgcJkIi9pYFyU4ZBSjBvkfuPZkGgfStir5BBDJQ==} + turbo-windows-64@2.7.3: + resolution: {integrity: sha512-7bVvO987daXGSJVYBoG8R4Q+csT1pKIgLJYZevXRQ0Hqw0Vv4mKme/TOjYXs9Qb1xMKh51Tb3bXKDbd8/4G08g==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.8: - resolution: {integrity: sha512-eFC5XzLmgXJfnAK3UMTmVECCwuBcORrWdewoiXBnUm934DY6QN8YowC/srhNnROMpaKaqNeRpoB5FxCww3eteQ==} + turbo-windows-arm64@2.7.3: + resolution: {integrity: sha512-nTodweTbPmkvwMu/a55XvjMsPtuyUSC+sV7f/SR57K36rB2I0YG21qNETN+00LOTUW9B3omd8XkiXJkt4kx/cw==} cpu: [arm64] os: [win32] - turbo@2.5.8: - resolution: {integrity: sha512-5c9Fdsr9qfpT3hA0EyYSFRZj1dVVsb6KIWubA9JBYZ/9ZEAijgUEae0BBR/Xl/wekt4w65/lYLTFaP3JmwSO8w==} + turbo@2.7.3: + resolution: {integrity: sha512-+HjKlP4OfYk+qzvWNETA3cUO5UuK6b5MSc2UJOKyvBceKucQoQGb2g7HlC2H1GHdkfKrk4YF1VPvROkhVZDDLQ==} hasBin: true - twilio@5.10.7: - resolution: {integrity: sha512-pELNeyQqkJMW/UkbcdNGDfOjMyt1FXoYOKXBDqOViHmcdJ04cq8Ty3VsrEAabi97YesK3T2v5KP5XKPY8uUx9w==} + twilio@5.11.2: + resolution: {integrity: sha512-+pl0sbdj50UGtlhENGTmSnEsKeo4vBkHM62UUiysV+4amxQBmhNX3i3NGJVE+7CFqACzMkgoDTB3tjBthcHyyQ==} engines: {node: '>=14.0'} type-check@0.4.0: @@ -11416,8 +11225,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.46.2: - resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} + typescript-eslint@8.52.0: + resolution: {integrity: sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -11527,8 +11336,8 @@ packages: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -11565,6 +11374,11 @@ packages: urlpattern-polyfill@10.1.0: resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-arity@1.1.0: resolution: {integrity: sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==} @@ -11617,8 +11431,8 @@ packages: resolution: {integrity: sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==} engines: {node: ^18.17.0 || >=20.5.0} - validator@13.15.20: - resolution: {integrity: sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==} + validator@13.15.26: + resolution: {integrity: sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==} engines: {node: '>= 0.10'} value-equal@1.0.1: @@ -11641,8 +11455,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@7.3.0: - resolution: {integrity: sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==} + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -11681,18 +11495,18 @@ packages: yaml: optional: true - vitest@4.0.15: - resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} + vitest@4.0.16: + resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.15 - '@vitest/browser-preview': 4.0.15 - '@vitest/browser-webdriverio': 4.0.15 - '@vitest/ui': 4.0.15 + '@vitest/browser-playwright': 4.0.16 + '@vitest/browser-preview': 4.0.16 + '@vitest/browser-webdriverio': 4.0.16 + '@vitest/ui': 4.0.16 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -11723,8 +11537,8 @@ packages: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} + watchpack@2.5.0: + resolution: {integrity: sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -11789,8 +11603,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.102.1: - resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} + webpack@5.104.1: + resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -11884,8 +11698,8 @@ packages: resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} engines: {node: '>= 12.0.0'} - winston@3.18.3: - resolution: {integrity: sha512-NoBZauFNNWENgsnC9YpgyYwOVrl2m58PpQ8lNHjV3kosGs7KJ7Npk9pCUE+WJlawVSe8mykWDKWFSVfs3QO9ww==} + winston@3.19.0: + resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} engines: {node: '>= 12.0.0'} wkx@0.5.0: @@ -11925,8 +11739,8 @@ packages: utf-8-validate: optional: true - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -11990,8 +11804,8 @@ packages: yaml-ast-parser@0.0.43: resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true @@ -12022,8 +11836,8 @@ packages: yup@1.6.1: resolution: {integrity: sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==} - zod@4.1.13: - resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + zod@4.3.5: + resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -12032,154 +11846,176 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@algolia/abtesting@1.7.0': + '@ai-sdk/gateway@2.0.24(zod@4.3.5)': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@ai-sdk/provider': 2.0.1 + '@ai-sdk/provider-utils': 3.0.20(zod@4.3.5) + '@vercel/oidc': 3.0.5 + zod: 4.3.5 - '@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0)(search-insights@2.17.3)': + '@ai-sdk/provider-utils@3.0.20(zod@4.3.5)': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0) + '@ai-sdk/provider': 2.0.1 + '@standard-schema/spec': 1.1.0 + eventsource-parser: 3.0.6 + zod: 4.3.5 + + '@ai-sdk/provider@2.0.1': + dependencies: + json-schema: 0.4.0 + + '@ai-sdk/react@2.0.120(react@19.2.3)(zod@4.3.5)': + dependencies: + '@ai-sdk/provider-utils': 3.0.20(zod@4.3.5) + ai: 5.0.118(zod@4.3.5) + react: 19.2.3 + swr: 2.3.8(react@19.2.3) + throttleit: 2.1.0 + optionalDependencies: + zod: 4.3.5 + + '@algolia/abtesting@1.12.2': + dependencies: + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 + + '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights - '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0)(search-insights@2.17.3)': + '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0)': + '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)': dependencies: - '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0) - '@algolia/client-search': 5.41.0 - algoliasearch: 5.41.0 + '@algolia/client-search': 5.46.2 + algoliasearch: 5.46.2 - '@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0)': + '@algolia/client-abtesting@5.46.2': dependencies: - '@algolia/client-search': 5.41.0 - algoliasearch: 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-abtesting@5.41.0': + '@algolia/client-analytics@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-analytics@5.41.0': - dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 - - '@algolia/client-common@5.41.0': {} + '@algolia/client-common@5.46.2': {} - '@algolia/client-insights@5.41.0': + '@algolia/client-insights@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-personalization@5.41.0': + '@algolia/client-personalization@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-query-suggestions@5.41.0': + '@algolia/client-query-suggestions@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/client-search@5.41.0': + '@algolia/client-search@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 '@algolia/events@4.0.1': {} - '@algolia/ingestion@1.41.0': + '@algolia/ingestion@1.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/monitoring@1.41.0': + '@algolia/monitoring@1.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/recommend@5.41.0': + '@algolia/recommend@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + '@algolia/client-common': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 - '@algolia/requester-browser-xhr@5.41.0': + '@algolia/requester-browser-xhr@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 + '@algolia/client-common': 5.46.2 - '@algolia/requester-fetch@5.41.0': + '@algolia/requester-fetch@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 + '@algolia/client-common': 5.46.2 - '@algolia/requester-node-http@5.41.0': + '@algolia/requester-node-http@5.46.2': dependencies: - '@algolia/client-common': 5.41.0 + '@algolia/client-common': 5.46.2 - '@amiceli/vitest-cucumber@6.1.0(vitest@4.0.15)': + '@amiceli/vitest-cucumber@6.2.0(vitest@4.0.16)': dependencies: callsites: 4.2.0 minimist: 1.2.8 parsecurrency: 1.1.1 ts-morph: 26.0.0 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@ant-design/colors@7.2.1': dependencies: '@ant-design/fast-color': 2.0.6 - '@ant-design/colors@8.0.0': + '@ant-design/colors@8.0.1': dependencies: '@ant-design/fast-color': 3.0.0 - '@ant-design/cssinjs-utils@1.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/cssinjs-utils@1.1.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@ant-design/cssinjs': 1.24.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@ant-design/cssinjs': 1.24.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@babel/runtime': 7.28.4 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@ant-design/cssinjs@1.24.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/cssinjs@1.24.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.5.1 - csstype: 3.1.3 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + csstype: 3.2.3 + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) stylis: 4.3.6 '@ant-design/fast-color@2.0.6': @@ -12190,59 +12026,59 @@ snapshots: '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons@5.6.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/icons@5.6.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@ant-design/colors': 7.2.1 '@ant-design/icons-svg': 4.4.2 '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@ant-design/icons@6.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/icons@6.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@ant-design/colors': 8.0.0 + '@ant-design/colors': 8.0.1 '@ant-design/icons-svg': 4.4.2 - '@rc-component/util': 1.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/util': 1.7.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) clsx: 2.1.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@ant-design/react-slick@1.1.2(react@19.2.0)': + '@ant-design/react-slick@1.1.2(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 json2mq: 0.2.0 - react: 19.2.0 + react: 19.2.3 resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 - '@ant-design/v5-patch-for-react-19@1.0.3(antd@5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@ant-design/v5-patch-for-react-19@1.0.3(antd@5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - antd: 5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + antd: 5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@apollo/cache-control-types@1.0.3(graphql@16.11.0)': + '@apollo/cache-control-types@1.0.3(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 - '@apollo/client@4.0.8(graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3))(graphql@16.11.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)': + '@apollo/client@4.0.11(graphql-ws@6.0.6(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rxjs@7.8.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) '@wry/caches': 1.0.1 '@wry/equality': 0.5.7 '@wry/trie': 0.5.0 - graphql: 16.11.0 - graphql-tag: 2.12.6(graphql@16.11.0) + graphql: 16.12.0 + graphql-tag: 2.12.6(graphql@16.12.0) optimism: 0.18.1 rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - graphql-ws: 6.0.6(graphql@16.11.0)(ws@8.18.3) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + graphql-ws: 6.0.6(graphql@16.12.0)(ws@8.19.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) '@apollo/protobufjs@1.2.7': dependencies: @@ -12259,34 +12095,34 @@ snapshots: '@types/long': 4.0.2 long: 4.0.0 - '@apollo/server-gateway-interface@2.0.0(graphql@16.11.0)': + '@apollo/server-gateway-interface@2.0.0(graphql@16.12.0)': dependencies: '@apollo/usage-reporting-protobuf': 4.1.1 '@apollo/utils.fetcher': 3.1.0 '@apollo/utils.keyvaluecache': 4.0.0 '@apollo/utils.logger': 3.0.0 - graphql: 16.11.0 + graphql: 16.12.0 - '@apollo/server@5.2.0(graphql@16.11.0)': + '@apollo/server@5.2.0(graphql@16.12.0)': dependencies: - '@apollo/cache-control-types': 1.0.3(graphql@16.11.0) - '@apollo/server-gateway-interface': 2.0.0(graphql@16.11.0) + '@apollo/cache-control-types': 1.0.3(graphql@16.12.0) + '@apollo/server-gateway-interface': 2.0.0(graphql@16.12.0) '@apollo/usage-reporting-protobuf': 4.1.1 '@apollo/utils.createhash': 3.0.1 '@apollo/utils.fetcher': 3.1.0 '@apollo/utils.isnodelike': 3.0.0 '@apollo/utils.keyvaluecache': 4.0.0 '@apollo/utils.logger': 3.0.0 - '@apollo/utils.usagereporting': 2.1.0(graphql@16.11.0) + '@apollo/utils.usagereporting': 2.1.0(graphql@16.12.0) '@apollo/utils.withrequired': 3.0.0 - '@graphql-tools/schema': 10.0.25(graphql@16.11.0) + '@graphql-tools/schema': 10.0.31(graphql@16.12.0) async-retry: 1.3.3 - body-parser: 2.2.1 + body-parser: 2.2.2 cors: 2.8.5 finalhandler: 2.1.1 - graphql: 16.11.0 + graphql: 16.12.0 loglevel: 1.9.2 - lru-cache: 11.2.2 + lru-cache: 11.2.4 negotiator: 1.0.0 uuid: 11.1.0 whatwg-mimetype: 4.0.0 @@ -12302,9 +12138,9 @@ snapshots: '@apollo/utils.isnodelike': 3.0.0 sha.js: 2.4.12 - '@apollo/utils.dropunuseddefinitions@2.0.1(graphql@16.11.0)': + '@apollo/utils.dropunuseddefinitions@2.0.1(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 '@apollo/utils.fetcher@3.1.0': {} @@ -12313,47 +12149,47 @@ snapshots: '@apollo/utils.keyvaluecache@4.0.0': dependencies: '@apollo/utils.logger': 3.0.0 - lru-cache: 11.2.2 + lru-cache: 11.2.4 '@apollo/utils.logger@3.0.0': {} - '@apollo/utils.printwithreducedwhitespace@2.0.1(graphql@16.11.0)': + '@apollo/utils.printwithreducedwhitespace@2.0.1(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 - '@apollo/utils.removealiases@2.0.1(graphql@16.11.0)': + '@apollo/utils.removealiases@2.0.1(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 - '@apollo/utils.sortast@2.0.1(graphql@16.11.0)': + '@apollo/utils.sortast@2.0.1(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 lodash.sortby: 4.7.0 - '@apollo/utils.stripsensitiveliterals@2.0.1(graphql@16.11.0)': + '@apollo/utils.stripsensitiveliterals@2.0.1(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 - '@apollo/utils.usagereporting@2.1.0(graphql@16.11.0)': + '@apollo/utils.usagereporting@2.1.0(graphql@16.12.0)': dependencies: '@apollo/usage-reporting-protobuf': 4.1.1 - '@apollo/utils.dropunuseddefinitions': 2.0.1(graphql@16.11.0) - '@apollo/utils.printwithreducedwhitespace': 2.0.1(graphql@16.11.0) - '@apollo/utils.removealiases': 2.0.1(graphql@16.11.0) - '@apollo/utils.sortast': 2.0.1(graphql@16.11.0) - '@apollo/utils.stripsensitiveliterals': 2.0.1(graphql@16.11.0) - graphql: 16.11.0 + '@apollo/utils.dropunuseddefinitions': 2.0.1(graphql@16.12.0) + '@apollo/utils.printwithreducedwhitespace': 2.0.1(graphql@16.12.0) + '@apollo/utils.removealiases': 2.0.1(graphql@16.12.0) + '@apollo/utils.sortast': 2.0.1(graphql@16.12.0) + '@apollo/utils.stripsensitiveliterals': 2.0.1(graphql@16.12.0) + graphql: 16.12.0 '@apollo/utils.withrequired@3.0.0': {} - '@ardatan/relay-compiler@12.0.3(graphql@16.11.0)': + '@ardatan/relay-compiler@12.0.3(graphql@16.12.0)': dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 '@babel/runtime': 7.28.4 chalk: 4.1.2 fb-watchman: 2.0.2 - graphql: 16.11.0 + graphql: 16.12.0 immutable: 3.7.6 invariant: 2.2.4 nullthrows: 1.1.1 @@ -12362,11 +12198,11 @@ snapshots: transitivePeerDependencies: - encoding - '@as-integrations/azure-functions@0.2.2(@apollo/server@5.2.0(graphql@16.11.0))': + '@as-integrations/azure-functions@0.2.3(@apollo/server@5.2.0(graphql@16.12.0))': dependencies: - '@apollo/server': 5.2.0(graphql@16.11.0) + '@apollo/server': 5.2.0(graphql@16.12.0) '@azure/functions': 3.5.1 - '@azure/functions-v4': '@azure/functions@4.8.0' + '@azure/functions-v4': '@azure/functions@4.10.0' '@asamuzakjp/css-color@3.2.0': dependencies: @@ -12380,9 +12216,9 @@ snapshots: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 '@azure/core-tracing': 1.3.1 - '@typespec/ts-http-runtime': 0.3.1 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -12415,7 +12251,7 @@ snapshots: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 @@ -12427,7 +12263,7 @@ snapshots: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 transitivePeerDependencies: - supports-color @@ -12457,14 +12293,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/core-rest-pipeline@1.22.1': + '@azure/core-rest-pipeline@1.22.2': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.1 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -12476,11 +12312,13 @@ snapshots: '@azure/core-util@1.13.1': dependencies: '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.1 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color + '@azure/functions-extensions-base@0.2.0': {} + '@azure/functions-opentelemetry-instrumentation@0.1.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -12494,8 +12332,9 @@ snapshots: long: 4.0.0 uuid: 8.3.2 - '@azure/functions@4.8.0': + '@azure/functions@4.10.0': dependencies: + '@azure/functions-extensions-base': 0.2.0 cookie: 0.7.2 long: 4.0.0 undici: 5.29.0 @@ -12505,14 +12344,14 @@ snapshots: '@azure/abort-controller': 1.1.0 '@azure/core-auth': 1.10.1 '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 '@azure/msal-browser': 3.30.0 '@azure/msal-node': 2.16.3 events: 3.3.0 - jws: 4.0.0 + jws: 4.0.1 open: 8.4.2 stoppable: 1.1.0 tslib: 2.8.1 @@ -12524,7 +12363,7 @@ snapshots: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/logger': 1.3.0 @@ -12540,7 +12379,7 @@ snapshots: '@azure/core-http-compat': 2.3.1 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 '@azure/core-tracing': 1.3.1 '@azure/core-util': 1.13.1 '@azure/keyvault-common': 2.0.0 @@ -12551,7 +12390,7 @@ snapshots: '@azure/logger@1.3.0': dependencies: - '@typespec/ts-http-runtime': 0.3.1 + '@typespec/ts-http-runtime': 0.3.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -12560,7 +12399,7 @@ snapshots: dependencies: '@azure/core-auth': 1.10.1 '@azure/core-client': 1.10.1 - '@azure/core-rest-pipeline': 1.22.1 + '@azure/core-rest-pipeline': 1.22.2 '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.57.2 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) @@ -12568,7 +12407,7 @@ snapshots: '@opentelemetry/sdk-logs': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -12604,9 +12443,9 @@ snapshots: '@azure/core-tracing': 1.3.1 '@azure/logger': 1.3.0 '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.200.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-web': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-web': 2.3.0(@opentelemetry/api@1.9.0) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -12655,7 +12494,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.27.0 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -13310,7 +13149,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.46.0 + core-js-compat: 3.47.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -13347,7 +13186,7 @@ snapshots: '@babel/runtime-corejs3@7.28.4': dependencies: - core-js-pure: 3.46.0 + core-js-pure: 3.47.0 '@babel/runtime@7.28.4': {} @@ -13411,13 +13250,13 @@ snapshots: '@biomejs/cli-win32-x64@2.0.0': optional: true - '@chromatic-com/storybook@4.1.2(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': + '@chromatic-com/storybook@4.1.3(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: '@neoconfetti/react': 1.0.0 - chromatic: 12.2.0 + chromatic: 13.3.5 filesize: 10.1.6 jsonfile: 6.2.0 - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) strip-ansi: 7.1.2 transitivePeerDependencies: - '@chromatic-com/cypress' @@ -13473,9 +13312,9 @@ snapshots: '@csstools/postcss-cascade-layers@5.0.2(postcss@8.5.6)': dependencies: - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 '@csstools/postcss-color-function-display-p3-linear@1.0.1(postcss@8.5.6)': dependencies: @@ -13581,9 +13420,9 @@ snapshots: '@csstools/postcss-is-pseudo-class@5.0.3(postcss@8.5.6)': dependencies: - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 '@csstools/postcss-light-dark-function@2.0.11(postcss@8.5.6)': dependencies: @@ -13651,11 +13490,21 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 + '@csstools/postcss-position-area-property@1.0.0(postcss@8.5.6)': + dependencies: + postcss: 8.5.6 + '@csstools/postcss-progressive-custom-properties@4.2.1(postcss@8.5.6)': dependencies: postcss: 8.5.6 postcss-value-parser: 4.2.0 + '@csstools/postcss-property-rule-prelude-list@1.0.0(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + '@csstools/postcss-random-function@2.0.1(postcss@8.5.6)': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -13675,7 +13524,7 @@ snapshots: '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.6)': dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 '@csstools/postcss-sign-functions@1.1.4(postcss@8.5.6)': dependencies: @@ -13691,6 +13540,17 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.6 + '@csstools/postcss-syntax-descriptor-syntax-production@1.0.1(postcss@8.5.6)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + + '@csstools/postcss-system-ui-font-family@1.0.0(postcss@8.5.6)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + postcss: 8.5.6 + '@csstools/postcss-text-decoration-shorthand@4.0.3(postcss@8.5.6)': dependencies: '@csstools/color-helpers': 5.1.0 @@ -13708,13 +13568,13 @@ snapshots: dependencies: postcss: 8.5.6 - '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.0)': + '@csstools/selector-resolve-nested@3.1.0(postcss-selector-parser@7.1.1)': dependencies: - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.1)': dependencies: - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 '@csstools/utilities@2.0.0(postcss@8.5.6)': dependencies: @@ -13746,7 +13606,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) error-stack-parser: 2.1.4 figures: 3.2.0 - glob: 10.4.5 + glob: 10.5.0 has-ansi: 4.0.1 indent-string: 4.0.0 is-installed-globally: 0.4.0 @@ -13765,7 +13625,7 @@ snapshots: supports-color: 8.1.1 type-fest: 4.41.0 util-arity: 1.1.0 - yaml: 2.8.1 + yaml: 2.8.2 yup: 1.6.1 '@cucumber/gherkin-streams@5.0.1(@cucumber/gherkin@30.0.4)(@cucumber/message-streams@4.0.1(@cucumber/messages@27.2.0))(@cucumber/messages@27.2.0)': @@ -13864,23 +13724,33 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} - '@docsearch/css@3.9.0': {} - - '@docsearch/react@3.9.0(@algolia/client-search@5.41.0)(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)': - dependencies: - '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.41.0)(algoliasearch@5.41.0) - '@docsearch/css': 3.9.0 - algoliasearch: 5.41.0 + '@docsearch/core@4.4.0(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': optionalDependencies: - '@types/react': 19.2.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@types/react': 19.2.7 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + + '@docsearch/css@4.4.0': {} + + '@docsearch/react@4.4.0(@algolia/client-search@5.46.2)(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(search-insights@2.17.3)': + dependencies: + '@ai-sdk/react': 2.0.120(react@19.2.3)(zod@4.3.5) + '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.46.2)(algoliasearch@5.46.2)(search-insights@2.17.3) + '@docsearch/core': 4.4.0(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docsearch/css': 4.4.0 + ai: 5.0.118(zod@4.3.5) + algoliasearch: 5.46.2 + marked: 16.4.2 + zod: 4.3.5 + optionalDependencies: + '@types/react': 19.2.7 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/babel@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/core': 7.28.5 '@babel/generator': 7.28.5 @@ -13893,9 +13763,9 @@ snapshots: '@babel/runtime-corejs3': 7.28.4 '@babel/traverse': 7.28.5 '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) babel-plugin-dynamic-import-node: 2.3.3 - fs-extra: 11.3.2 + fs-extra: 11.3.3 tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -13906,32 +13776,32 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.9.2(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/bundler@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: '@babel/core': 7.28.5 - '@docusaurus/babel': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/babel': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@docusaurus/cssnano-preset': 3.9.2 '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.102.1) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.104.1) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.102.1) - css-loader: 6.11.0(webpack@5.102.1) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(lightningcss@1.30.2)(webpack@5.102.1) + copy-webpack-plugin: 11.0.0(webpack@5.104.1) + css-loader: 6.11.0(webpack@5.104.1) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.104.1) cssnano: 6.1.2(postcss@8.5.6) - file-loader: 6.2.0(webpack@5.102.1) + file-loader: 6.2.0(webpack@5.104.1) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.4(webpack@5.102.1) - null-loader: 4.0.1(webpack@5.102.1) + mini-css-extract-plugin: 2.9.4(webpack@5.104.1) + null-loader: 4.0.1(webpack@5.104.1) postcss: 8.5.6 - postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.102.1) - postcss-preset-env: 10.4.0(postcss@8.5.6) - terser-webpack-plugin: 5.3.14(webpack@5.102.1) + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.104.1) + postcss-preset-env: 10.6.0(postcss@8.5.6) + terser-webpack-plugin: 5.3.16(webpack@5.104.1) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1) - webpack: 5.102.1 - webpackbar: 6.0.1(webpack@5.102.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1) + webpack: 5.104.1 + webpackbar: 6.0.1(webpack@5.104.1) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -13947,52 +13817,52 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/babel': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/bundler': 3.9.2(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + '@docusaurus/babel': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/bundler': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0) + '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.3) boxen: 6.2.1 chalk: 4.1.2 chokidar: 3.6.0 cli-table3: 0.6.5 combine-promises: 1.2.0 commander: 5.1.0 - core-js: 3.46.0 + core-js: 3.47.0 detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 execa: 5.1.1 - fs-extra: 11.3.2 + fs-extra: 11.3.3 html-tags: 3.3.1 - html-webpack-plugin: 5.6.4(webpack@5.102.1) + html-webpack-plugin: 5.6.5(webpack@5.104.1) leven: 3.1.0 lodash: 4.17.21 open: 8.4.2 p-map: 4.0.0 prompts: 2.4.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)' - react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.0)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.0))(webpack@5.102.1) - react-router: 5.3.4(react@19.2.0) - react-router-config: 5.1.1(react-router@5.3.4(react@19.2.0))(react@19.2.0) - react-router-dom: 5.3.4(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.3)' + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.3))(webpack@5.104.1) + react-router: 5.3.4(react@19.2.3) + react-router-config: 5.1.1(react-router@5.3.4(react@19.2.3))(react@19.2.3) + react-router-dom: 5.3.4(react@19.2.3) semver: 7.7.3 serve-handler: 6.1.6 tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.102.1 + webpack: 5.104.1 webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.2(webpack@5.102.1) + webpack-dev-server: 5.2.2(webpack@5.104.1) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14023,22 +13893,22 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/mdx-loader@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@mdx-js/mdx': 3.1.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.5.0 - file-loader: 6.2.0(webpack@5.102.1) - fs-extra: 11.3.2 + file-loader: 6.2.0(webpack@5.104.1) + fs-extra: 11.3.3 image-size: 2.0.2 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) rehype-raw: 7.0.0 remark-directive: 3.0.1 remark-emoji: 4.0.1 @@ -14048,9 +13918,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1) vfile: 6.0.3 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - '@swc/core' - esbuild @@ -14058,17 +13928,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/module-type-aliases@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@types/history': 4.7.11 - '@types/react': 19.2.2 + '@types/react': 19.2.7 '@types/react-router-config': 5.0.11 '@types/react-router-dom': 5.3.3 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)' - react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.0)' + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)' + react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.3)' transitivePeerDependencies: - '@swc/core' - esbuild @@ -14076,29 +13946,29 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) cheerio: 1.0.0-rc.12 feed: 4.2.2 - fs-extra: 11.3.2 + fs-extra: 11.3.3 lodash: 4.17.21 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) schema-dts: 1.1.5 srcset: 4.0.0 tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14117,28 +13987,28 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 - fs-extra: 11.3.2 + fs-extra: 11.3.3 js-yaml: 4.1.1 lodash: 4.17.21 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14157,18 +14027,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-content-pages@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - fs-extra: 11.3.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + fs-extra: 11.3.3 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14187,12 +14057,12 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-css-cascade-layers@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14214,15 +14084,15 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-debug@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - fs-extra: 11.3.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-json-view-lite: 2.5.0(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + fs-extra: 11.3.3 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-json-view-lite: 2.5.0(react@19.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14242,13 +14112,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-google-analytics@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14268,14 +14138,14 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-google-gtag@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@types/gtag.js': 0.0.12 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14295,13 +14165,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-google-tag-manager@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -14321,17 +14191,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-sitemap@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - fs-extra: 11.3.2 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + fs-extra: 11.3.3 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) sitemap: 7.1.2 tslib: 2.8.1 transitivePeerDependencies: @@ -14352,18 +14222,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/plugin-svgr@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@svgr/core': 8.1.0(typescript@5.8.3) '@svgr/webpack': 8.1.0(typescript@5.8.3) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -14382,25 +14252,25 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.41.0)(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)(typescript@5.8.3)': - dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-css-cascade-layers': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-debug': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-google-analytics': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-google-gtag': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-google-tag-manager': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-sitemap': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-svgr': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/theme-classic': 3.9.2(@types/react@19.2.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.41.0)(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)(typescript@5.8.3) - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.46.2)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(search-insights@2.17.3)(typescript@5.8.3)': + dependencies: + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-css-cascade-layers': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-debug': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-google-analytics': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-google-gtag': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-google-tag-manager': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-sitemap': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-svgr': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/theme-classic': 3.9.2(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.46.2)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(search-insights@2.17.3)(typescript@5.8.3) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/faster' @@ -14422,37 +14292,37 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/react-loadable@6.0.0(react@19.2.0)': + '@docusaurus/react-loadable@6.0.0(react@19.2.3)': dependencies: - '@types/react': 19.2.2 - react: 19.2.0 + '@types/react': 19.2.7 + react: 19.2.3 - '@docusaurus/theme-classic@3.9.2(@types/react@19.2.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3)': + '@docusaurus/theme-classic@3.9.2(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@docusaurus/theme-translations': 3.9.2 - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.3) clsx: 2.1.1 infima: 0.2.0-alpha.45 lodash: 4.17.21 nprogress: 0.2.0 postcss: 8.5.6 - prism-react-renderer: 2.4.1(react@19.2.0) + prism-react-renderer: 2.4.1(react@19.2.3) prismjs: 1.30.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-router-dom: 5.3.4(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-router-dom: 5.3.4(react@19.2.3) rtlcss: 4.3.0 tslib: 2.8.1 utility-types: 3.11.0 @@ -14474,21 +14344,21 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@types/history': 4.7.11 - '@types/react': 19.2.2 + '@types/react': 19.2.7 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 - prism-react-renderer: 2.4.1(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + prism-react-renderer: 2.4.1(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 utility-types: 3.11.0 transitivePeerDependencies: @@ -14498,24 +14368,24 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.41.0)(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(@types/react@19.2.2)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3)(typescript@5.8.3)': + '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.46.2)(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(search-insights@2.17.3)(typescript@5.8.3)': dependencies: - '@docsearch/react': 3.9.0(@algolia/client-search@5.41.0)(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(search-insights@2.17.3) - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) + '@docsearch/react': 4.4.0(@algolia/client-search@5.46.2)(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(search-insights@2.17.3) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0))(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.8.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@docusaurus/theme-translations': 3.9.2 - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - algoliasearch: 5.41.0 - algoliasearch-helper: 3.26.0(algoliasearch@5.41.0) + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + algoliasearch: 5.46.2 + algoliasearch-helper: 3.27.0(algoliasearch@5.46.2) clsx: 2.1.1 eta: 2.2.0 - fs-extra: 11.3.2 + fs-extra: 11.3.3 lodash: 4.17.21 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) tslib: 2.8.1 utility-types: 3.11.0 transitivePeerDependencies: @@ -14541,22 +14411,22 @@ snapshots: '@docusaurus/theme-translations@3.9.2': dependencies: - fs-extra: 11.3.2 + fs-extra: 11.3.3 tslib: 2.8.1 - '@docusaurus/types@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/types@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@mdx-js/mdx': 3.1.1 '@types/history': 4.7.11 '@types/mdast': 4.0.4 - '@types/react': 19.2.2 + '@types/react': 19.2.7 commander: 5.1.0 joi: 17.13.3 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)' + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)' utility-types: 3.11.0 - webpack: 5.102.1 + webpack: 5.104.1 webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -14565,9 +14435,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/utils-common@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -14578,12 +14448,12 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/utils-validation@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - fs-extra: 11.3.2 + '@docusaurus/utils': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + fs-extra: 11.3.3 joi: 17.13.3 js-yaml: 4.1.1 lodash: 4.17.21 @@ -14597,15 +14467,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@docusaurus/utils@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@docusaurus/utils-common': 3.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@docusaurus/types': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@docusaurus/utils-common': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.102.1) - fs-extra: 11.3.2 + file-loader: 6.2.0(webpack@5.104.1) + fs-extra: 11.3.3 github-slugger: 1.5.0 globby: 11.1.0 gray-matter: 4.0.3 @@ -14617,9 +14487,9 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1) utility-types: 3.11.0 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - '@swc/core' - esbuild @@ -14629,13 +14499,13 @@ snapshots: - uglify-js - webpack-cli - '@emnapi/core@1.7.1': + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.7.1': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -14649,7 +14519,7 @@ snapshots: '@emotion/unitless@0.7.5': {} - '@envelop/core@5.3.2': + '@envelop/core@5.4.0': dependencies: '@envelop/instrumentation': 1.0.0 '@envelop/types': 5.2.1 @@ -14666,142 +14536,94 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 - '@esbuild/aix-ppc64@0.25.11': - optional: true - '@esbuild/aix-ppc64@0.25.12': optional: true '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/android-arm64@0.25.11': - optional: true - '@esbuild/android-arm64@0.25.12': optional: true '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/android-arm@0.25.11': - optional: true - '@esbuild/android-arm@0.25.12': optional: true '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/android-x64@0.25.11': - optional: true - '@esbuild/android-x64@0.25.12': optional: true '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.25.11': - optional: true - '@esbuild/darwin-arm64@0.25.12': optional: true '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/darwin-x64@0.25.11': - optional: true - '@esbuild/darwin-x64@0.25.12': optional: true '@esbuild/darwin-x64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.25.11': - optional: true - '@esbuild/freebsd-arm64@0.25.12': optional: true '@esbuild/freebsd-arm64@0.27.2': optional: true - '@esbuild/freebsd-x64@0.25.11': - optional: true - '@esbuild/freebsd-x64@0.25.12': optional: true '@esbuild/freebsd-x64@0.27.2': optional: true - '@esbuild/linux-arm64@0.25.11': - optional: true - '@esbuild/linux-arm64@0.25.12': optional: true '@esbuild/linux-arm64@0.27.2': optional: true - '@esbuild/linux-arm@0.25.11': - optional: true - '@esbuild/linux-arm@0.25.12': optional: true '@esbuild/linux-arm@0.27.2': optional: true - '@esbuild/linux-ia32@0.25.11': - optional: true - '@esbuild/linux-ia32@0.25.12': optional: true '@esbuild/linux-ia32@0.27.2': optional: true - '@esbuild/linux-loong64@0.25.11': - optional: true - '@esbuild/linux-loong64@0.25.12': optional: true '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.25.11': - optional: true - '@esbuild/linux-mips64el@0.25.12': optional: true '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-ppc64@0.25.11': - optional: true - '@esbuild/linux-ppc64@0.25.12': optional: true '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.25.11': - optional: true - '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.2': - optional: true - - '@esbuild/linux-s390x@0.25.11': + '@esbuild/linux-riscv64@0.27.2': optional: true '@esbuild/linux-s390x@0.25.12': @@ -14810,99 +14632,69 @@ snapshots: '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/linux-x64@0.25.11': - optional: true - '@esbuild/linux-x64@0.25.12': optional: true '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.25.11': - optional: true - '@esbuild/netbsd-arm64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/netbsd-x64@0.25.11': - optional: true - '@esbuild/netbsd-x64@0.25.12': optional: true '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.25.11': - optional: true - '@esbuild/openbsd-arm64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/openbsd-x64@0.25.11': - optional: true - '@esbuild/openbsd-x64@0.25.12': optional: true '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/openharmony-arm64@0.25.11': - optional: true - '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/sunos-x64@0.25.11': - optional: true - '@esbuild/sunos-x64@0.25.12': optional: true '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/win32-arm64@0.25.11': - optional: true - '@esbuild/win32-arm64@0.25.12': optional: true '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/win32-ia32@0.25.11': - optional: true - '@esbuild/win32-ia32@0.25.12': optional: true '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/win32-x64@0.25.11': - optional: true - '@esbuild/win32-x64@0.25.12': optional: true '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': dependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -14919,15 +14711,11 @@ snapshots: dependencies: '@eslint/core': 0.17.0 - '@eslint/core@0.16.0': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 debug: 4.4.3(supports-color@8.1.1) @@ -14941,7 +14729,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.38.0': {} + '@eslint/js@9.39.2': {} '@eslint/object-schema@2.1.7': {} @@ -14954,37 +14742,37 @@ snapshots: '@fastify/busboy@3.2.0': {} - '@graphql-codegen/add@5.0.3(graphql@16.11.0)': + '@graphql-codegen/add@5.0.3(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.6.3 - '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.1)(@types/node@24.10.4)(graphql@16.11.0)(typescript@5.8.3)': + '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.1)(@types/node@24.10.4)(graphql@16.12.0)(typescript@5.8.3)': dependencies: '@babel/generator': 7.28.5 '@babel/template': 7.27.2 '@babel/types': 7.28.5 - '@graphql-codegen/client-preset': 4.8.3(graphql@16.11.0) - '@graphql-codegen/core': 4.0.2(graphql@16.11.0) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-tools/apollo-engine-loader': 8.0.22(graphql@16.11.0) - '@graphql-tools/code-file-loader': 8.1.22(graphql@16.11.0) - '@graphql-tools/git-loader': 8.0.26(graphql@16.11.0) - '@graphql-tools/github-loader': 8.0.22(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/graphql-file-loader': 8.1.2(graphql@16.11.0) - '@graphql-tools/json-file-loader': 8.0.20(graphql@16.11.0) - '@graphql-tools/load': 8.1.2(graphql@16.11.0) - '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/url-loader': 8.0.33(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@whatwg-node/fetch': 0.10.11 + '@graphql-codegen/client-preset': 4.8.3(graphql@16.12.0) + '@graphql-codegen/core': 4.0.2(graphql@16.12.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-tools/apollo-engine-loader': 8.0.28(graphql@16.12.0) + '@graphql-tools/code-file-loader': 8.1.28(graphql@16.12.0) + '@graphql-tools/git-loader': 8.0.32(graphql@16.12.0) + '@graphql-tools/github-loader': 8.0.22(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.12.0) + '@graphql-tools/json-file-loader': 8.0.26(graphql@16.12.0) + '@graphql-tools/load': 8.1.8(graphql@16.12.0) + '@graphql-tools/prisma-loader': 8.0.17(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/url-loader': 8.0.33(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + '@whatwg-node/fetch': 0.10.13 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.8.3) debounce: 1.2.1 detect-indent: 6.1.0 - graphql: 16.11.0 - graphql-config: 5.1.5(@types/node@24.10.4)(graphql@16.11.0)(typescript@5.8.3) + graphql: 16.12.0 + graphql-config: 5.1.5(@types/node@24.10.4)(graphql@16.12.0)(typescript@5.8.3) inquirer: 8.2.7(@types/node@24.10.4) is-glob: 4.0.3 jiti: 1.21.7 @@ -14996,7 +14784,7 @@ snapshots: string-env-interpolation: 1.0.1 ts-log: 2.2.7 tslib: 2.8.1 - yaml: 2.8.1 + yaml: 2.8.2 yargs: 17.7.2 optionalDependencies: '@parcel/watcher': 2.5.1 @@ -15014,126 +14802,126 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-codegen/client-preset@4.8.3(graphql@16.11.0)': + '@graphql-codegen/client-preset@4.8.3(graphql@16.12.0)': dependencies: '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@graphql-codegen/add': 5.0.3(graphql@16.11.0) - '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.11.0) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/typed-document-node': 5.1.2(graphql@16.11.0) - '@graphql-codegen/typescript': 4.1.6(graphql@16.11.0) - '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) - '@graphql-tools/documents': 1.0.1(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-codegen/add': 5.0.3(graphql@16.12.0) + '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.12.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/typed-document-node': 5.1.2(graphql@16.12.0) + '@graphql-codegen/typescript': 4.1.6(graphql@16.12.0) + '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) + '@graphql-tools/documents': 1.0.1(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/core@4.0.2(graphql@16.11.0)': + '@graphql-codegen/core@4.0.2(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-tools/schema': 10.0.25(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-tools/schema': 10.0.31(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.6.3 - '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.11.0)': + '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) auto-bind: 4.0.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/introspection@4.0.3(graphql@16.11.0)': + '@graphql-codegen/introspection@4.0.3(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.11.0)': + '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.11.0 + graphql: 16.12.0 import-from: 4.0.0 lodash: 4.17.21 tslib: 2.6.3 - '@graphql-codegen/schema-ast@4.1.0(graphql@16.11.0)': + '@graphql-codegen/schema-ast@4.1.0(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.6.3 - '@graphql-codegen/typed-document-node@5.1.2(graphql@16.11.0)': + '@graphql-codegen/typed-document-node@5.1.2(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) auto-bind: 4.0.0 change-case-all: 1.0.15 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/typescript-operations@4.6.1(graphql@16.11.0)': + '@graphql-codegen/typescript-operations@4.6.1(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/typescript': 4.1.6(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/typescript': 4.1.6(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) auto-bind: 4.0.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/typescript-resolvers@4.5.2(graphql@16.11.0)': + '@graphql-codegen/typescript-resolvers@4.5.2(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/typescript': 4.1.6(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/typescript': 4.1.6(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) auto-bind: 4.0.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/typescript@4.1.6(graphql@16.11.0)': + '@graphql-codegen/typescript@4.1.6(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-codegen/schema-ast': 4.1.0(graphql@16.11.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-codegen/schema-ast': 4.1.0(graphql@16.12.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.12.0) auto-bind: 4.0.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.11.0)': + '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.12.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.11.0) - '@graphql-tools/optimize': 2.0.0(graphql@16.11.0) - '@graphql-tools/relay-operation-optimizer': 7.0.21(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.12.0) + '@graphql-tools/optimize': 2.0.0(graphql@16.12.0) + '@graphql-tools/relay-operation-optimizer': 7.0.27(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.11.0 - graphql-tag: 2.12.6(graphql@16.11.0) + graphql: 16.12.0 + graphql-tag: 2.12.6(graphql@16.12.0) parse-filepath: 1.0.2 tslib: 2.6.3 transitivePeerDependencies: @@ -15141,92 +14929,92 @@ snapshots: '@graphql-hive/signal@1.0.0': {} - '@graphql-tools/apollo-engine-loader@8.0.22(graphql@16.11.0)': + '@graphql-tools/apollo-engine-loader@8.0.28(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@whatwg-node/fetch': 0.10.11 - graphql: 16.11.0 - sync-fetch: 0.6.0-2 + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + '@whatwg-node/fetch': 0.10.13 + graphql: 16.12.0 + sync-fetch: 0.6.0 tslib: 2.8.1 - '@graphql-tools/batch-execute@8.5.1(graphql@16.11.0)': + '@graphql-tools/batch-execute@8.5.1(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 8.9.0(graphql@16.11.0) + '@graphql-tools/utils': 8.9.0(graphql@16.12.0) dataloader: 2.1.0 - graphql: 16.11.0 - tslib: 2.8.1 + graphql: 16.12.0 + tslib: 2.4.1 value-or-promise: 1.0.11 - '@graphql-tools/batch-execute@9.0.19(graphql@16.11.0)': + '@graphql-tools/batch-execute@9.0.19(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/code-file-loader@8.1.22(graphql@16.11.0)': + '@graphql-tools/code-file-loader@8.1.28(graphql@16.12.0)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.21(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.12.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) globby: 11.1.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/delegate@10.2.23(graphql@16.11.0)': + '@graphql-tools/delegate@10.2.23(graphql@16.12.0)': dependencies: - '@graphql-tools/batch-execute': 9.0.19(graphql@16.11.0) - '@graphql-tools/executor': 1.4.9(graphql@16.11.0) - '@graphql-tools/schema': 10.0.25(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/batch-execute': 9.0.19(graphql@16.12.0) + '@graphql-tools/executor': 1.5.1(graphql@16.12.0) + '@graphql-tools/schema': 10.0.31(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 dset: 3.1.4 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/delegate@8.8.1(graphql@16.11.0)': + '@graphql-tools/delegate@8.8.1(graphql@16.12.0)': dependencies: - '@graphql-tools/batch-execute': 8.5.1(graphql@16.11.0) - '@graphql-tools/schema': 8.5.1(graphql@16.11.0) - '@graphql-tools/utils': 8.9.0(graphql@16.11.0) + '@graphql-tools/batch-execute': 8.5.1(graphql@16.12.0) + '@graphql-tools/schema': 8.5.1(graphql@16.12.0) + '@graphql-tools/utils': 8.9.0(graphql@16.12.0) dataloader: 2.1.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.4.1 value-or-promise: 1.0.11 - '@graphql-tools/documents@1.0.1(graphql@16.11.0)': + '@graphql-tools/documents@1.0.1(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 lodash.sortby: 4.7.0 tslib: 2.8.1 - '@graphql-tools/executor-common@0.0.4(graphql@16.11.0)': + '@graphql-tools/executor-common@0.0.4(graphql@16.12.0)': dependencies: - '@envelop/core': 5.3.2 - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@envelop/core': 5.4.0 + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + graphql: 16.12.0 - '@graphql-tools/executor-common@0.0.6(graphql@16.11.0)': + '@graphql-tools/executor-common@0.0.6(graphql@16.12.0)': dependencies: - '@envelop/core': 5.3.2 - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@envelop/core': 5.4.0 + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + graphql: 16.12.0 - '@graphql-tools/executor-graphql-ws@2.0.7(graphql@16.11.0)': + '@graphql-tools/executor-graphql-ws@2.0.7(graphql@16.12.0)': dependencies: - '@graphql-tools/executor-common': 0.0.6(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/executor-common': 0.0.6(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) '@whatwg-node/disposablestack': 0.0.6 - graphql: 16.11.0 - graphql-ws: 6.0.6(graphql@16.11.0)(ws@8.18.3) - isomorphic-ws: 5.0.0(ws@8.18.3) + graphql: 16.12.0 + graphql-ws: 6.0.6(graphql@16.12.0)(ws@8.19.0) + isomorphic-ws: 5.0.0(ws@8.19.0) tslib: 2.8.1 - ws: 8.18.3 + ws: 8.19.0 transitivePeerDependencies: - '@fastify/websocket' - bufferutil @@ -15234,48 +15022,48 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@24.10.4)(graphql@16.11.0)': + '@graphql-tools/executor-http@1.3.3(@types/node@24.10.4)(graphql@16.12.0)': dependencies: '@graphql-hive/signal': 1.0.0 - '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/executor-common': 0.0.4(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 - '@whatwg-node/fetch': 0.10.11 + '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.11.0 + graphql: 16.12.0 meros: 1.3.2(@types/node@24.10.4) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - '@graphql-tools/executor-legacy-ws@1.1.19(graphql@16.11.0)': + '@graphql-tools/executor-legacy-ws@1.1.25(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) '@types/ws': 8.18.1 - graphql: 16.11.0 - isomorphic-ws: 5.0.0(ws@8.18.3) + graphql: 16.12.0 + isomorphic-ws: 5.0.0(ws@8.19.0) tslib: 2.8.1 - ws: 8.18.3 + ws: 8.19.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@graphql-tools/executor@1.4.9(graphql@16.11.0)': + '@graphql-tools/executor@1.5.1(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/git-loader@8.0.26(graphql@16.11.0)': + '@graphql-tools/git-loader@8.0.32(graphql@16.12.0)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.21(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.12.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + graphql: 16.12.0 is-glob: 4.0.3 micromatch: 4.0.8 tslib: 2.8.1 @@ -15283,109 +15071,109 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.22(@types/node@24.10.4)(graphql@16.11.0)': + '@graphql-tools/github-loader@8.0.22(@types/node@24.10.4)(graphql@16.12.0)': dependencies: - '@graphql-tools/executor-http': 1.3.3(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/graphql-tag-pluck': 8.3.21(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@whatwg-node/fetch': 0.10.11 + '@graphql-tools/executor-http': 1.3.3(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.11.0 + graphql: 16.12.0 sync-fetch: 0.6.0-2 tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - supports-color - '@graphql-tools/graphql-file-loader@8.1.2(graphql@16.11.0)': + '@graphql-tools/graphql-file-loader@8.1.9(graphql@16.12.0)': dependencies: - '@graphql-tools/import': 7.1.2(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/import': 7.1.9(graphql@16.12.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) globby: 11.1.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/graphql-tag-pluck@8.3.21(graphql@16.11.0)': + '@graphql-tools/graphql-tag-pluck@8.3.27(graphql@16.12.0)': dependencies: '@babel/core': 7.28.5 '@babel/parser': 7.28.5 '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/import@7.1.2(graphql@16.11.0)': + '@graphql-tools/import@7.1.9(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@theguild/federation-composition': 0.20.2(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + '@theguild/federation-composition': 0.21.1(graphql@16.12.0) + graphql: 16.12.0 resolve-from: 5.0.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/json-file-loader@8.0.20(graphql@16.11.0)': + '@graphql-tools/json-file-loader@8.0.26(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) globby: 11.1.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/load-files@7.0.1(graphql@16.11.0)': + '@graphql-tools/load-files@7.0.1(graphql@16.12.0)': dependencies: globby: 11.1.0 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/load@8.1.2(graphql@16.11.0)': + '@graphql-tools/load@8.1.8(graphql@16.12.0)': dependencies: - '@graphql-tools/schema': 10.0.25(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/schema': 10.0.31(graphql@16.12.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + graphql: 16.12.0 p-limit: 3.1.0 tslib: 2.8.1 - '@graphql-tools/merge@8.3.1(graphql@16.11.0)': + '@graphql-tools/merge@8.3.1(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 8.9.0(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/utils': 8.9.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/merge@9.1.1(graphql@16.11.0)': + '@graphql-tools/merge@9.1.7(graphql@16.12.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/optimize@2.0.0(graphql@16.11.0)': + '@graphql-tools/optimize@2.0.0(graphql@16.12.0)': dependencies: - graphql: 16.11.0 - tslib: 2.8.1 + graphql: 16.12.0 + tslib: 2.6.3 - '@graphql-tools/prisma-loader@8.0.17(@types/node@24.10.4)(graphql@16.11.0)': + '@graphql-tools/prisma-loader@8.0.17(@types/node@24.10.4)(graphql@16.12.0)': dependencies: - '@graphql-tools/url-loader': 8.0.33(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/url-loader': 8.0.33(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) '@types/js-yaml': 4.0.9 - '@whatwg-node/fetch': 0.10.11 + '@whatwg-node/fetch': 0.10.13 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) dotenv: 16.6.1 - graphql: 16.11.0 - graphql-request: 6.1.0(graphql@16.11.0) + graphql: 16.12.0 + graphql-request: 6.1.0(graphql@16.12.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 jose: 5.10.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 lodash: 4.17.21 scuid: 1.1.0 tslib: 2.8.1 @@ -15400,45 +15188,45 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/relay-operation-optimizer@7.0.21(graphql@16.11.0)': + '@graphql-tools/relay-operation-optimizer@7.0.27(graphql@16.12.0)': dependencies: - '@ardatan/relay-compiler': 12.0.3(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 - tslib: 2.8.1 + '@ardatan/relay-compiler': 12.0.3(graphql@16.12.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + graphql: 16.12.0 + tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-tools/schema@10.0.25(graphql@16.11.0)': + '@graphql-tools/schema@10.0.31(graphql@16.12.0)': dependencies: - '@graphql-tools/merge': 9.1.1(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/merge': 9.1.7(graphql@16.12.0) + '@graphql-tools/utils': 11.0.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/schema@8.5.1(graphql@16.11.0)': + '@graphql-tools/schema@8.5.1(graphql@16.12.0)': dependencies: - '@graphql-tools/merge': 8.3.1(graphql@16.11.0) - '@graphql-tools/utils': 8.9.0(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/merge': 8.3.1(graphql@16.12.0) + '@graphql-tools/utils': 8.9.0(graphql@16.12.0) + graphql: 16.12.0 tslib: 2.8.1 value-or-promise: 1.0.11 - '@graphql-tools/url-loader@8.0.33(@types/node@24.10.4)(graphql@16.11.0)': + '@graphql-tools/url-loader@8.0.33(@types/node@24.10.4)(graphql@16.12.0)': dependencies: - '@graphql-tools/executor-graphql-ws': 2.0.7(graphql@16.11.0) - '@graphql-tools/executor-http': 1.3.3(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/executor-legacy-ws': 1.1.19(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) - '@graphql-tools/wrap': 10.1.4(graphql@16.11.0) + '@graphql-tools/executor-graphql-ws': 2.0.7(graphql@16.12.0) + '@graphql-tools/executor-http': 1.3.3(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/executor-legacy-ws': 1.1.25(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) + '@graphql-tools/wrap': 10.1.4(graphql@16.12.0) '@types/ws': 8.18.1 - '@whatwg-node/fetch': 0.10.11 + '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.11.0 - isomorphic-ws: 5.0.0(ws@8.18.3) + graphql: 16.12.0 + isomorphic-ws: 5.0.0(ws@8.19.0) sync-fetch: 0.6.0-2 tslib: 2.8.1 - ws: 8.18.3 + ws: 8.19.0 transitivePeerDependencies: - '@fastify/websocket' - '@types/node' @@ -15447,34 +15235,41 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/utils@10.9.1(graphql@16.11.0)': + '@graphql-tools/utils@10.11.0(graphql@16.12.0)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 - dset: 3.1.4 - graphql: 16.11.0 + graphql: 16.12.0 + tslib: 2.8.1 + + '@graphql-tools/utils@11.0.0(graphql@16.12.0)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) + '@whatwg-node/promise-helpers': 1.3.2 + cross-inspect: 1.0.1 + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/utils@8.9.0(graphql@16.11.0)': + '@graphql-tools/utils@8.9.0(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-tools/wrap@10.1.4(graphql@16.11.0)': + '@graphql-tools/wrap@10.1.4(graphql@16.12.0)': dependencies: - '@graphql-tools/delegate': 10.2.23(graphql@16.11.0) - '@graphql-tools/schema': 10.0.25(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/delegate': 10.2.23(graphql@16.12.0) + '@graphql-tools/schema': 10.0.31(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': + '@graphql-typed-document-node/core@3.2.0(graphql@16.12.0)': dependencies: - graphql: 16.11.0 + graphql: 16.12.0 - '@grpc/grpc-js@1.14.0': + '@grpc/grpc-js@1.14.3': dependencies: '@grpc/proto-loader': 0.8.0 '@js-sdsl/ordered-map': 4.4.2 @@ -15503,10 +15298,10 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/external-editor@1.0.2(@types/node@24.10.4)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.4)': dependencies: - chardet: 2.1.0 - iconv-lite: 0.7.0 + chardet: 2.1.1 + iconv-lite: 0.7.2 optionalDependencies: '@types/node': 24.10.4 @@ -15535,15 +15330,15 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 24.10.4 - '@types/yargs': 17.0.34 + '@types/yargs': 17.0.35 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: glob: 10.5.0 magic-string: 0.30.21 react-docgen-typescript: 2.4.0(typescript@5.8.3) - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: typescript: 5.8.3 @@ -15650,22 +15445,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.2.2)(react@19.2.0)': + '@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.3)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.2.2 - react: 19.2.0 + '@types/react': 19.2.7 + react: 19.2.3 '@microsoft/applicationinsights-web-snippet@1.0.1': {} - '@mongodb-js/saslprep@1.3.2': + '@mongodb-js/saslprep@1.4.4': dependencies: sparse-bitfield: 3.0.3 - '@napi-rs/wasm-runtime@1.1.0': + '@napi-rs/wasm-runtime@1.1.1': dependencies: - '@emnapi/core': 1.7.1 - '@emnapi/runtime': 1.7.1 + '@emnapi/core': 1.8.1 + '@emnapi/runtime': 1.8.1 '@tybys/wasm-util': 0.10.1 optional: true @@ -15683,7 +15478,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 + fastq: 1.20.1 '@opentelemetry/api-logs@0.200.0': dependencies: @@ -15713,14 +15508,14 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@2.3.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/exporter-logs-otlp-grpc@0.57.2(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-exporter-base': 0.57.2(@opentelemetry/api@1.9.0) @@ -15750,7 +15545,7 @@ snapshots: '@opentelemetry/exporter-metrics-otlp-grpc@0.57.2(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/exporter-metrics-otlp-http': 0.57.2(@opentelemetry/api@1.9.0) @@ -15788,7 +15583,7 @@ snapshots: '@opentelemetry/exporter-trace-otlp-grpc@0.57.2(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-exporter-base': 0.57.2(@opentelemetry/api@1.9.0) @@ -15850,9 +15645,9 @@ snapshots: '@opentelemetry/instrumentation-mongoose@0.47.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': 0.200.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 transitivePeerDependencies: - supports-color @@ -15899,7 +15694,7 @@ snapshots: '@opentelemetry/otlp-grpc-exporter-base@0.57.2(@opentelemetry/api@1.9.0)': dependencies: - '@grpc/grpc-js': 1.14.0 + '@grpc/grpc-js': 1.14.3 '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/otlp-exporter-base': 0.57.2(@opentelemetry/api@1.9.0) @@ -15932,11 +15727,11 @@ snapshots: '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@2.3.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0)': dependencies: @@ -15984,12 +15779,12 @@ snapshots: '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@2.3.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.3.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.38.0 '@opentelemetry/sdk-trace-node@1.30.1(@opentelemetry/api@1.9.0)': dependencies: @@ -16001,81 +15796,81 @@ snapshots: '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) semver: 7.7.3 - '@opentelemetry/sdk-trace-web@2.2.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-web@2.3.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.3.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.3.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions@1.25.1': {} '@opentelemetry/semantic-conventions@1.28.0': {} - '@opentelemetry/semantic-conventions@1.37.0': {} + '@opentelemetry/semantic-conventions@1.38.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.15.0': + '@oxc-resolver/binding-android-arm-eabi@11.16.2': optional: true - '@oxc-resolver/binding-android-arm64@11.15.0': + '@oxc-resolver/binding-android-arm64@11.16.2': optional: true - '@oxc-resolver/binding-darwin-arm64@11.15.0': + '@oxc-resolver/binding-darwin-arm64@11.16.2': optional: true - '@oxc-resolver/binding-darwin-x64@11.15.0': + '@oxc-resolver/binding-darwin-x64@11.16.2': optional: true - '@oxc-resolver/binding-freebsd-x64@11.15.0': + '@oxc-resolver/binding-freebsd-x64@11.16.2': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.16.2': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0': + '@oxc-resolver/binding-linux-arm-musleabihf@11.16.2': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.15.0': + '@oxc-resolver/binding-linux-arm64-gnu@11.16.2': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.15.0': + '@oxc-resolver/binding-linux-arm64-musl@11.16.2': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0': + '@oxc-resolver/binding-linux-ppc64-gnu@11.16.2': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0': + '@oxc-resolver/binding-linux-riscv64-gnu@11.16.2': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.15.0': + '@oxc-resolver/binding-linux-riscv64-musl@11.16.2': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.15.0': + '@oxc-resolver/binding-linux-s390x-gnu@11.16.2': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.15.0': + '@oxc-resolver/binding-linux-x64-gnu@11.16.2': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.15.0': + '@oxc-resolver/binding-linux-x64-musl@11.16.2': optional: true - '@oxc-resolver/binding-openharmony-arm64@11.15.0': + '@oxc-resolver/binding-openharmony-arm64@11.16.2': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.15.0': + '@oxc-resolver/binding-wasm32-wasi@11.16.2': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.1.1 optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.15.0': + '@oxc-resolver/binding-win32-arm64-msvc@11.16.2': optional: true - '@oxc-resolver/binding-win32-ia32-msvc@11.15.0': + '@oxc-resolver/binding-win32-ia32-msvc@11.16.2': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.15.0': + '@oxc-resolver/binding-win32-x64-msvc@11.16.2': optional: true - '@paralleldrive/cuid2@2.2.2': + '@paralleldrive/cuid2@2.3.1': dependencies: '@noble/hashes': 1.8.0 @@ -16142,9 +15937,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.56.1': + '@playwright/test@1.57.0': dependencies: - playwright: 1.56.1 + playwright: 1.57.0 '@pnpm/config.env-replace@1.1.0': {} @@ -16183,163 +15978,171 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@rc-component/async-validator@5.0.4': + '@rc-component/async-validator@5.1.0': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/color-picker@2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/color-picker@2.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@ant-design/fast-color': 2.0.6 '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@rc-component/context@1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/context@1.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) '@rc-component/mini-decimal@1.1.0': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/mutate-observer@1.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/mutate-observer@1.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@rc-component/portal@1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/portal@1.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@rc-component/qrcode@1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/qrcode@1.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 - classnames: 2.5.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@rc-component/tour@1.15.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/tour@1.15.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@rc-component/trigger@2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/trigger@2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@rc-component/util@1.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@rc-component/util@1.7.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: is-mobile: 5.0.0 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) react-is: 18.3.1 '@repeaterjs/repeater@3.0.6': {} '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rollup/pluginutils@5.3.0(rollup@4.53.5)': + '@rollup/pluginutils@5.3.0(rollup@4.55.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.5 + rollup: 4.55.1 + + '@rollup/rollup-android-arm-eabi@4.55.1': + optional: true + + '@rollup/rollup-android-arm64@4.55.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.55.1': + optional: true - '@rollup/rollup-android-arm-eabi@4.53.5': + '@rollup/rollup-darwin-x64@4.55.1': optional: true - '@rollup/rollup-android-arm64@4.53.5': + '@rollup/rollup-freebsd-arm64@4.55.1': optional: true - '@rollup/rollup-darwin-arm64@4.53.5': + '@rollup/rollup-freebsd-x64@4.55.1': optional: true - '@rollup/rollup-darwin-x64@4.53.5': + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': optional: true - '@rollup/rollup-freebsd-arm64@4.53.5': + '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true - '@rollup/rollup-freebsd-x64@4.53.5': + '@rollup/rollup-linux-arm64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.5': + '@rollup/rollup-linux-arm64-musl@4.55.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.5': + '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.5': + '@rollup/rollup-linux-loong64-musl@4.55.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.5': + '@rollup/rollup-linux-ppc64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.5': + '@rollup/rollup-linux-ppc64-musl@4.55.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.5': + '@rollup/rollup-linux-riscv64-musl@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.5': + '@rollup/rollup-linux-s390x-gnu@4.55.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.5': + '@rollup/rollup-linux-x64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.5': + '@rollup/rollup-linux-x64-musl@4.55.1': optional: true - '@rollup/rollup-linux-x64-musl@4.53.5': + '@rollup/rollup-openbsd-x64@4.55.1': optional: true - '@rollup/rollup-openharmony-arm64@4.53.5': + '@rollup/rollup-openharmony-arm64@4.55.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.5': + '@rollup/rollup-win32-arm64-msvc@4.55.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.5': + '@rollup/rollup-win32-ia32-msvc@4.55.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.5': + '@rollup/rollup-win32-x64-gnu@4.55.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.5': + '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true '@sendgrid/client@8.1.6': dependencies: '@sendgrid/helpers': 8.0.0 - axios: 1.13.1 + axios: 1.13.2 transitivePeerDependencies: - debug @@ -16386,65 +16189,65 @@ snapshots: dependencies: '@sentry/types': 7.120.4 - '@serenity-js/assertions@3.35.2': + '@serenity-js/assertions@3.37.1': dependencies: - '@serenity-js/core': 3.35.2 - tiny-types: 1.24.1 + '@serenity-js/core': 3.37.1 + tiny-types: 1.24.3 - '@serenity-js/console-reporter@3.35.2': + '@serenity-js/console-reporter@3.37.1': dependencies: - '@serenity-js/core': 3.35.2 + '@serenity-js/core': 3.37.1 chalk: 4.1.2 - tiny-types: 1.24.1 + tiny-types: 1.24.3 - '@serenity-js/core@3.35.2': + '@serenity-js/core@3.37.1': dependencies: - '@paralleldrive/cuid2': 2.2.2 + '@paralleldrive/cuid2': 2.3.1 chalk: 4.1.2 diff: 6.0.0 error-stack-parser: 2.1.4 fast-glob: 3.3.3 filenamify: 4.3.0 graceful-fs: 4.2.11 - semver: 7.7.2 - tiny-types: 1.24.1 + semver: 7.7.3 + tiny-types: 1.24.3 upath: 2.0.1 validate-npm-package-name: 6.0.2 - '@serenity-js/cucumber@3.35.2(@cucumber/cucumber@11.3.0)': + '@serenity-js/cucumber@3.37.1(@cucumber/cucumber@11.3.0)': dependencies: '@cucumber/messages': 26.0.1 - '@serenity-js/core': 3.35.2 + '@serenity-js/core': 3.37.1 cli-table3: 0.6.5 gherkin: 5.1.0 - tiny-types: 1.24.1 + tiny-types: 1.24.3 optionalDependencies: '@cucumber/cucumber': 11.3.0 - '@serenity-js/rest@3.35.2': + '@serenity-js/rest@3.37.1': dependencies: - '@serenity-js/core': 3.35.2 + '@serenity-js/core': 3.37.1 agent-base: 7.1.4 - axios: 1.11.0 + axios: 1.13.2 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - lru-cache: 11.2.2 - tiny-types: 1.24.1 + lru-cache: 11.2.4 + tiny-types: 1.24.3 transitivePeerDependencies: - debug - supports-color - '@serenity-js/serenity-bdd@3.35.2': + '@serenity-js/serenity-bdd@3.37.1': dependencies: - '@serenity-js/assertions': 3.35.2 - '@serenity-js/core': 3.35.2 - '@serenity-js/rest': 3.35.2 + '@serenity-js/assertions': 3.37.1 + '@serenity-js/core': 3.37.1 + '@serenity-js/rest': 3.37.1 ansi-regex: 5.0.1 - axios: 1.11.0 + axios: 1.13.2 chalk: 4.1.2 find-java-home: 2.0.0 progress: 2.0.3 - tiny-types: 1.24.1 + tiny-types: 1.24.3 which: 5.0.0 yargs: 17.7.2 transitivePeerDependencies: @@ -16467,13 +16270,13 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} - '@slorber/react-helmet-async@1.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@slorber/react-helmet-async@1.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 invariant: 2.2.4 prop-types: 15.8.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) react-fast-compare: 3.2.2 shallowequal: 1.1.0 @@ -16485,20 +16288,20 @@ snapshots: '@so-ric/colorspace@1.1.6': dependencies: - color: 5.0.2 + color: 5.0.3 text-hex: 1.0.0 - '@sonar/scan@4.3.2': + '@sonar/scan@4.3.4': dependencies: adm-zip: 0.5.16 - axios: 1.12.2 + axios: 1.13.2 commander: 13.1.0 - fs-extra: 11.3.2 + fs-extra: 11.3.3 hpagent: 1.2.0 - node-forge: 1.3.2 - properties-file: 3.6.1 + node-forge: 1.3.3 + properties-file: 3.6.3 proxy-from-env: 1.1.0 - semver: 7.7.2 + semver: 7.7.3 slugify: 1.6.6 tar-stream: 3.1.7 transitivePeerDependencies: @@ -16506,99 +16309,99 @@ snapshots: - debug - react-native-b4a - '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} - '@storybook/addon-a11y@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': + '@storybook/addon-a11y@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: '@storybook/global': 5.0.0 - axe-core: 4.11.0 - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - - '@storybook/addon-docs@9.1.17(@types/react@19.2.2)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': - dependencies: - '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.2.0) - '@storybook/csf-plugin': 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) - '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@storybook/react-dom-shim': 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + axe-core: 4.11.1 + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + + '@storybook/addon-docs@9.1.17(@types/react@19.2.7)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.3) + '@storybook/csf-plugin': 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + '@storybook/icons': 1.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@storybook/react-dom-shim': 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-onboarding@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': + '@storybook/addon-onboarding@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@storybook/addon-vitest@9.1.17(@vitest/browser-playwright@4.0.15)(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(@vitest/runner@4.0.15)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vitest@4.0.15)': + '@storybook/addon-vitest@9.1.17(@vitest/browser-playwright@4.0.16)(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(@vitest/runner@4.0.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vitest@4.0.16)': dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@storybook/icons': 1.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) prompts: 2.4.2 - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) ts-dedent: 2.2.0 optionalDependencies: - '@vitest/browser': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) - '@vitest/browser-playwright': 4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) - '@vitest/runner': 4.0.15 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + '@vitest/browser': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) + '@vitest/browser-playwright': 4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) + '@vitest/runner': 4.0.16 + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - react - react-dom - '@storybook/builder-vite@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@storybook/builder-vite@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@storybook/csf-plugin': 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@storybook/csf-plugin': 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) ts-dedent: 2.2.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@storybook/csf-plugin@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': + '@storybook/csf-plugin@9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} - '@storybook/icons@1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@storybook/icons@1.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@storybook/react-dom-shim@9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))': + '@storybook/react-dom-shim@9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) - '@storybook/react-vite@9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rollup@4.53.5)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@storybook/react-vite@9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.55.1)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@rollup/pluginutils': 5.3.0(rollup@4.53.5) - '@storybook/builder-vite': 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@storybook/react': 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@rollup/pluginutils': 5.3.0(rollup@4.55.1) + '@storybook/builder-vite': 9.1.17(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@storybook/react': 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3) find-up: 7.0.0 magic-string: 0.30.21 - react: 19.2.0 + react: 19.2.3 react-docgen: 8.0.2 - react-dom: 19.2.0(react@19.2.0) + react-dom: 19.2.3(react@19.2.3) resolve: 1.22.11 - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) tsconfig-paths: 4.2.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(typescript@5.8.3)': + '@storybook/react@9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)))(typescript@5.8.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.17(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@storybook/react-dom-shim': 9.1.17(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + storybook: 9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) optionalDependencies: typescript: 5.8.3 @@ -16721,25 +16524,25 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@testing-library/react@16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.4 '@testing-library/dom': 10.4.1 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - '@types/react': 19.2.2 - '@types/react-dom': 19.2.2(@types/react@19.2.2) + '@types/react': 19.2.7 + '@types/react-dom': 19.2.3(@types/react@19.2.7) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: '@testing-library/dom': 10.4.1 - '@theguild/federation-composition@0.20.2(graphql@16.11.0)': + '@theguild/federation-composition@0.21.1(graphql@16.12.0)': dependencies: constant-case: 3.0.4 debug: 4.4.3(supports-color@8.1.1) - graphql: 16.11.0 + graphql: 16.12.0 json5: 2.2.3 lodash.sortby: 4.7.0 transitivePeerDependencies: @@ -16753,7 +16556,7 @@ snapshots: minimatch: 10.1.1 path-browserify: 1.0.1 - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -16805,7 +16608,7 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.1.0 + '@types/express-serve-static-core': 4.19.7 '@types/node': 24.10.4 '@types/connect@3.4.38': @@ -16845,13 +16648,6 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 1.2.1 - '@types/express-serve-static-core@5.1.0': - dependencies: - '@types/node': 24.10.4 - '@types/qs': 6.14.0 - '@types/range-parser': 1.2.7 - '@types/send': 1.2.1 - '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 @@ -16900,7 +16696,7 @@ snapshots: '@types/ms': 2.1.0 '@types/node': 24.10.4 - '@types/lodash@4.17.20': {} + '@types/lodash@4.17.21': {} '@types/long@4.0.2': {} @@ -16942,32 +16738,32 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.2.2(@types/react@19.2.2)': + '@types/react-dom@19.2.3(@types/react@19.2.7)': dependencies: - '@types/react': 19.2.2 + '@types/react': 19.2.7 '@types/react-router-config@5.0.11': dependencies: '@types/history': 4.7.11 - '@types/react': 19.2.2 + '@types/react': 19.2.7 '@types/react-router': 5.1.20 '@types/react-router-dom@5.3.3': dependencies: '@types/history': 4.7.11 - '@types/react': 19.2.2 + '@types/react': 19.2.7 '@types/react-router': 5.1.20 '@types/react-router@5.1.20': dependencies: '@types/history': 4.7.11 - '@types/react': 19.2.2 + '@types/react': 19.2.7 - '@types/react@19.2.2': + '@types/react@19.2.7': dependencies: - csstype: 3.1.3 + csstype: 3.2.3 - '@types/readable-stream@4.0.22': + '@types/readable-stream@4.0.23': dependencies: '@types/node': 24.10.4 @@ -17015,7 +16811,7 @@ snapshots: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 '@types/node': 22.19.3 - form-data: 4.0.4 + form-data: 4.0.5 '@types/supertest@6.0.3': dependencies: @@ -17030,7 +16826,7 @@ snapshots: '@types/uuid@10.0.0': {} - '@types/validator@13.15.4': {} + '@types/validator@13.15.10': {} '@types/webidl-conversions@7.0.3': {} @@ -17044,104 +16840,102 @@ snapshots: '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.34': + '@types/yargs@17.0.35': dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.46.2 - eslint: 9.38.0(jiti@2.6.1) - graphemer: 1.4.0 + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/type-utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.52.0 + eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) + ts-api-utils: 2.4.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3)': + '@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.52.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.2(typescript@5.8.3)': + '@typescript-eslint/project-service@8.52.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.8.3) - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.8.3) + '@typescript-eslint/types': 8.52.0 debug: 4.4.3(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.2': + '@typescript-eslint/scope-manager@8.52.0': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 - '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.52.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.8.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 9.38.0(jiti@2.6.1) - ts-api-utils: 2.1.0(typescript@5.8.3) + eslint: 9.39.2(jiti@2.6.1) + ts-api-utils: 2.4.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.2': {} + '@typescript-eslint/types@8.52.0': {} - '@typescript-eslint/typescript-estree@8.46.2(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.52.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.46.2(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.8.3) - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/visitor-keys': 8.46.2 + '@typescript-eslint/project-service': 8.52.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.52.0(typescript@5.8.3) + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/visitor-keys': 8.52.0 debug: 4.4.3(supports-color@8.1.1) - fast-glob: 3.3.3 - is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.3 - ts-api-utils: 2.1.0(typescript@5.8.3) + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3)': + '@typescript-eslint/utils@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.46.2 - '@typescript-eslint/types': 8.46.2 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.8.3) - eslint: 9.38.0(jiti@2.6.1) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.52.0 + '@typescript-eslint/types': 8.52.0 + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.8.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.2': + '@typescript-eslint/visitor-keys@8.52.0': dependencies: - '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/types': 8.52.0 eslint-visitor-keys: 4.2.1 - '@typespec/ts-http-runtime@0.3.1': + '@typespec/ts-http-runtime@0.3.2': dependencies: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -17151,7 +16945,9 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@4.7.0(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vercel/oidc@3.0.5': {} + + '@vitejs/plugin-react@4.7.0(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -17159,17 +16955,17 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitest/browser-playwright@4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15)': + '@vitest/browser-playwright@4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16)': dependencies: - '@vitest/browser': 4.0.15(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - playwright: 1.56.1 + '@vitest/browser': 4.0.16(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + playwright: 1.57.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - bufferutil - msw @@ -17177,30 +16973,30 @@ snapshots: - vite optional: true - '@vitest/browser-playwright@4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15)': + '@vitest/browser-playwright@4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16)': dependencies: - '@vitest/browser': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - playwright: 1.56.1 + '@vitest/browser': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + playwright: 1.57.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.0.15(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15)': + '@vitest/browser@4.0.16(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16)': dependencies: - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/utils': 4.0.15 + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/utils': 4.0.16 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - ws: 8.18.3 + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + ws: 8.19.0 transitivePeerDependencies: - bufferutil - msw @@ -17208,28 +17004,28 @@ snapshots: - vite optional: true - '@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15)': + '@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16)': dependencies: - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/utils': 4.0.15 + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/utils': 4.0.16 magic-string: 0.30.21 pixelmatch: 7.1.0 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - ws: 8.18.3 + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) + ws: 8.19.0 transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/coverage-v8@4.0.15(@vitest/browser@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15))(vitest@4.0.15)': + '@vitest/coverage-v8@4.0.16(@vitest/browser@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16))(vitest@4.0.16)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.15 - ast-v8-to-istanbul: 0.3.8 + '@vitest/utils': 4.0.16 + ast-v8-to-istanbul: 0.3.10 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -17238,9 +17034,9 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) optionalDependencies: - '@vitest/browser': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) + '@vitest/browser': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) transitivePeerDependencies: - supports-color @@ -17252,55 +17048,55 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.0.15': + '@vitest/expect@4.0.16': dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 - chai: 6.2.1 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 + chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.15(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.15 + '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/mocker@4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.15 + '@vitest/spy': 4.0.16 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.0.15': + '@vitest/pretty-format@4.0.16': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.15': + '@vitest/runner@4.0.16': dependencies: - '@vitest/utils': 4.0.15 + '@vitest/utils': 4.0.16 pathe: 2.0.3 - '@vitest/snapshot@4.0.15': + '@vitest/snapshot@4.0.16': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.0.16 magic-string: 0.30.21 pathe: 2.0.3 @@ -17308,7 +17104,7 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.0.15': {} + '@vitest/spy@4.0.16': {} '@vitest/utils@3.2.4': dependencies: @@ -17316,9 +17112,9 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.0.15': + '@vitest/utils@4.0.16': dependencies: - '@vitest/pretty-format': 4.0.15 + '@vitest/pretty-format': 4.0.16 tinyrainbow: 3.0.3 '@webassemblyjs/ast@1.14.1': @@ -17402,12 +17198,12 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 - '@whatwg-node/fetch@0.10.11': + '@whatwg-node/fetch@0.10.13': dependencies: - '@whatwg-node/node-fetch': 0.8.1 + '@whatwg-node/node-fetch': 0.8.5 urlpattern-polyfill: 10.1.0 - '@whatwg-node/node-fetch@0.8.1': + '@whatwg-node/node-fetch@0.8.5': dependencies: '@fastify/busboy': 3.2.0 '@whatwg-node/disposablestack': 0.0.6 @@ -17486,6 +17282,14 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 + ai@5.0.118(zod@4.3.5): + dependencies: + '@ai-sdk/gateway': 2.0.24(zod@4.3.5) + '@ai-sdk/provider': 2.0.1 + '@ai-sdk/provider-utils': 3.0.20(zod@4.3.5) + '@opentelemetry/api': 1.9.0 + zod: 4.3.5 + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -17513,27 +17317,27 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch-helper@3.26.0(algoliasearch@5.41.0): + algoliasearch-helper@3.27.0(algoliasearch@5.46.2): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 5.41.0 - - algoliasearch@5.41.0: - dependencies: - '@algolia/abtesting': 1.7.0 - '@algolia/client-abtesting': 5.41.0 - '@algolia/client-analytics': 5.41.0 - '@algolia/client-common': 5.41.0 - '@algolia/client-insights': 5.41.0 - '@algolia/client-personalization': 5.41.0 - '@algolia/client-query-suggestions': 5.41.0 - '@algolia/client-search': 5.41.0 - '@algolia/ingestion': 1.41.0 - '@algolia/monitoring': 1.41.0 - '@algolia/recommend': 5.41.0 - '@algolia/requester-browser-xhr': 5.41.0 - '@algolia/requester-fetch': 5.41.0 - '@algolia/requester-node-http': 5.41.0 + algoliasearch: 5.46.2 + + algoliasearch@5.46.2: + dependencies: + '@algolia/abtesting': 1.12.2 + '@algolia/client-abtesting': 5.46.2 + '@algolia/client-analytics': 5.46.2 + '@algolia/client-common': 5.46.2 + '@algolia/client-insights': 5.46.2 + '@algolia/client-personalization': 5.46.2 + '@algolia/client-query-suggestions': 5.46.2 + '@algolia/client-search': 5.46.2 + '@algolia/ingestion': 1.46.2 + '@algolia/monitoring': 1.46.2 + '@algolia/recommend': 5.46.2 + '@algolia/requester-browser-xhr': 5.46.2 + '@algolia/requester-fetch': 5.46.2 + '@algolia/requester-node-http': 5.46.2 ansi-align@3.0.1: dependencies: @@ -17563,57 +17367,57 @@ snapshots: ansi-styles@6.2.3: {} - antd@5.27.6(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + antd@5.29.3(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@ant-design/colors': 7.2.1 - '@ant-design/cssinjs': 1.24.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@ant-design/cssinjs-utils': 1.1.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@ant-design/cssinjs': 1.24.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@ant-design/fast-color': 2.0.6 - '@ant-design/icons': 5.6.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@ant-design/react-slick': 1.1.2(react@19.2.0) + '@ant-design/icons': 5.6.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@ant-design/react-slick': 1.1.2(react@19.2.3) '@babel/runtime': 7.28.4 - '@rc-component/color-picker': 2.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/mutate-observer': 1.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/qrcode': 1.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/tour': 1.15.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/color-picker': 2.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@rc-component/mutate-observer': 1.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@rc-component/qrcode': 1.1.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@rc-component/tour': 1.15.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 copy-to-clipboard: 3.3.3 - dayjs: 1.11.18 - rc-cascader: 3.34.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-checkbox: 3.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-collapse: 3.9.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-dialog: 9.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-drawer: 7.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-dropdown: 4.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-field-form: 2.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-image: 7.12.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-input: 1.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-input-number: 9.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-mentions: 2.20.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-menu: 9.16.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-notification: 5.6.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-pagination: 5.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-picker: 4.11.3(dayjs@1.11.18)(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-progress: 4.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-rate: 2.13.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-segmented: 2.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-select: 14.16.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-slider: 11.1.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-steps: 6.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-switch: 4.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-table: 7.54.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-tabs: 15.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-textarea: 1.10.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-tooltip: 6.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-tree: 5.13.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-tree-select: 5.27.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-upload: 4.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + dayjs: 1.11.19 + rc-cascader: 3.34.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-checkbox: 3.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-collapse: 3.9.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-dialog: 9.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-drawer: 7.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-dropdown: 4.2.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-field-form: 2.7.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-image: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-input: 1.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-input-number: 9.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-mentions: 2.20.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-menu: 9.16.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-notification: 5.6.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-pagination: 5.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-picker: 4.11.3(dayjs@1.11.19)(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-progress: 4.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-rate: 2.13.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-segmented: 2.7.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-select: 14.16.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-slider: 11.1.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-steps: 6.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-switch: 4.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-table: 7.54.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-tabs: 15.7.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-textarea: 1.10.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-tooltip: 6.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-tree: 5.13.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-tree-select: 5.27.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-upload: 4.11.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) scroll-into-view-if-needed: 3.1.0 throttle-debounce: 5.0.2 transitivePeerDependencies: @@ -17639,7 +17443,7 @@ snapshots: '@opentelemetry/api': 1.9.0 '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.37.0 + '@opentelemetry/semantic-conventions': 1.38.0 cls-hooked: 4.2.2 continuation-local-storage: 3.2.1 diagnostic-channel: 1.1.1 @@ -17684,7 +17488,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -17707,7 +17511,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.8: + ast-v8-to-istanbul@0.3.10: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -17742,12 +17546,11 @@ snapshots: auto-bind@4.0.0: {} - autoprefixer@10.4.21(postcss@8.5.6): + autoprefixer@10.4.23(postcss@8.5.6): dependencies: - browserslist: 4.27.0 - caniuse-lite: 1.0.30001751 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001763 + fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -17758,7 +17561,7 @@ snapshots: aws-ssl-profiles@1.1.2: {} - axe-core@4.11.0: {} + axe-core@4.11.1: {} axios-cookiejar-support@4.0.7(axios@1.12.0)(tough-cookie@4.1.3)(undici@5.29.0): dependencies: @@ -17778,38 +17581,22 @@ snapshots: axios@0.27.2: dependencies: follow-redirects: 1.15.11(debug@4.4.3) - form-data: 4.0.4 - transitivePeerDependencies: - - debug - - axios@1.11.0: - dependencies: - follow-redirects: 1.15.11(debug@4.4.3) - form-data: 4.0.4 - proxy-from-env: 1.1.0 + form-data: 4.0.5 transitivePeerDependencies: - debug axios@1.12.0: dependencies: follow-redirects: 1.15.11(debug@4.4.3) - form-data: 4.0.4 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - axios@1.12.2: - dependencies: - follow-redirects: 1.15.11(debug@4.4.3) - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - axios@1.13.1: + axios@1.13.2: dependencies: follow-redirects: 1.15.11(debug@4.4.3) - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -17821,23 +17608,23 @@ snapshots: args: 5.0.3 axios: 0.27.2 etag: 1.8.1 - express: 4.21.2 - fs-extra: 11.3.2 + express: 4.22.1 + fs-extra: 11.3.3 glob-to-regexp: 0.4.1 - jsonwebtoken: 9.0.2 + jsonwebtoken: 9.0.3 lokijs: 1.5.12 morgan: 1.10.1 multistream: 2.1.1 - mysql2: 3.15.3 + mysql2: 3.16.0 rimraf: 3.0.2 - sequelize: 6.37.7(mysql2@3.15.3)(tedious@16.7.1) + sequelize: 6.37.7(mysql2@3.16.0)(tedious@16.7.1) stoppable: 1.1.0 tedious: 16.7.1 to-readable-stream: 2.1.0 tslib: 2.8.1 uri-templates: 0.2.0 uuid: 3.4.0 - winston: 3.18.3 + winston: 3.19.0 xml2js: 0.6.2 transitivePeerDependencies: - applicationinsights-native-metrics @@ -17853,12 +17640,12 @@ snapshots: b4a@1.7.3: {} - babel-loader@9.2.1(@babel/core@7.28.5)(webpack@5.102.1): + babel-loader@9.2.1(@babel/core@7.28.5)(webpack@5.104.1): dependencies: '@babel/core': 7.28.5 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.102.1 + webpack: 5.104.1 babel-plugin-dynamic-import-node@2.3.3: dependencies: @@ -17877,7 +17664,7 @@ snapshots: dependencies: '@babel/core': 7.28.5 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.46.0 + core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color @@ -17892,13 +17679,13 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.8.1: {} + bare-events@2.8.2: {} base64-js@1.5.1: {} base64url@3.0.1: {} - baseline-browser-mapping@2.8.21: {} + baseline-browser-mapping@2.9.13: {} basic-auth@2.0.1: dependencies: @@ -17920,39 +17707,39 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - bl@6.1.4: + bl@6.1.6: dependencies: - '@types/readable-stream': 4.0.22 + '@types/readable-stream': 4.0.23 buffer: 6.0.3 inherits: 2.0.4 readable-stream: 4.7.0 - body-parser@1.20.3: + body-parser@1.20.4: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 + qs: 6.14.1 + raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - body-parser@2.2.1: + body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 4.4.3(supports-color@8.1.1) - http-errors: 2.0.0 - iconv-lite: 0.7.0 + http-errors: 2.0.1 + iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.14.0 + qs: 6.14.1 raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: @@ -18002,13 +17789,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.27.0: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.21 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.243 + baseline-browser-mapping: 2.9.13 + caniuse-lite: 1.0.30001763 + electron-to-chromium: 1.5.267 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.27.0) + update-browserslist-db: 1.2.3(browserslist@4.28.1) bser@2.1.1: dependencies: @@ -18049,7 +17836,7 @@ snapshots: http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.1.0 + normalize-url: 8.1.1 responselike: 3.0.0 call-bind-apply-helpers@1.0.2: @@ -18076,7 +17863,7 @@ snapshots: camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.8.1 + tslib: 2.6.3 camelcase@5.0.0: {} @@ -18086,12 +17873,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.27.0 - caniuse-lite: 1.0.30001751 + browserslist: 4.28.1 + caniuse-lite: 1.0.30001763 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001751: {} + caniuse-lite@1.0.30001763: {} capital-case@1.0.4: dependencies: @@ -18119,12 +17906,12 @@ snapshots: chai@5.3.3: dependencies: assertion-error: 2.0.1 - check-error: 2.1.1 + check-error: 2.1.3 deep-eql: 5.0.2 loupe: 3.2.1 pathval: 2.0.1 - chai@6.2.1: {} + chai@6.2.2: {} chalk@2.4.2: dependencies: @@ -18165,7 +17952,7 @@ snapshots: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 char-regex@1.0.2: {} @@ -18177,13 +17964,13 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@2.1.0: {} + chardet@2.1.1: {} check-error@1.0.3: dependencies: get-func-name: 2.0.2 - check-error@2.1.1: {} + check-error@2.1.3: {} cheerio-select@2.1.0: dependencies: @@ -18216,7 +18003,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chromatic@12.2.0: {} + chromatic@13.3.5: {} chrome-trace-event@1.0.4: {} @@ -18291,24 +18078,24 @@ snapshots: dependencies: color-name: 1.1.4 - color-convert@3.1.2: + color-convert@3.1.3: dependencies: - color-name: 2.0.2 + color-name: 2.1.0 color-name@1.1.3: {} color-name@1.1.4: {} - color-name@2.0.2: {} + color-name@2.1.0: {} - color-string@2.1.2: + color-string@2.1.4: dependencies: - color-name: 2.0.2 + color-name: 2.1.0 - color@5.0.2: + color@5.0.3: dependencies: - color-convert: 3.1.2 - color-string: 2.1.2 + color-convert: 3.1.3 + color-string: 2.1.4 colord@2.9.3: {} @@ -18393,7 +18180,7 @@ snapshots: constant-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 upper-case: 2.0.2 content-disposition@0.5.2: {} @@ -18411,13 +18198,13 @@ snapshots: convert-source-map@2.0.0: {} - cookie-signature@1.0.6: {} + cookie-signature@1.0.7: {} - cookie@0.7.1: {} + cookie-signature@1.2.2: {} cookie@0.7.2: {} - cookie@1.0.2: {} + cookie@1.1.1: {} cookiejar@2.1.4: {} @@ -18425,7 +18212,7 @@ snapshots: dependencies: toggle-selection: 1.0.6 - copy-webpack-plugin@11.0.0(webpack@5.102.1): + copy-webpack-plugin@11.0.0(webpack@5.104.1): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -18433,15 +18220,15 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.102.1 + webpack: 5.104.1 - core-js-compat@3.46.0: + core-js-compat@3.47.0: dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 - core-js-pure@3.46.0: {} + core-js-pure@3.47.0: {} - core-js@3.46.0: {} + core-js@3.47.0: {} core-util-is@1.0.3: {} @@ -18453,7 +18240,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.8.3): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -18503,20 +18290,20 @@ snapshots: css-blank-pseudo@7.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 - css-declaration-sorter@7.3.0(postcss@8.5.6): + css-declaration-sorter@7.3.1(postcss@8.5.6): dependencies: postcss: 8.5.6 css-has-pseudo@7.0.3(postcss@8.5.6): dependencies: - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.102.1): + css-loader@6.11.0(webpack@5.104.1): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -18527,9 +18314,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.104.1 - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(lightningcss@1.30.2)(webpack@5.102.1): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.104.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.6) @@ -18537,10 +18324,9 @@ snapshots: postcss: 8.5.6 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.102.1 + webpack: 5.104.1 optionalDependencies: clean-css: 5.3.3 - lightningcss: 1.30.2 css-prefers-color-scheme@10.0.0(postcss@8.5.6): dependencies: @@ -18576,14 +18362,14 @@ snapshots: css.escape@1.5.1: {} - cssdb@8.4.2: {} + cssdb@8.6.0: {} cssesc@3.0.0: {} cssnano-preset-advanced@6.1.2(postcss@8.5.6): dependencies: - autoprefixer: 10.4.21(postcss@8.5.6) - browserslist: 4.27.0 + autoprefixer: 10.4.23(postcss@8.5.6) + browserslist: 4.28.1 cssnano-preset-default: 6.1.2(postcss@8.5.6) postcss: 8.5.6 postcss-discard-unused: 6.0.5(postcss@8.5.6) @@ -18593,8 +18379,8 @@ snapshots: cssnano-preset-default@6.1.2(postcss@8.5.6): dependencies: - browserslist: 4.27.0 - css-declaration-sorter: 7.3.0(postcss@8.5.6) + browserslist: 4.28.1 + css-declaration-sorter: 7.3.1(postcss@8.5.6) cssnano-utils: 4.0.2(postcss@8.5.6) postcss: 8.5.6 postcss-calc: 9.0.1(postcss@8.5.6) @@ -18644,7 +18430,7 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - csstype@3.1.3: {} + csstype@3.2.3: {} cybersource-rest-client@0.0.73(undici@5.29.0): dependencies: @@ -18657,12 +18443,12 @@ snapshots: https-proxy-agent: 7.0.6 jwt-simple: 0.5.6 memory-cache: 0.2.0 - node-forge: 1.3.2 + node-forge: 1.3.3 node-jose: 2.2.0 promise: 8.3.0 tough-cookie: 4.1.3 - winston: 3.18.3 - winston-daily-rotate-file: 4.7.1(winston@3.18.3) + winston: 3.19.0 + winston-daily-rotate-file: 4.7.1(winston@3.19.0) transitivePeerDependencies: - deasync - debug @@ -18698,7 +18484,7 @@ snapshots: dataloader@2.2.3: {} - dayjs@1.11.18: {} + dayjs@1.11.19: {} debounce@1.2.1: {} @@ -18734,12 +18520,12 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} + default-browser-id@5.0.1: {} - default-browser@5.2.1: + default-browser@5.4.0: dependencies: bundle-name: 4.1.0 - default-browser-id: 5.0.0 + default-browser-id: 5.0.1 defaults@1.0.4: dependencies: @@ -18781,9 +18567,6 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.1.2: - optional: true - detect-node@2.1.0: {} detect-port@1.6.1: @@ -18871,7 +18654,7 @@ snapshots: dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 dot-prop@6.0.1: dependencies: @@ -18903,7 +18686,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.243: {} + electron-to-chromium@1.5.267: {} emitter-listener@1.1.2: dependencies: @@ -18921,11 +18704,9 @@ snapshots: enabled@2.0.0: {} - encodeurl@1.0.2: {} - encodeurl@2.0.0: {} - enhanced-resolve@5.18.3: + enhanced-resolve@5.18.4: dependencies: graceful-fs: 4.2.11 tapable: 2.3.0 @@ -18944,7 +18725,7 @@ snapshots: dependencies: stackframe: 1.3.4 - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -19005,7 +18786,7 @@ snapshots: dependencies: define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 function-bind: 1.1.2 globalthis: 1.0.4 @@ -19018,6 +18799,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -19060,35 +18843,6 @@ snapshots: transitivePeerDependencies: - supports-color - esbuild@0.25.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 - esbuild@0.25.12: optionalDependencies: '@esbuild/aix-ppc64': 0.25.12 @@ -19161,13 +18915,13 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-plugin-react-hooks@5.2.0(eslint@9.38.0(jiti@2.6.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) - eslint-plugin-react-refresh@0.4.24(eslint@9.38.0(jiti@2.6.1)): + eslint-plugin-react-refresh@0.4.26(eslint@9.39.2(jiti@2.6.1)): dependencies: - eslint: 9.38.0(jiti@2.6.1) + eslint: 9.39.2(jiti@2.6.1) eslint-scope@5.1.1: dependencies: @@ -19183,15 +18937,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.38.0(jiti@2.6.1): + eslint@9.39.2(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.1 '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.16.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.38.0 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.3 + '@eslint/js': 9.39.2 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 @@ -19205,7 +18959,7 @@ snapshots: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 - esquery: 1.6.0 + esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 @@ -19232,7 +18986,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.6.0: + esquery@1.7.0: dependencies: estraverse: 5.3.0 @@ -19310,12 +19064,14 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.1 + bare-events: 2.8.2 transitivePeerDependencies: - bare-abort-controller events@3.3.0: {} + eventsource-parser@3.0.6: {} + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -19328,74 +19084,38 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expect-type@1.2.2: {} - - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color + expect-type@1.3.0: {} express@4.22.1: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.3 + body-parser: 1.20.4 content-disposition: 0.5.4 content-type: 1.0.5 cookie: 0.7.2 - cookie-signature: 1.0.6 + cookie-signature: 1.0.7 debug: 2.6.9 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.3.1 + finalhandler: 1.3.2 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.14.1 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 + send: 0.19.2 + serve-static: 1.16.3 setprototypeof: 1.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 1.6.18 utils-merge: 1.0.1 vary: 1.1.2 @@ -19428,7 +19148,7 @@ snapshots: fast-uri@3.1.0: {} - fastq@1.19.1: + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -19485,11 +19205,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.102.1): + file-loader@6.2.0(webpack@5.104.1): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.104.1 file-stream-rotator@0.6.1: dependencies: @@ -19509,14 +19229,14 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.3.1: + finalhandler@1.3.2: dependencies: debug: 2.6.9 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 unpipe: 1.0.0 transitivePeerDependencies: - supports-color @@ -19528,7 +19248,7 @@ snapshots: escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -19608,7 +19328,7 @@ snapshots: mime-types: 2.1.35 safe-buffer: 5.2.1 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -19628,13 +19348,13 @@ snapshots: formidable@3.5.4: dependencies: - '@paralleldrive/cuid2': 2.2.2 + '@paralleldrive/cuid2': 2.3.1 dezalgo: 1.0.4 once: 1.4.0 forwarded@0.2.0: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} fresh@0.5.2: {} @@ -19646,7 +19366,7 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.2: + fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 @@ -19739,15 +19459,6 @@ snapshots: dependencies: find-index: 0.1.1 - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@10.5.0: dependencies: foreground-child: 3.3.1 @@ -19757,14 +19468,11 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 1.11.1 - glob@11.0.3: + glob@13.0.0: dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.1 minimatch: 10.1.1 minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 + path-scurry: 2.0.1 glob@7.2.3: dependencies: @@ -19790,7 +19498,7 @@ snapshots: globals@14.0.0: {} - globals@16.4.0: {} + globals@16.5.0: {} globalthis@1.0.4: dependencies: @@ -19843,18 +19551,16 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - - graphql-config@5.1.5(@types/node@24.10.4)(graphql@16.11.0)(typescript@5.8.3): + graphql-config@5.1.5(@types/node@24.10.4)(graphql@16.12.0)(typescript@5.8.3): dependencies: - '@graphql-tools/graphql-file-loader': 8.1.2(graphql@16.11.0) - '@graphql-tools/json-file-loader': 8.0.20(graphql@16.11.0) - '@graphql-tools/load': 8.1.2(graphql@16.11.0) - '@graphql-tools/merge': 9.1.1(graphql@16.11.0) - '@graphql-tools/url-loader': 8.0.33(@types/node@24.10.4)(graphql@16.11.0) - '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.12.0) + '@graphql-tools/json-file-loader': 8.0.26(graphql@16.12.0) + '@graphql-tools/load': 8.1.8(graphql@16.12.0) + '@graphql-tools/merge': 9.1.7(graphql@16.12.0) + '@graphql-tools/url-loader': 8.0.33(@types/node@24.10.4)(graphql@16.12.0) + '@graphql-tools/utils': 10.11.0(graphql@16.12.0) cosmiconfig: 8.3.6(typescript@5.8.3) - graphql: 16.11.0 + graphql: 16.12.0 jiti: 2.6.1 minimatch: 9.0.5 string-env-interpolation: 1.0.1 @@ -19869,50 +19575,50 @@ snapshots: - uWebSockets.js - utf-8-validate - graphql-depth-limit@1.1.0(graphql@16.11.0): + graphql-depth-limit@1.1.0(graphql@16.12.0): dependencies: arrify: 1.0.1 - graphql: 16.11.0 + graphql: 16.12.0 - graphql-middleware@6.1.35(graphql@16.11.0): + graphql-middleware@6.1.35(graphql@16.12.0): dependencies: - '@graphql-tools/delegate': 8.8.1(graphql@16.11.0) - '@graphql-tools/schema': 8.5.1(graphql@16.11.0) - graphql: 16.11.0 + '@graphql-tools/delegate': 8.8.1(graphql@16.12.0) + '@graphql-tools/schema': 8.5.1(graphql@16.12.0) + graphql: 16.12.0 - graphql-request@6.1.0(graphql@16.11.0): + graphql-request@6.1.0(graphql@16.12.0): dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) cross-fetch: 3.2.0 - graphql: 16.11.0 + graphql: 16.12.0 transitivePeerDependencies: - encoding - graphql-scalars@1.25.0(graphql@16.11.0): + graphql-scalars@1.25.0(graphql@16.12.0): dependencies: - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - graphql-tag@2.12.6(graphql@16.11.0): + graphql-tag@2.12.6(graphql@16.12.0): dependencies: - graphql: 16.11.0 + graphql: 16.12.0 tslib: 2.8.1 - graphql-ws@6.0.6(graphql@16.11.0)(ws@8.18.3): + graphql-ws@6.0.6(graphql@16.12.0)(ws@8.19.0): dependencies: - graphql: 16.11.0 + graphql: 16.12.0 optionalDependencies: - ws: 8.18.3 + ws: 8.19.0 graphql@14.7.0: dependencies: iterall: 1.3.0 - graphql@16.11.0: {} + graphql@16.12.0: {} gray-matter@4.0.3: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 kind-of: 6.0.3 section-matter: 1.0.0 strip-bom-string: 1.0.0 @@ -19974,7 +19680,7 @@ snapshots: '@types/unist': 3.0.3 '@ungap/structured-clone': 1.3.0 hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.0 + hast-util-to-parse5: 8.0.1 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.1 parse5: 7.3.0 @@ -19999,7 +19705,7 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.18 + style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -20019,18 +19725,18 @@ snapshots: mdast-util-mdxjs-esm: 2.0.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.18 + style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 transitivePeerDependencies: - supports-color - hast-util-to-parse5@8.0.0: + hast-util-to-parse5@8.0.1: dependencies: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 devlop: 1.1.0 - property-information: 6.5.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -20052,7 +19758,7 @@ snapshots: header-case@2.0.4: dependencies: capital-case: 1.0.4 - tslib: 2.8.1 + tslib: 2.6.3 history@4.10.1: dependencies: @@ -20094,7 +19800,7 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.44.0 + terser: 5.44.1 html-minifier-terser@7.2.0: dependencies: @@ -20104,13 +19810,13 @@ snapshots: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.44.0 + terser: 5.44.1 html-tags@3.3.1: {} html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.4(webpack@5.102.1): + html-webpack-plugin@5.6.5(webpack@5.104.1): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -20118,7 +19824,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: - webpack: 5.102.1 + webpack: 5.104.1 htmlparser2@6.1.0: dependencies: @@ -20152,14 +19858,6 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -20232,7 +19930,7 @@ snapshots: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.7.0: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -20291,11 +19989,11 @@ snapshots: ini@2.0.0: {} - inline-style-parser@0.2.4: {} + inline-style-parser@0.2.7: {} inquirer@8.2.7(@types/node@24.10.4): dependencies: - '@inquirer/external-editor': 1.0.2(@types/node@24.10.4) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.4) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -20325,7 +20023,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.2.0: {} + ipaddr.js@2.3.0: {} is-absolute@1.0.0: dependencies: @@ -20432,7 +20130,7 @@ snapshots: is-lower-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 is-map@2.0.3: {} @@ -20515,7 +20213,7 @@ snapshots: is-upper-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 is-weakmap@2.0.2: {} @@ -20552,9 +20250,9 @@ snapshots: isobject@3.0.1: {} - isomorphic-ws@5.0.0(ws@8.18.3): + isomorphic-ws@5.0.0(ws@8.19.0): dependencies: - ws: 8.18.3 + ws: 8.19.0 istanbul-lib-coverage@3.2.2: {} @@ -20585,10 +20283,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jackspeak@4.1.1: - dependencies: - '@isaacs/cliui': 8.0.2 - jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -20631,15 +20325,11 @@ snapshots: js-tokens@9.0.1: {} - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -20655,7 +20345,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.22 + nwsapi: 2.2.23 parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -20666,7 +20356,7 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.3 + ws: 8.19.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -20683,6 +20373,8 @@ snapshots: json-schema-traverse@1.0.0: {} + json-schema@0.4.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json-stringify-safe@5.0.1: {} @@ -20704,19 +20396,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonwebtoken@9.0.2: - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.7.3 - jsonwebtoken@9.0.3: dependencies: jws: 4.0.1 @@ -20730,28 +20409,12 @@ snapshots: ms: 2.1.3 semver: 7.7.3 - jwa@1.4.2: - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - jws@3.2.2: - dependencies: - jwa: 1.4.2 - safe-buffer: 5.2.1 - - jws@4.0.0: - dependencies: - jwa: 2.0.1 - safe-buffer: 5.2.1 - jws@4.0.1: dependencies: jwa: 2.0.1 @@ -20771,7 +20434,7 @@ snapshots: kleur@3.0.3: {} - knip@5.73.3(@types/node@24.10.4)(typescript@5.8.3): + knip@5.80.1(@types/node@24.10.4)(typescript@5.8.3): dependencies: '@nodelib/fs.walk': 1.2.8 '@types/node': 24.10.4 @@ -20780,13 +20443,13 @@ snapshots: jiti: 2.6.1 js-yaml: 4.1.1 minimist: 1.2.8 - oxc-resolver: 11.15.0 + oxc-resolver: 11.16.2 picocolors: 1.1.1 picomatch: 4.0.3 - smol-toml: 1.5.2 + smol-toml: 1.6.0 strip-json-comments: 5.0.3 typescript: 5.8.3 - zod: 4.1.13 + zod: 4.3.5 knuth-shuffle-seeded@1.0.6: dependencies: @@ -20816,56 +20479,6 @@ snapshots: dependencies: immediate: 3.0.6 - lightningcss-android-arm64@1.30.2: - optional: true - - lightningcss-darwin-arm64@1.30.2: - optional: true - - lightningcss-darwin-x64@1.30.2: - optional: true - - lightningcss-freebsd-x64@1.30.2: - optional: true - - lightningcss-linux-arm-gnueabihf@1.30.2: - optional: true - - lightningcss-linux-arm64-gnu@1.30.2: - optional: true - - lightningcss-linux-arm64-musl@1.30.2: - optional: true - - lightningcss-linux-x64-gnu@1.30.2: - optional: true - - lightningcss-linux-x64-musl@1.30.2: - optional: true - - lightningcss-win32-arm64-msvc@1.30.2: - optional: true - - lightningcss-win32-x64-msvc@1.30.2: - optional: true - - lightningcss@1.30.2: - dependencies: - detect-libc: 2.1.2 - optionalDependencies: - lightningcss-android-arm64: 1.30.2 - lightningcss-darwin-arm64: 1.30.2 - lightningcss-darwin-x64: 1.30.2 - lightningcss-freebsd-x64: 1.30.2 - lightningcss-linux-arm-gnueabihf: 1.30.2 - lightningcss-linux-arm64-gnu: 1.30.2 - lightningcss-linux-arm64-musl: 1.30.2 - lightningcss-linux-x64-gnu: 1.30.2 - lightningcss-linux-x64-musl: 1.30.2 - lightningcss-win32-arm64-msvc: 1.30.2 - lightningcss-win32-x64-msvc: 1.30.2 - optional: true - lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -20978,25 +20591,23 @@ snapshots: lower-case-first@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 lower-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 lowercase-keys@3.0.0: {} lru-cache@10.4.3: {} - lru-cache@11.2.2: {} + lru-cache@11.2.4: {} lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@7.18.3: {} - - lru.min@1.1.2: {} + lru.min@1.1.3: {} luxon@3.6.1: {} @@ -21034,6 +20645,8 @@ snapshots: markdown-table@3.0.4: {} + marked@16.4.2: {} + matcher@3.0.0: dependencies: escape-string-regexp: 4.0.0 @@ -21593,11 +21206,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.4(webpack@5.102.1): + mini-css-extract-plugin@2.9.4(webpack@5.104.1): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1 + webpack: 5.104.1 minimalistic-assert@1.0.1: {} @@ -21642,7 +21255,7 @@ snapshots: find-cache-dir: 3.3.2 follow-redirects: 1.15.11(debug@4.4.3) https-proxy-agent: 7.0.6 - mongodb: 6.20.0 + mongodb: 6.21.0 new-find-package-json: 2.0.0 semver: 7.7.3 tar-stream: 3.1.7 @@ -21678,13 +21291,13 @@ snapshots: mongodb@6.18.0: dependencies: - '@mongodb-js/saslprep': 1.3.2 + '@mongodb-js/saslprep': 1.4.4 bson: 6.10.4 mongodb-connection-string-url: 3.0.2 - mongodb@6.20.0: + mongodb@6.21.0: dependencies: - '@mongodb-js/saslprep': 1.3.2 + '@mongodb-js/saslprep': 1.4.4 bson: 6.10.4 mongodb-connection-string-url: 3.0.2 @@ -21745,15 +21358,15 @@ snapshots: mute-stream@0.0.8: {} - mysql2@3.15.3: + mysql2@3.16.0: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 generate-function: 2.3.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 long: 5.3.2 - lru.min: 1.1.2 - named-placeholders: 1.1.3 + lru.min: 1.1.3 + named-placeholders: 1.1.6 seq-queue: 0.0.5 sqlstring: 2.3.3 @@ -21763,9 +21376,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - named-placeholders@1.1.3: + named-placeholders@1.1.6: dependencies: - lru-cache: 7.18.3 + lru.min: 1.1.3 nanoid@3.3.11: {} @@ -21817,7 +21430,7 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.3.2: {} + node-forge@1.3.3: {} node-int64@0.4.0: {} @@ -21828,7 +21441,7 @@ snapshots: es6-promise: 4.2.8 lodash: 4.17.21 long: 5.3.2 - node-forge: 1.3.2 + node-forge: 1.3.3 pako: 2.1.0 process: 0.11.10 uuid: 9.0.1 @@ -21838,7 +21451,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.3 + semver: 7.7.1 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -21847,9 +21460,7 @@ snapshots: normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - - normalize-url@8.1.0: {} + normalize-url@8.1.1: {} npm-run-path@4.0.1: dependencies: @@ -21861,15 +21472,15 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.102.1): + null-loader@4.0.1(webpack@5.104.1): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.104.1 nullthrows@1.1.1: {} - nwsapi@2.2.22: {} + nwsapi@2.2.23: {} object-assign@4.1.1: {} @@ -21892,7 +21503,7 @@ snapshots: obug@2.1.1: {} - oidc-client-ts@3.3.0: + oidc-client-ts@3.4.1: dependencies: jwt-decode: 4.0.0 @@ -21920,7 +21531,7 @@ snapshots: open@10.2.0: dependencies: - default-browser: 5.2.1 + default-browser: 5.4.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -21967,28 +21578,28 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxc-resolver@11.15.0: + oxc-resolver@11.16.2: optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.15.0 - '@oxc-resolver/binding-android-arm64': 11.15.0 - '@oxc-resolver/binding-darwin-arm64': 11.15.0 - '@oxc-resolver/binding-darwin-x64': 11.15.0 - '@oxc-resolver/binding-freebsd-x64': 11.15.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.15.0 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.15.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.15.0 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-riscv64-musl': 11.15.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.15.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.15.0 - '@oxc-resolver/binding-linux-x64-musl': 11.15.0 - '@oxc-resolver/binding-openharmony-arm64': 11.15.0 - '@oxc-resolver/binding-wasm32-wasi': 11.15.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.15.0 - '@oxc-resolver/binding-win32-ia32-msvc': 11.15.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.15.0 + '@oxc-resolver/binding-android-arm-eabi': 11.16.2 + '@oxc-resolver/binding-android-arm64': 11.16.2 + '@oxc-resolver/binding-darwin-arm64': 11.16.2 + '@oxc-resolver/binding-darwin-x64': 11.16.2 + '@oxc-resolver/binding-freebsd-x64': 11.16.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.16.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.16.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.16.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.16.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.16.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.16.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.16.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.16.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.16.2 + '@oxc-resolver/binding-linux-x64-musl': 11.16.2 + '@oxc-resolver/binding-openharmony-arm64': 11.16.2 + '@oxc-resolver/binding-wasm32-wasi': 11.16.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.16.2 + '@oxc-resolver/binding-win32-ia32-msvc': 11.16.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.16.2 p-cancelable@3.0.0: {} @@ -22057,7 +21668,7 @@ snapshots: param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 parent-module@1.0.1: dependencies: @@ -22110,14 +21721,14 @@ snapshots: pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 path-browserify@1.0.1: {} path-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 path-exists@4.0.0: {} @@ -22142,9 +21753,9 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-scurry@2.0.0: + path-scurry@2.0.1: dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.4 minipass: 7.1.2 path-to-regexp@0.1.12: {} @@ -22191,11 +21802,11 @@ snapshots: dependencies: find-up: 6.3.0 - playwright-core@1.56.1: {} + playwright-core@1.57.0: {} - playwright@1.56.1: + playwright@1.57.0: dependencies: - playwright-core: 1.56.1 + playwright-core: 1.57.0 optionalDependencies: fsevents: 2.3.2 @@ -22206,7 +21817,7 @@ snapshots: postcss-attribute-case-insensitive@7.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-calc@9.0.1(postcss@8.5.6): dependencies: @@ -22242,7 +21853,7 @@ snapshots: postcss-colormin@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 caniuse-api: 3.0.0 colord: 2.9.3 postcss: 8.5.6 @@ -22250,7 +21861,7 @@ snapshots: postcss-convert-values@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -22277,12 +21888,12 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-dir-pseudo-class@9.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-discard-comments@6.0.2(postcss@8.5.6): dependencies: @@ -22315,12 +21926,12 @@ snapshots: postcss-focus-visible@10.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-focus-within@9.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-font-variant@5.0.0(postcss@8.5.6): dependencies: @@ -22345,13 +21956,13 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.102.1): + postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.8.3)(webpack@5.104.1): dependencies: cosmiconfig: 8.3.6(typescript@5.8.3) jiti: 1.21.7 postcss: 8.5.6 semver: 7.7.3 - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - typescript @@ -22374,7 +21985,7 @@ snapshots: postcss-merge-rules@6.1.1(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 caniuse-api: 3.0.0 cssnano-utils: 4.0.2(postcss@8.5.6) postcss: 8.5.6 @@ -22394,7 +22005,7 @@ snapshots: postcss-minify-params@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 cssnano-utils: 4.0.2(postcss@8.5.6) postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -22412,13 +22023,13 @@ snapshots: dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: @@ -22427,10 +22038,10 @@ snapshots: postcss-nesting@13.0.2(postcss@8.5.6): dependencies: - '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.0) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-resolve-nested': 3.1.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.1) postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-normalize-charset@6.0.2(postcss@8.5.6): dependencies: @@ -22463,7 +22074,7 @@ snapshots: postcss-normalize-unicode@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -22501,7 +22112,7 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-preset-env@10.4.0(postcss@8.5.6): + postcss-preset-env@10.6.0(postcss@8.5.6): dependencies: '@csstools/postcss-alpha-function': 1.0.1(postcss@8.5.6) '@csstools/postcss-cascade-layers': 5.0.2(postcss@8.5.6) @@ -22530,21 +22141,25 @@ snapshots: '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.6) '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.6) '@csstools/postcss-oklab-function': 4.0.12(postcss@8.5.6) + '@csstools/postcss-position-area-property': 1.0.0(postcss@8.5.6) '@csstools/postcss-progressive-custom-properties': 4.2.1(postcss@8.5.6) + '@csstools/postcss-property-rule-prelude-list': 1.0.0(postcss@8.5.6) '@csstools/postcss-random-function': 2.0.1(postcss@8.5.6) '@csstools/postcss-relative-color-syntax': 3.0.12(postcss@8.5.6) '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.6) '@csstools/postcss-sign-functions': 1.1.4(postcss@8.5.6) '@csstools/postcss-stepped-value-functions': 4.0.9(postcss@8.5.6) + '@csstools/postcss-syntax-descriptor-syntax-production': 1.0.1(postcss@8.5.6) + '@csstools/postcss-system-ui-font-family': 1.0.0(postcss@8.5.6) '@csstools/postcss-text-decoration-shorthand': 4.0.3(postcss@8.5.6) '@csstools/postcss-trigonometric-functions': 4.0.9(postcss@8.5.6) '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.6) - autoprefixer: 10.4.21(postcss@8.5.6) - browserslist: 4.27.0 + autoprefixer: 10.4.23(postcss@8.5.6) + browserslist: 4.28.1 css-blank-pseudo: 7.0.1(postcss@8.5.6) css-has-pseudo: 7.0.3(postcss@8.5.6) css-prefers-color-scheme: 10.0.0(postcss@8.5.6) - cssdb: 8.4.2 + cssdb: 8.6.0 postcss: 8.5.6 postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.6) postcss-clamp: 4.1.0(postcss@8.5.6) @@ -22575,7 +22190,7 @@ snapshots: postcss-pseudo-class-any-link@10.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-reduce-idents@6.0.3(postcss@8.5.6): dependencies: @@ -22584,7 +22199,7 @@ snapshots: postcss-reduce-initial@6.1.0(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -22600,14 +22215,14 @@ snapshots: postcss-selector-not@8.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.1 postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -22655,11 +22270,11 @@ snapshots: pretty-time@1.1.0: {} - prism-react-renderer@2.4.1(react@19.2.0): + prism-react-renderer@2.4.1(react@19.2.3): dependencies: '@types/prismjs': 1.26.5 clsx: 2.1.1 - react: 19.2.0 + react: 19.2.3 prismjs@1.30.0: {} @@ -22688,12 +22303,10 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 - properties-file@3.6.1: {} + properties-file@3.6.3: {} property-expr@2.0.6: {} - property-information@6.5.0: {} - property-information@7.1.0: {} proto-list@1.2.4: {} @@ -22734,11 +22347,7 @@ snapshots: dependencies: escape-goat: 4.0.0 - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - qs@6.14.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -22756,10 +22365,10 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.2: + raw-body@2.5.3: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 + http-errors: 2.0.1 iconv-lite: 0.4.24 unpipe: 1.0.0 @@ -22767,329 +22376,329 @@ snapshots: dependencies: bytes: 3.1.2 http-errors: 2.0.1 - iconv-lite: 0.7.0 + iconv-lite: 0.7.2 unpipe: 1.0.0 - rc-cascader@3.34.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-cascader@3.34.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-select: 14.16.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-tree: 5.13.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-select: 14.16.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-tree: 5.13.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-checkbox@3.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-checkbox@3.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-collapse@3.9.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-collapse@3.9.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-dialog@9.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-dialog@9.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-drawer@7.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-drawer@7.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-dropdown@4.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-dropdown@4.2.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-field-form@2.7.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-field-form@2.7.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/async-validator': 5.0.4 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@rc-component/async-validator': 5.1.0 + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-image@7.12.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-image@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/portal': 1.1.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/portal': 1.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-dialog: 9.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-dialog: 9.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-input-number@9.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-input-number@9.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 '@rc-component/mini-decimal': 1.1.0 classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-input: 1.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-input@1.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-input@1.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-mentions@2.20.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-mentions@2.20.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-menu: 9.16.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-textarea: 1.10.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-input: 1.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-menu: 9.16.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-textarea: 1.10.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-menu@9.16.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-menu@9.16.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-overflow: 1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-overflow: 1.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-motion@2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-motion@2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-notification@5.6.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-notification@5.6.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-overflow@1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-overflow@1.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-pagination@5.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-pagination@5.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-picker@4.11.3(dayjs@1.11.18)(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-picker@4.11.3(dayjs@1.11.19)(luxon@3.6.1)(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-overflow: 1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-overflow: 1.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) optionalDependencies: - dayjs: 1.11.18 + dayjs: 1.11.19 luxon: 3.6.1 moment: 2.30.1 - rc-progress@4.0.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-progress@4.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-rate@2.13.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-rate@2.13.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-resize-observer@1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-resize-observer@1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) resize-observer-polyfill: 1.5.1 - rc-segmented@2.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-segmented@2.7.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-select@14.16.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-select@14.16.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-overflow: 1.5.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-virtual-list: 3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-overflow: 1.5.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-virtual-list: 3.19.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-slider@11.1.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-slider@11.1.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-steps@6.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-steps@6.0.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-switch@4.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-switch@4.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-table@7.54.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-table@7.54.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/context': 1.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/context': 1.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-virtual-list: 3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-virtual-list: 3.19.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-tabs@15.7.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-tabs@15.7.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-dropdown: 4.2.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-menu: 9.16.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-dropdown: 4.2.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-menu: 9.16.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-textarea@1.10.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-textarea@1.10.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-input: 1.8.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-input: 1.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-tooltip@6.4.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-tooltip@6.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - '@rc-component/trigger': 2.3.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@rc-component/trigger': 2.3.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-tree-select@5.27.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-tree-select@5.27.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-select: 14.16.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-tree: 5.13.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-select: 14.16.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-tree: 5.13.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-tree@5.13.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-tree@5.13.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-motion: 2.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-virtual-list: 3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-motion: 2.9.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-virtual-list: 3.19.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-upload@4.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-upload@4.11.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - rc-util@5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-util@5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) react-is: 18.3.1 - rc-virtual-list@3.19.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + rc-virtual-list@3.19.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 - rc-resize-observer: 1.4.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - rc-util: 5.44.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + rc-resize-observer: 1.4.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + rc-util: 5.44.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) rc@1.2.8: dependencies: @@ -23117,9 +22726,9 @@ snapshots: transitivePeerDependencies: - supports-color - react-dom@19.2.0(react@19.2.0): + react-dom@19.2.3(react@19.2.3): dependencies: - react: 19.2.0 + react: 19.2.3 scheduler: 0.27.0 react-fast-compare@3.2.2: {} @@ -23130,47 +22739,47 @@ snapshots: react-is@18.3.1: {} - react-json-view-lite@2.5.0(react@19.2.0): + react-json-view-lite@2.5.0(react@19.2.3): dependencies: - react: 19.2.0 + react: 19.2.3 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.0))(webpack@5.102.1): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.3))(webpack@5.104.1): dependencies: '@babel/runtime': 7.28.4 - react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.0)' - webpack: 5.102.1 + react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.3)' + webpack: 5.104.1 - react-oidc-context@3.3.0(oidc-client-ts@3.3.0)(react@19.2.0): + react-oidc-context@3.3.0(oidc-client-ts@3.4.1)(react@19.2.3): dependencies: - oidc-client-ts: 3.3.0 - react: 19.2.0 + oidc-client-ts: 3.4.1 + react: 19.2.3 react-refresh@0.17.0: {} - react-router-config@5.1.1(react-router@5.3.4(react@19.2.0))(react@19.2.0): + react-router-config@5.1.1(react-router@5.3.4(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 - react: 19.2.0 - react-router: 5.3.4(react@19.2.0) + react: 19.2.3 + react-router: 5.3.4(react@19.2.3) - react-router-dom@5.3.4(react@19.2.0): + react-router-dom@5.3.4(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.0 - react-router: 5.3.4(react@19.2.0) + react: 19.2.3 + react-router: 5.3.4(react@19.2.3) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-router-dom@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-router-dom@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-router: 7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - react-router@5.3.4(react@19.2.0): + react-router@5.3.4(react@19.2.3): dependencies: '@babel/runtime': 7.28.4 history: 4.10.1 @@ -23178,20 +22787,20 @@ snapshots: loose-envify: 1.4.0 path-to-regexp: 1.9.0 prop-types: 15.8.1 - react: 19.2.0 + react: 19.2.3 react-is: 16.13.1 tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): + react-router@7.12.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - cookie: 1.0.2 - react: 19.2.0 + cookie: 1.1.1 + react: 19.2.3 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.2.0(react@19.2.0) + react-dom: 19.2.3(react@19.2.3) - react@19.2.0: {} + react@19.2.3: {} read-package-up@11.0.0: dependencies: @@ -23283,7 +22892,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -23500,9 +23109,9 @@ snapshots: dependencies: glob: 7.2.3 - rimraf@6.0.1: + rimraf@6.1.2: dependencies: - glob: 11.0.3 + glob: 13.0.0 package-json-from-dist: 1.0.1 roarr@2.15.4: @@ -23518,32 +23127,35 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.53.5: + rollup@4.55.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.5 - '@rollup/rollup-android-arm64': 4.53.5 - '@rollup/rollup-darwin-arm64': 4.53.5 - '@rollup/rollup-darwin-x64': 4.53.5 - '@rollup/rollup-freebsd-arm64': 4.53.5 - '@rollup/rollup-freebsd-x64': 4.53.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.5 - '@rollup/rollup-linux-arm-musleabihf': 4.53.5 - '@rollup/rollup-linux-arm64-gnu': 4.53.5 - '@rollup/rollup-linux-arm64-musl': 4.53.5 - '@rollup/rollup-linux-loong64-gnu': 4.53.5 - '@rollup/rollup-linux-ppc64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-gnu': 4.53.5 - '@rollup/rollup-linux-riscv64-musl': 4.53.5 - '@rollup/rollup-linux-s390x-gnu': 4.53.5 - '@rollup/rollup-linux-x64-gnu': 4.53.5 - '@rollup/rollup-linux-x64-musl': 4.53.5 - '@rollup/rollup-openharmony-arm64': 4.53.5 - '@rollup/rollup-win32-arm64-msvc': 4.53.5 - '@rollup/rollup-win32-ia32-msvc': 4.53.5 - '@rollup/rollup-win32-x64-gnu': 4.53.5 - '@rollup/rollup-win32-x64-msvc': 4.53.5 + '@rollup/rollup-android-arm-eabi': 4.55.1 + '@rollup/rollup-android-arm64': 4.55.1 + '@rollup/rollup-darwin-arm64': 4.55.1 + '@rollup/rollup-darwin-x64': 4.55.1 + '@rollup/rollup-freebsd-arm64': 4.55.1 + '@rollup/rollup-freebsd-x64': 4.55.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 + '@rollup/rollup-linux-arm-musleabihf': 4.55.1 + '@rollup/rollup-linux-arm64-gnu': 4.55.1 + '@rollup/rollup-linux-arm64-musl': 4.55.1 + '@rollup/rollup-linux-loong64-gnu': 4.55.1 + '@rollup/rollup-linux-loong64-musl': 4.55.1 + '@rollup/rollup-linux-ppc64-gnu': 4.55.1 + '@rollup/rollup-linux-ppc64-musl': 4.55.1 + '@rollup/rollup-linux-riscv64-gnu': 4.55.1 + '@rollup/rollup-linux-riscv64-musl': 4.55.1 + '@rollup/rollup-linux-s390x-gnu': 4.55.1 + '@rollup/rollup-linux-x64-gnu': 4.55.1 + '@rollup/rollup-linux-x64-musl': 4.55.1 + '@rollup/rollup-openbsd-x64': 4.55.1 + '@rollup/rollup-openharmony-arm64': 4.55.1 + '@rollup/rollup-win32-arm64-msvc': 4.55.1 + '@rollup/rollup-win32-ia32-msvc': 4.55.1 + '@rollup/rollup-win32-x64-gnu': 4.55.1 + '@rollup/rollup-win32-x64-msvc': 4.55.1 fsevents: 2.3.3 rrweb-cssom@0.8.0: {} @@ -23594,7 +23206,7 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.4.1: {} + sax@1.4.4: {} saxes@6.0.0: dependencies: @@ -23639,7 +23251,7 @@ snapshots: selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.14 - node-forge: 1.3.2 + node-forge: 1.3.3 semver-compare@1.0.0: {} @@ -23653,42 +23265,40 @@ snapshots: semver@7.7.1: {} - semver@7.7.2: {} - semver@7.7.3: {} - send@0.19.0: + send@0.19.2: dependencies: debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 fresh: 0.5.2 - http-errors: 2.0.0 + http-errors: 2.0.1 mime: 1.6.0 ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color sentence-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 upper-case-first: 2.0.2 seq-queue@0.0.5: {} sequelize-pool@7.1.0: {} - sequelize@6.37.7(mysql2@3.15.3)(tedious@16.7.1): + sequelize@6.37.7(mysql2@3.16.0)(tedious@16.7.1): dependencies: '@types/debug': 4.1.12 - '@types/validator': 13.15.4 + '@types/validator': 13.15.10 debug: 4.4.3(supports-color@8.1.1) dottie: 2.0.6 inflection: 1.13.4 @@ -23701,10 +23311,10 @@ snapshots: sequelize-pool: 7.1.0 toposort-class: 1.0.1 uuid: 8.3.2 - validator: 13.15.20 + validator: 13.15.26 wkx: 0.5.0 optionalDependencies: - mysql2: 3.15.3 + mysql2: 3.16.0 tedious: 16.7.1 transitivePeerDependencies: - supports-color @@ -23739,12 +23349,12 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.16.2: + serve-static@1.16.3: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.19.0 + send: 0.19.2 transitivePeerDependencies: - supports-color @@ -23857,7 +23467,7 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.1 + sax: 1.4.4 skin-tone@2.0.0: dependencies: @@ -23883,14 +23493,14 @@ snapshots: slugify@1.6.6: {} - smol-toml@1.5.2: {} + smol-toml@1.6.0: {} snake-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.8.1 + tslib: 2.6.3 - snyk@1.1301.0: + snyk@1.1301.2: dependencies: '@sentry/node': 7.120.4 global-agent: 3.0.0 @@ -23961,7 +23571,7 @@ snapshots: sponge-case@1.0.1: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 sprintf-js@1.0.3: {} @@ -23985,8 +23595,6 @@ snapshots: statuses@1.5.0: {} - statuses@2.0.1: {} - statuses@2.0.2: {} std-env@3.10.0: {} @@ -23998,20 +23606,20 @@ snapshots: stoppable@1.1.0: {} - storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + storybook@9.1.17(@testing-library/dom@10.4.1)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.12 esbuild-register: 3.6.0(esbuild@0.25.12) recast: 0.23.11 semver: 7.7.3 - ws: 8.18.3 + ws: 8.19.0 transitivePeerDependencies: - '@testing-library/dom' - bufferutil @@ -24059,7 +23667,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -24125,17 +23733,17 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - style-to-js@1.1.18: + style-to-js@1.1.21: dependencies: - style-to-object: 1.0.11 + style-to-object: 1.0.14 - style-to-object@1.0.11: + style-to-object@1.0.14: dependencies: - inline-style-parser: 0.2.4 + inline-style-parser: 0.2.7 stylehacks@6.1.1(postcss@8.5.6): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 postcss: 8.5.6 postcss-selector-parser: 6.1.2 @@ -24145,24 +23753,25 @@ snapshots: dependencies: minimist: 1.2.8 - superagent@10.2.3: + superagent@10.3.0: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.4.3(supports-color@8.1.1) fast-safe-stringify: 2.1.1 - form-data: 4.0.4 + form-data: 4.0.5 formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 - qs: 6.14.0 + qs: 6.14.1 transitivePeerDependencies: - supports-color - supertest@7.1.4: + supertest@7.2.2: dependencies: + cookie-signature: 1.2.2 methods: 1.1.2 - superagent: 10.2.3 + superagent: 10.3.0 transitivePeerDependencies: - supports-color @@ -24194,10 +23803,22 @@ snapshots: swap-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 + + swr@2.3.8(react@19.2.3): + dependencies: + dequal: 2.0.3 + react: 19.2.3 + use-sync-external-store: 1.6.0(react@19.2.3) symbol-tree@3.2.4: {} + sync-fetch@0.6.0: + dependencies: + node-fetch: 3.3.2 + timeout-signal: 2.0.0 + whatwg-mimetype: 4.0.0 + sync-fetch@0.6.0-2: dependencies: node-fetch: 3.3.2 @@ -24220,7 +23841,7 @@ snapshots: '@azure/identity': 3.4.2 '@azure/keyvault-keys': 4.10.0 '@js-joda/core': 5.6.5 - bl: 6.1.4 + bl: 6.1.6 es-aggregate-error: 1.0.14 iconv-lite: 0.6.3 js-md4: 0.3.2 @@ -24231,16 +23852,16 @@ snapshots: transitivePeerDependencies: - supports-color - terser-webpack-plugin@5.3.14(webpack@5.102.1): + terser-webpack-plugin@5.3.16(webpack@5.104.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.44.0 - webpack: 5.102.1 + terser: 5.44.1 + webpack: 5.104.1 - terser@5.44.0: + terser@5.44.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.15.0 @@ -24269,6 +23890,8 @@ snapshots: throttle-debounce@5.0.2: {} + throttleit@2.1.0: {} + through@2.3.8: {} thunky@1.1.0: {} @@ -24279,7 +23902,7 @@ snapshots: tiny-invariant@1.3.3: {} - tiny-types@1.24.1: {} + tiny-types@1.24.3: {} tiny-warning@1.0.3: {} @@ -24302,7 +23925,7 @@ snapshots: title-case@3.0.3: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 tldts-core@6.1.86: {} @@ -24370,7 +23993,7 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.4.0(typescript@5.8.3): dependencies: typescript: 5.8.3 @@ -24404,7 +24027,7 @@ snapshots: ts-node@10.9.2(@types/node@24.10.4)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 @@ -24448,49 +24071,49 @@ snapshots: tslib@2.8.1: {} - tsx@4.20.6: + tsx@4.21.0: dependencies: - esbuild: 0.25.11 + esbuild: 0.27.2 get-tsconfig: 4.13.0 optionalDependencies: fsevents: 2.3.3 tunnel@0.0.6: {} - turbo-darwin-64@2.5.8: + turbo-darwin-64@2.7.3: optional: true - turbo-darwin-arm64@2.5.8: + turbo-darwin-arm64@2.7.3: optional: true - turbo-linux-64@2.5.8: + turbo-linux-64@2.7.3: optional: true - turbo-linux-arm64@2.5.8: + turbo-linux-arm64@2.7.3: optional: true - turbo-windows-64@2.5.8: + turbo-windows-64@2.7.3: optional: true - turbo-windows-arm64@2.5.8: + turbo-windows-arm64@2.7.3: optional: true - turbo@2.5.8: + turbo@2.7.3: optionalDependencies: - turbo-darwin-64: 2.5.8 - turbo-darwin-arm64: 2.5.8 - turbo-linux-64: 2.5.8 - turbo-linux-arm64: 2.5.8 - turbo-windows-64: 2.5.8 - turbo-windows-arm64: 2.5.8 + turbo-darwin-64: 2.7.3 + turbo-darwin-arm64: 2.7.3 + turbo-linux-64: 2.7.3 + turbo-linux-arm64: 2.7.3 + turbo-windows-64: 2.7.3 + turbo-windows-arm64: 2.7.3 - twilio@5.10.7: + twilio@5.11.2: dependencies: - axios: 1.13.1 - dayjs: 1.11.18 + axios: 1.13.2 + dayjs: 1.11.19 https-proxy-agent: 5.0.1 jsonwebtoken: 9.0.3 - qs: 6.14.0 + qs: 6.14.1 scmp: 2.1.0 xmlbuilder: 13.0.2 transitivePeerDependencies: @@ -24561,13 +24184,13 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3): + typescript-eslint@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/parser': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.8.3) - '@typescript-eslint/utils': 8.46.2(eslint@9.38.0(jiti@2.6.1))(typescript@5.8.3) - eslint: 9.38.0(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.52.0(@typescript-eslint/parser@8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/parser': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.52.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.52.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.8.3) + eslint: 9.39.2(jiti@2.6.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -24668,9 +24291,9 @@ snapshots: upath@2.0.1: {} - update-browserslist-db@1.1.4(browserslist@4.27.0): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.27.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -24693,11 +24316,11 @@ snapshots: upper-case-first@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 upper-case@2.0.2: dependencies: - tslib: 2.8.1 + tslib: 2.6.3 uri-js@4.4.1: dependencies: @@ -24705,14 +24328,14 @@ snapshots: uri-templates@0.2.0: {} - url-loader@4.1.1(file-loader@6.2.0(webpack@5.102.1))(webpack@5.102.1): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.102.1 + webpack: 5.104.1 optionalDependencies: - file-loader: 6.2.0(webpack@5.102.1) + file-loader: 6.2.0(webpack@5.104.1) url-parse@1.5.10: dependencies: @@ -24721,6 +24344,10 @@ snapshots: urlpattern-polyfill@10.1.0: {} + use-sync-external-store@1.6.0(react@19.2.3): + dependencies: + react: 19.2.3 + util-arity@1.1.0: {} util-deprecate@1.0.2: {} @@ -24752,7 +24379,7 @@ snapshots: validate-npm-package-name@6.0.2: {} - validator@13.15.20: {} + validator@13.15.26: {} value-equal@1.0.1: {} @@ -24775,51 +24402,49 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 22.19.3 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 - terser: 5.44.0 - tsx: 4.20.6 - yaml: 2.8.1 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 - vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.5 + rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.4 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.30.2 - terser: 5.44.0 - tsx: 4.20.6 - yaml: 2.8.1 - - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.15 - '@vitest/runner': 4.0.15 - '@vitest/snapshot': 4.0.15 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 + terser: 5.44.1 + tsx: 4.21.0 + yaml: 2.8.2 + + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@22.19.3)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + '@vitest/expect': 4.0.16 + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.16 + '@vitest/runner': 4.0.16 + '@vitest/snapshot': 4.0.16 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 es-module-lexer: 1.7.0 - expect-type: 1.2.2 + expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 @@ -24829,12 +24454,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 22.19.3 - '@vitest/browser-playwright': 4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) + '@vitest/browser-playwright': 4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@22.19.3)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) jsdom: 26.1.0 transitivePeerDependencies: - jiti @@ -24849,17 +24474,17 @@ snapshots: - tsx - yaml - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-playwright@4.0.16)(jiti@2.6.1)(jsdom@26.1.0)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.15 - '@vitest/runner': 4.0.15 - '@vitest/snapshot': 4.0.15 - '@vitest/spy': 4.0.15 - '@vitest/utils': 4.0.15 + '@vitest/expect': 4.0.16 + '@vitest/mocker': 4.0.16(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.16 + '@vitest/runner': 4.0.16 + '@vitest/snapshot': 4.0.16 + '@vitest/spy': 4.0.16 + '@vitest/utils': 4.0.16 es-module-lexer: 1.7.0 - expect-type: 1.2.2 + expect-type: 1.3.0 magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 @@ -24869,12 +24494,12 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.4 - '@vitest/browser-playwright': 4.0.15(playwright@1.56.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.15) + '@vitest/browser-playwright': 4.0.16(playwright@1.57.0)(vite@7.3.1(@types/node@24.10.4)(jiti@2.6.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vitest@4.0.16) jsdom: 26.1.0 transitivePeerDependencies: - jiti @@ -24895,7 +24520,7 @@ snapshots: walk-up-path@4.0.0: {} - watchpack@2.4.4: + watchpack@2.5.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -24934,7 +24559,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(webpack@5.102.1): + webpack-dev-middleware@7.4.5(webpack@5.104.1): dependencies: colorette: 2.0.20 memfs: 4.51.1 @@ -24943,9 +24568,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.102.1 + webpack: 5.104.1 - webpack-dev-server@5.2.2(webpack@5.102.1): + webpack-dev-server@5.2.2(webpack@5.104.1): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -24964,7 +24589,7 @@ snapshots: express: 4.22.1 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.9(@types/express@4.17.25) - ipaddr.js: 2.2.0 + ipaddr.js: 2.3.0 launch-editor: 2.12.0 open: 10.2.0 p-retry: 6.2.1 @@ -24973,10 +24598,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.102.1) - ws: 8.18.3 + webpack-dev-middleware: 7.4.5(webpack@5.104.1) + ws: 8.19.0 optionalDependencies: - webpack: 5.102.1 + webpack: 5.104.1 transitivePeerDependencies: - bufferutil - debug @@ -24999,7 +24624,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.102.1: + webpack@5.104.1: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -25009,10 +24634,10 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.27.0 + browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 + enhanced-resolve: 5.18.4 + es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -25023,15 +24648,15 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(webpack@5.102.1) - watchpack: 2.4.4 + terser-webpack-plugin: 5.3.16(webpack@5.104.1) + watchpack: 2.5.0 webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.102.1): + webpackbar@6.0.1(webpack@5.104.1): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -25040,7 +24665,7 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.10.0 - webpack: 5.102.1 + webpack: 5.104.1 wrap-ansi: 7.0.0 websocket-driver@0.7.4: @@ -25131,12 +24756,12 @@ snapshots: winreg@1.2.5: {} - winston-daily-rotate-file@4.7.1(winston@3.18.3): + winston-daily-rotate-file@4.7.1(winston@3.19.0): dependencies: file-stream-rotator: 0.6.1 object-hash: 2.2.0 triple-beam: 1.4.1 - winston: 3.18.3 + winston: 3.19.0 winston-transport: 4.9.0 winston-transport@4.9.0: @@ -25145,7 +24770,7 @@ snapshots: readable-stream: 3.6.2 triple-beam: 1.4.1 - winston@3.18.3: + winston@3.19.0: dependencies: '@colors/colors': 1.6.0 '@dabh/diagnostics': 2.0.8 @@ -25194,7 +24819,7 @@ snapshots: ws@7.5.10: {} - ws@8.18.3: {} + ws@8.19.0: {} wsl-utils@0.1.0: dependencies: @@ -25204,18 +24829,18 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.4.1 + sax: 1.4.4 xml-name-validator@5.0.0: {} xml2js@0.4.23: dependencies: - sax: 1.4.1 + sax: 1.4.4 xmlbuilder: 11.0.1 xml2js@0.6.2: dependencies: - sax: 1.4.1 + sax: 1.4.4 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} @@ -25234,7 +24859,7 @@ snapshots: yaml-ast-parser@0.0.43: {} - yaml@2.8.1: {} + yaml@2.8.2: {} yargs-parser@21.1.1: {} @@ -25266,6 +24891,6 @@ snapshots: toposort: 2.0.2 type-fest: 2.19.0 - zod@4.1.13: {} + zod@4.3.5: {} zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index be78125a5..0018238db 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,7 +2,7 @@ packages: - "apps/*" - "packages/cellix/*" - "packages/sthrift/*" - + catalog: mongoose: 8.17.0 mongodb: 6.18.0