diff --git a/.yarnrc.yml b/.yarnrc.yml index edc39ef2..efbc8e70 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -3,3 +3,8 @@ enableHardenedMode: false enableScripts: false nodeLinker: node-modules + +packageExtensions: + "eslint-plugin-jsx-a11y@*": + peerDependencies: + eslint: "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 || ^10" diff --git a/components/AriaTable/AriaTable.tsx b/components/AriaTable/AriaTable.tsx index 032b007e..7d49b294 100644 --- a/components/AriaTable/AriaTable.tsx +++ b/components/AriaTable/AriaTable.tsx @@ -114,6 +114,7 @@ export const Tr = forwardRef, AriaTrProps>( const [isCollapsed, setIsCollapsed] = useState(false); if (!asChild) { + // eslint-disable-next-line @eslint-react/no-children-to-array const arrayChildren = Children.toArray(children); const hasColSpanChildren = arrayChildren.some((child) => { if (!isValidElement(child)) { @@ -154,12 +155,13 @@ export const Tr = forwardRef, AriaTrProps>( ) : null, - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [isCollapsed], ); const renderedChildren = useMemo(() => { if (asChild) { + // eslint-disable-next-line @eslint-react/no-clone-element return cloneElement( children as any, { diff --git a/components/Badge/Badge.stories.tsx b/components/Badge/Badge.stories.tsx index 1ce2a494..f3952844 100644 --- a/components/Badge/Badge.stories.tsx +++ b/components/Badge/Badge.stories.tsx @@ -74,7 +74,7 @@ export const Interactive: StoryFn = (args) => ( Default {COLORS.map((color) => ( - + {color} ))} diff --git a/components/Badge/Badge.tsx b/components/Badge/Badge.tsx index 3e1756db..2fcb5673 100644 --- a/components/Badge/Badge.tsx +++ b/components/Badge/Badge.tsx @@ -146,7 +146,7 @@ export const Badge = React.forwardRef return asChild ? StyledButtonBadgeSlot : StyledButtonBadge; } return asChild ? StyledSpanBadgeSlot : StyledSpanBadge; - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [asChild]); return ; diff --git a/components/DateTimePicker/DateTimePicker.stories.tsx b/components/DateTimePicker/DateTimePicker.stories.tsx index b34b657e..5f7ac68b 100644 --- a/components/DateTimePicker/DateTimePicker.stories.tsx +++ b/components/DateTimePicker/DateTimePicker.stories.tsx @@ -42,7 +42,7 @@ const Component: Meta = { }; const DateTimePickerTemplate: StoryFn = (args) => { - const [selectedDates, onDatesChange] = useState([]); + const [selectedDates, setSelectedDates] = useState([]); const [minDate] = useState(() => new Date(args.minDate || Date.now())); return ( @@ -53,7 +53,7 @@ const DateTimePickerTemplate: StoryFn = (args) => minDate, }} calendar={{ mode: args.calendarMode, startDay: 1 }} - onDatesChange={onDatesChange} + onDatesChange={setSelectedDates} selectedDates={selectedDates} /> diff --git a/components/DateTimePickerInput/DateTimePickerInput.stories.tsx b/components/DateTimePickerInput/DateTimePickerInput.stories.tsx index 1a621fa6..955f0f6f 100644 --- a/components/DateTimePickerInput/DateTimePickerInput.stories.tsx +++ b/components/DateTimePickerInput/DateTimePickerInput.stories.tsx @@ -52,7 +52,8 @@ const Component: Meta = { }; const DateTimePickerTemplate: StoryFn = (args) => { - const [selectedDates, onDatesChange] = useState([]); + const [selectedDates, setSelectedDates] = useState([]); + const [minDate] = useState(() => new Date()); return (
@@ -60,9 +61,9 @@ const DateTimePickerTemplate: StoryFn = (arg diff --git a/components/DateTimePickerInput/DateTimePickerInput.tsx b/components/DateTimePickerInput/DateTimePickerInput.tsx index c0d1da13..19fb1a81 100644 --- a/components/DateTimePickerInput/DateTimePickerInput.tsx +++ b/components/DateTimePickerInput/DateTimePickerInput.tsx @@ -116,7 +116,7 @@ export const DateTimePickerInput = React.forwardRef< const arrowRef = useRef(null); const [inputValue, setInputValue] = useState(''); - const [selectedDates, onDatesChange] = useState([]); + const [selectedDates, setSelectedDates] = useState([]); const [isPickerOpen, setIsPickerOpen] = useState(false); const middleware = useMemo( @@ -159,7 +159,7 @@ export const DateTimePickerInput = React.forwardRef< const newDates = (value as string) .split(',') .map((d) => parse(d.trim(), formatStr, new Date())); - onDatesChange(newDates); + setSelectedDates(newDates); if (onChange) onChange(newDates); // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (err) { @@ -183,7 +183,7 @@ export const DateTimePickerInput = React.forwardRef< {...pickerProps} css={pickerCSS} onDatesChange={(d) => { - onDatesChange(d); + setSelectedDates(d); setInputValue(d.map((date) => format(date, formatStr)).join(', ')); if (onChange) onChange(d); }} diff --git a/components/Heading/Heading.vanilla.tsx b/components/Heading/Heading.vanilla.tsx index 39cd9962..235b37e4 100644 --- a/components/Heading/Heading.vanilla.tsx +++ b/components/Heading/Heading.vanilla.tsx @@ -39,6 +39,9 @@ function createHeadingComponent( type HeadingComponent = PolymorphicComponent>; const HeadingImpl = forwardRef( + // Safe: factory is called once at module load (e.g. `export const H1 = createHeading(...)`), + // not inside a render, so HeadingImpl gets a stable reference; no remount on re-render. + // eslint-disable-next-line @eslint-react/component-hook-factories ( { as, className, css, style, transform, ...props }: HeadingProps, ref?: PolymorphicRef, diff --git a/components/List/List.tsx b/components/List/List.tsx index d1bbf9dc..4eb3237c 100644 --- a/components/List/List.tsx +++ b/components/List/List.tsx @@ -151,8 +151,7 @@ export const Ul = React.forwardRef, ListProps> ); export interface OrderedListProps - extends ComponentProps, - VariantProps { + extends ComponentProps, VariantProps { interactive?: boolean; } @@ -187,7 +186,8 @@ const ControlsWrapper = styled('div', { }); export interface ListItemProps - extends ComponentProps, + extends + ComponentProps, VariantProps, VariantProps { controls?: ReactNode; @@ -196,6 +196,7 @@ export const Li = React.forwardRef, ListItemPr ({ children, controls, align, justify, direction, gap, wrap, ...props }, forwardedRef) => { const { interactive } = useContext(ListContext); + // eslint-disable-next-line @eslint-react/no-children-to-array const childArray = React.Children.toArray(children); const nestedLists = childArray.filter( (child) => React.isValidElement(child) && (child.type === Ul || child.type === Ol), diff --git a/components/NavigationTree/NavigationTreeContainer.tsx b/components/NavigationTree/NavigationTreeContainer.tsx index e3cf8837..2de4a316 100644 --- a/components/NavigationTree/NavigationTreeContainer.tsx +++ b/components/NavigationTree/NavigationTreeContainer.tsx @@ -3,6 +3,7 @@ import React from 'react'; import { CSS } from '../../stitches.config'; import { NavigationContainer, NavigationContainerProps } from '../Navigation'; +import { NavigationTreeContext } from './NavigationTreeContext'; export interface NavigationTreeProps { children: React.ReactNode; @@ -19,13 +20,9 @@ export const NavigationTreeContainer = ({ fullWidth = false, ...props }: NavigationTreeProps & NavigationContainerProps) => { - const renderChildren = React.Children.map(children, (child) => { - return React.cloneElement(child as React.ReactElement, { - defaultCollapseIcon, - defaultExpandIcon, - fullWidth, - }); - }); - - return {renderChildren}; + return ( + + {children} + + ); }; diff --git a/components/NavigationTree/NavigationTreeContext.tsx b/components/NavigationTree/NavigationTreeContext.tsx new file mode 100644 index 00000000..49198552 --- /dev/null +++ b/components/NavigationTree/NavigationTreeContext.tsx @@ -0,0 +1,16 @@ +import { ChevronDownIcon, ChevronRightIcon } from '@radix-ui/react-icons'; +import React from 'react'; + +interface NavigationTreeContextValue { + defaultExpandIcon: React.ReactNode; + defaultCollapseIcon: React.ReactNode; + fullWidth: boolean; +} + +export const NavigationTreeContext = React.createContext({ + defaultExpandIcon: , + defaultCollapseIcon: , + fullWidth: false, +}); + +export const useNavigationTree = () => React.useContext(NavigationTreeContext); diff --git a/components/NavigationTree/NavigationTreeDrawer.tsx b/components/NavigationTree/NavigationTreeDrawer.tsx index cdb1bc6f..b962813b 100644 --- a/components/NavigationTree/NavigationTreeDrawer.tsx +++ b/components/NavigationTree/NavigationTreeDrawer.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { CSS } from '../../stitches.config'; import { NavigationDrawer, NavigationDrawerProps } from '../Navigation'; +import { NavigationTreeContext, useNavigationTree } from './NavigationTreeContext'; export interface NavigationTreeDrawerProps { children: React.ReactNode; @@ -14,15 +15,13 @@ export const NavigationTreeDrawer = ({ fullWidth = false, ...props }: NavigationTreeDrawerProps & NavigationDrawerProps) => { - const renderChildren = React.Children.map(children, (child) => { - return React.cloneElement(child as React.ReactElement, { - fullWidth, - }); - }); + const parentCtx = useNavigationTree(); return ( - - {renderChildren} - + + + {children} + + ); }; diff --git a/components/NavigationTree/NavigationTreeItem.tsx b/components/NavigationTree/NavigationTreeItem.tsx index 16ecc563..1599e682 100644 --- a/components/NavigationTree/NavigationTreeItem.tsx +++ b/components/NavigationTree/NavigationTreeItem.tsx @@ -6,6 +6,7 @@ import { Flex } from '../Flex'; import { NavigationItem, NavigationItemProps } from '../Navigation'; import { Text } from '../Text'; import { NavigationTreeContainer } from './NavigationTreeContainer'; +import { useNavigationTree } from './NavigationTreeContext'; export interface NavigationTreeItemProps { label: string | ReactNode; @@ -13,12 +14,9 @@ export interface NavigationTreeItemProps { children?: React.ReactNode; defaultExpanded?: boolean; onClick?: () => void; - defaultExpandIcon?: React.ReactNode; - defaultCollapseIcon?: React.ReactNode; customExpandIcon?: React.ReactNode; customCollapseIcon?: React.ReactNode; nestedChildrenLevel?: number; - fullWidth?: boolean; } export const NavigationTreeItem = ({ @@ -27,16 +25,14 @@ export const NavigationTreeItem = ({ children, onClick, defaultExpanded = false, - defaultCollapseIcon, - defaultExpandIcon, customCollapseIcon, customExpandIcon, nestedChildrenLevel = 1, - fullWidth = false, ...props }: NavigationTreeItemProps & NavigationItemProps) => { + const { defaultCollapseIcon, defaultExpandIcon, fullWidth } = useNavigationTree(); const [isExpanded, setIsExpanded] = useState(defaultExpanded); - const isExpandable = useMemo(() => React.Children.count(children) > 0, [children]); + const isExpandable = useMemo(() => !!children, [children]); const hasStartAdornment = useMemo(() => !!props.startAdornment, [props.startAdornment]); const usedStartAdornment = useMemo( () => @@ -70,7 +66,7 @@ export const NavigationTreeItem = ({ }, }, }; - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [isExpandable, nestedChildrenLevel]); const focusStyle = useMemo(() => { diff --git a/components/SidePanel/SidePanel.stories.tsx b/components/SidePanel/SidePanel.stories.tsx index 92fc63fc..fd1e774f 100644 --- a/components/SidePanel/SidePanel.stories.tsx +++ b/components/SidePanel/SidePanel.stories.tsx @@ -88,11 +88,11 @@ Basic.args = { export const CombinedWithModal: StoryFn = (args) => { const [open, setOpen] = useState(false); - const [isModalOpen, setModalOpen] = useState(false); + const [isModalOpen, setIsModalOpen] = useState(false); return ( <> - setModalOpen(isModalOpen)}> + setIsModalOpen(isModalOpen)}> @@ -102,7 +102,7 @@ export const CombinedWithModal: StoryFn = (args) => { setOpen(isOpen)}> - setModalOpen(true)} /> + setIsModalOpen(true)} /> diff --git a/components/Skeleton/Skeleton.stories.tsx b/components/Skeleton/Skeleton.stories.tsx index 6b9c3df0..c811b1fa 100644 --- a/components/Skeleton/Skeleton.stories.tsx +++ b/components/Skeleton/Skeleton.stories.tsx @@ -90,7 +90,7 @@ export const Typographies: StoryFn = () => ( {TEXT_SIZES.map((size) => ( - + ))} @@ -102,7 +102,7 @@ const AVATAR_SIZES = ['1', '2', '3', '4', '5', '6'] as const; export const Avatars: StoryFn = () => ( {AVATAR_SIZES.map((size) => ( - + @@ -187,15 +187,15 @@ export const Customs: StoryFn = () => ( {Array(10) .fill(0) - .map(() => ( - + .map((_, i) => ( + ))} {Array(10) .fill(0) - .map(() => ( - + .map((_, i) => ( + ))} diff --git a/components/Text/Text.stories.tsx b/components/Text/Text.stories.tsx index 59af7d7b..406b7791 100644 --- a/components/Text/Text.stories.tsx +++ b/components/Text/Text.stories.tsx @@ -72,6 +72,7 @@ export const Transform: StoryFn = ({ ...args }) => ( {VARIANT_PARENTS.map((color) => ( = ({ ...args }) => ( {SIZE_PARENTS.map((fontSize) => ( ": - version: 2.0.0-next.5 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 - languageName: node - linkType: hard - "resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" @@ -16088,19 +15510,6 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.3": - version: 1.1.3 - resolution: "safe-array-concat@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.6" - has-symbols: "npm:^1.1.0" - isarray: "npm:^2.0.5" - checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d - languageName: node - linkType: hard - "safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -16108,16 +15517,6 @@ __metadata: languageName: node linkType: hard -"safe-push-apply@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-push-apply@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - isarray: "npm:^2.0.5" - checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 - languageName: node - linkType: hard - "safe-regex-test@npm:^1.0.3": version: 1.0.3 resolution: "safe-regex-test@npm:1.0.3" @@ -16129,17 +15528,6 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex-test@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.2.1" - checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -16262,7 +15650,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1, set-function-length@npm:^1.2.2": +"set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -16276,7 +15664,7 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": +"set-function-name@npm:^2.0.1": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" dependencies: @@ -16288,17 +15676,6 @@ __metadata: languageName: node linkType: hard -"set-proto@npm:^1.0.0": - version: 1.0.0 - resolution: "set-proto@npm:1.0.0" - dependencies: - dunder-proto: "npm:^1.0.1" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -16315,41 +15692,6 @@ __metadata: languageName: node linkType: hard -"side-channel-list@npm:^1.0.0": - version: 1.0.0 - resolution: "side-channel-list@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d - languageName: node - linkType: hard - -"side-channel-map@npm:^1.0.1": - version: 1.0.1 - resolution: "side-channel-map@npm:1.0.1" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 - languageName: node - linkType: hard - -"side-channel-weakmap@npm:^1.0.2": - version: 1.0.2 - resolution: "side-channel-weakmap@npm:1.0.2" - dependencies: - call-bound: "npm:^1.0.2" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.5" - object-inspect: "npm:^1.13.3" - side-channel-map: "npm:^1.0.1" - checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.6 resolution: "side-channel@npm:1.0.6" @@ -16362,19 +15704,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.1.0": - version: 1.1.0 - resolution: "side-channel@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - object-inspect: "npm:^1.13.3" - side-channel-list: "npm:^1.0.0" - side-channel-map: "npm:^1.0.1" - side-channel-weakmap: "npm:^1.0.2" - checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -16624,16 +15953,6 @@ __metadata: languageName: node linkType: hard -"stop-iteration-iterator@npm:^1.1.0": - version: 1.1.0 - resolution: "stop-iteration-iterator@npm:1.1.0" - dependencies: - es-errors: "npm:^1.3.0" - internal-slot: "npm:^1.1.0" - checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 - languageName: node - linkType: hard - "storybook@npm:10.3.5": version: 10.3.5 resolution: "storybook@npm:10.3.5" @@ -16689,6 +16008,13 @@ __metadata: languageName: node linkType: hard +"string-ts@npm:^2.3.1": + version: 2.3.1 + resolution: "string-ts@npm:2.3.1" + checksum: 10c0/14b2829934713bf6cdf7ea54d948283af345e5c505bfb505aca949ab67235cbc99a3e335581f8a91f68935ac52c0d44b32112618658371e5593d5a75f26b3048 + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -16764,52 +16090,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.12": - version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - internal-slot: "npm:^1.1.0" - regexp.prototype.flags: "npm:^1.5.3" - set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10c0/1a53328ada73f4a77f1fdf1c79414700cf718d0a8ef6672af5603e709d26a24f2181208144aed7e858b1bcc1a0d08567a570abfb45567db4ae47637ed2c2f85c - languageName: node - linkType: hard - -"string.prototype.repeat@npm:^1.0.0": - version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.5" - checksum: 10c0/94c7978566cffa1327d470fd924366438af9b04b497c43a9805e476e2e908aa37a1fd34cc0911156c17556dab62159d12c7b92b3cc304c3e1281fe4c8e668f40 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.10": - version: 1.2.10 - resolution: "string.prototype.trim@npm:1.2.10" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-data-property: "npm:^1.1.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-object-atoms: "npm:^1.0.0" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 - languageName: node - linkType: hard - "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -16833,18 +16113,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.9": - version: 1.0.9 - resolution: "string.prototype.trimend@npm:1.0.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.2" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 - languageName: node - linkType: hard - "string.prototype.trimstart@npm:^1.0.8": version: 1.0.8 resolution: "string.prototype.trimstart@npm:1.0.8" @@ -17441,6 +16709,13 @@ __metadata: languageName: node linkType: hard +"ts-pattern@npm:^5.9.0": + version: 5.9.0 + resolution: "ts-pattern@npm:5.9.0" + checksum: 10c0/7640db25c39d29b287471b2b82d4f7b4674a02098c6ba4d10fed180adfb07d0e0c71930d9e59dc0d90654145e02fd320af63cf0df3c41e100d4154658a612a0a + languageName: node + linkType: hard + "tsconfig-paths@npm:^4.2.0": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" @@ -17555,17 +16830,6 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-buffer@npm:1.0.3" - dependencies: - call-bound: "npm:^1.0.3" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 - languageName: node - linkType: hard - "typed-array-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "typed-array-byte-length@npm:1.0.1" @@ -17579,19 +16843,6 @@ __metadata: languageName: node linkType: hard -"typed-array-byte-length@npm:^1.0.3": - version: 1.0.3 - resolution: "typed-array-byte-length@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.14" - checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e - languageName: node - linkType: hard - "typed-array-byte-offset@npm:^1.0.2": version: 1.0.2 resolution: "typed-array-byte-offset@npm:1.0.2" @@ -17606,21 +16857,6 @@ __metadata: languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-byte-offset@npm:1.0.4" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - for-each: "npm:^0.3.3" - gopd: "npm:^1.2.0" - has-proto: "npm:^1.2.0" - is-typed-array: "npm:^1.1.15" - reflect.getprototypeof: "npm:^1.0.9" - checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 - languageName: node - linkType: hard - "typed-array-length@npm:^1.0.6": version: 1.0.6 resolution: "typed-array-length@npm:1.0.6" @@ -17635,20 +16871,6 @@ __metadata: languageName: node linkType: hard -"typed-array-length@npm:^1.0.7": - version: 1.0.7 - resolution: "typed-array-length@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - reflect.getprototypeof: "npm:^1.0.6" - checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 - languageName: node - linkType: hard - "typedarray.prototype.slice@npm:^1.0.3": version: 1.0.3 resolution: "typedarray.prototype.slice@npm:1.0.3" @@ -17746,18 +16968,6 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.1.0": - version: 1.1.0 - resolution: "unbox-primitive@npm:1.1.0" - dependencies: - call-bound: "npm:^1.0.3" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.1.0" - which-boxed-primitive: "npm:^1.1.1" - checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 - languageName: node - linkType: hard - "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" @@ -18367,52 +17577,6 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": - version: 1.1.1 - resolution: "which-boxed-primitive@npm:1.1.1" - dependencies: - is-bigint: "npm:^1.1.0" - is-boolean-object: "npm:^1.2.1" - is-number-object: "npm:^1.1.1" - is-string: "npm:^1.1.1" - is-symbol: "npm:^1.1.1" - checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.2.1": - version: 1.2.1 - resolution: "which-builtin-type@npm:1.2.1" - dependencies: - call-bound: "npm:^1.0.2" - function.prototype.name: "npm:^1.1.6" - has-tostringtag: "npm:^1.0.2" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.1.0" - is-finalizationregistry: "npm:^1.1.0" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.2.1" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.1.0" - which-collection: "npm:^1.0.2" - which-typed-array: "npm:^1.1.16" - checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.2": - version: 1.0.2 - resolution: "which-collection@npm:1.0.2" - dependencies: - is-map: "npm:^2.0.3" - is-set: "npm:^2.0.3" - is-weakmap: "npm:^2.0.2" - is-weakset: "npm:^2.0.3" - checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 - languageName: node - linkType: hard - "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" @@ -18426,21 +17590,6 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": - version: 1.1.19 - resolution: "which-typed-array@npm:1.1.19" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - for-each: "npm:^0.3.5" - get-proto: "npm:^1.0.1" - gopd: "npm:^1.2.0" - has-tostringtag: "npm:^1.0.2" - checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -18753,16 +17902,7 @@ __metadata: languageName: node linkType: hard -"zod-validation-error@npm:^3.5.0 || ^4.0.0": - version: 4.0.2 - resolution: "zod-validation-error@npm:4.0.2" - peerDependencies: - zod: ^3.25.0 || ^4.0.0 - checksum: 10c0/0ccfec48c46de1be440b719cd02044d4abb89ed0e14c13e637cd55bf29102f67ccdba373f25def0fc7130e5f15025be4d557a7edcc95d5a3811599aade689e1b - languageName: node - linkType: hard - -"zod@npm:^3.25.0 || ^4.0.0": +"zod@npm:^4.3.6": version: 4.3.6 resolution: "zod@npm:4.3.6" checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307