diff --git a/CHANGELOG.md b/CHANGELOG.md index 05d5d0387..68b1dfa53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p This is a major release, and it might be not compatible with your current usage of our library. Please read about the necessary changes in the section about how to migrate. +### Migration from v24 to v25 + +- remove deprecated components, properties and imports from your project, if the info cannot be found here then it was already mentioned in **Deprecated** sections of the past changelogs +- in case you set your own colors before importing GUI elements you need to update your configuration to the new color palette structure, see `README.md` +- change `intent="primary"` to `intent="accent"` for ` + + + ); +}; + +const InnerModal = () => { + return ; +}; + +const MiddleModal = () => { + return ( + + + + ); +}; + +/** Shows the current stack of open modals. */ +const TrackingContent = () => { + const modalContext = React.useContext(ModalContext); + + return ( + + ); +}; diff --git a/src/components/Icon/canonicalIconNames.tsx b/src/components/Icon/canonicalIconNames.tsx index affdc7ad8..93ed7f87e 100644 --- a/src/components/Icon/canonicalIconNames.tsx +++ b/src/components/Icon/canonicalIconNames.tsx @@ -25,6 +25,17 @@ const canonicalIcons = { "artefact-task-concatenatetofile": icons.DocumentExport, "artefact-task-sqlupdatequeryoperator": icons.Sql, "artefact-task-customsqlexecution": icons.Sql, + "artefact-task-multitablemerge": icons.JoinFull, + "artefact-task-jsonparseroperator": icons.JsonReference, + "artefact-task-searchaddresses": icons.SearchLocate, + "artefact-task-sparkfunction": icons.Flash, + "artefact-task-eccencadataplatformgraphstorefileuploadoperator": icons.Upload, + "artefact-task-xsltoperator": icons.TransformCode, + "artefact-task-distinctby": icons.Filter, + "artefact-task-template": icons.Template, + "artefact-task-merge": icons.Connect, + "artefact-task-scheduler": icons.EventSchedule, + "artefact-task-sendemail": icons.Email, "artefact-dataset-csv": icons.Csv, "artefact-dataset-eccencadataplatform": icons.DataVis_1, "artefact-dataset-excel": icons.Xls, @@ -77,6 +88,7 @@ const canonicalIcons = { "item-execution": icons.Run, "item-info": icons.Information, "item-launch": icons.Launch, + "item-legend": icons.Legend, "item-moremenu": icons.OverflowMenuVertical, "item-question": icons.Help, "item-reload": icons.Renew, @@ -94,8 +106,8 @@ const canonicalIcons = { "item-hidedetails": icons.ViewOff, "item-image": icons.Image, - "list-sortasc": icons.ArrowDown, - "list-sortdesc": icons.ArrowUp, + "list-sortasc": icons.ArrowUp, + "list-sortdesc": icons.ArrowDown, "list-sort": icons.ArrowsVertical, "module-accesscontrol": icons.UserAdmin, @@ -147,6 +159,7 @@ const canonicalIcons = { "operation-logout": icons.Logout, "operation-magic": icons.MagicWand, "operation-merge": icons.DirectionMerge, + "operation-tour": icons.Tour, "operation-redo": icons.Redo, "operation-search": icons.Search, "operation-send": icons.Send, @@ -161,9 +174,13 @@ const canonicalIcons = { "state-confirmed": icons.ThumbsUp, "state-danger": icons.ErrorFilled, "state-declined": icons.ThumbsDown, + "state-flagged": icons.Flag, "state-info": icons.InformationFilled, "state-locked": icons.Locked, "state-partlychecked": icons.CheckboxIndeterminate, + "state-progress": icons.InProgress, + "state-progress-error": icons.InProgressError, + "state-progress-warning": icons.InProgressWarning, "state-protected": icons.DocumentProtected, "state-success": icons.CheckmarkFilled, "state-unchecked": icons.Checkbox, @@ -171,13 +188,19 @@ const canonicalIcons = { "state-warning": icons.WarningAltFilled, "toggler-caret": icons.CaretSort, + "toggler-carettop": icons.CaretUp, "toggler-caretright": icons.CaretRight, "toggler-caretdown": icons.CaretDown, + "toggler-caretleft": icons.CaretLeft, "toggler-maximize": icons.Maximize, "toggler-minimize": icons.Minimize, + "toggler-micon": icons.Microphone, + "toggler-micoff": icons.MicrophoneOff, "toggler-moveleft": icons.ChevronLeft, "toggler-moveright": icons.ChevronRight, "toggler-list": icons.List, + "toggler-radio": icons.RadioButton, + "toggler-radio-checked": icons.RadioButtonChecked, "toggler-rowexpand": icons.RowExpand, "toggler-rowcollapse": icons.RowCollapse, "toggler-showless": icons.ChevronUp, diff --git a/src/components/Icon/icon.scss b/src/components/Icon/icon.scss index 755351c05..2285cf987 100644 --- a/src/components/Icon/icon.scss +++ b/src/components/Icon/icon.scss @@ -1,6 +1,12 @@ .#{$eccgui}-icon { vertical-align: text-bottom; + &.#{$eccgui}-intent--primary { + color: $eccgui-color-primary; + } + &.#{$eccgui}-intent--accent { + color: $eccgui-color-accent; + } &.#{$eccgui}-intent--info { color: $eccgui-color-info-text; } diff --git a/src/components/Icon/stories/Icon.stories.tsx b/src/components/Icon/stories/Icon.stories.tsx index 42652a9a5..1840f6cca 100644 --- a/src/components/Icon/stories/Icon.stories.tsx +++ b/src/components/Icon/stories/Icon.stories.tsx @@ -2,7 +2,18 @@ import React from "react"; import { OverlaysProvider } from "@blueprintjs/core"; import { Meta, StoryFn } from "@storybook/react"; -import { Button, Icon } from "../../../../index"; +import { + Card, + FlexibleLayoutContainer, + FlexibleLayoutItem, + Icon, + OverflowText, + OverviewItem, + OverviewItemDepiction, + OverviewItemDescription, + OverviewItemLine, + TitleSubsection, +} from "../../../../index"; import { Definitions } from "../../../common/Intent"; import BaseIcon from "../BaseIcon"; @@ -19,7 +30,8 @@ export default { }, intent: { control: "select", - options: { ...Definitions }, + options: [...Object.keys(Definitions)], + mapping: { ...Definitions }, }, }, } as Meta; @@ -49,12 +61,60 @@ IconSizes.args = { name: "undefined", }; +/** + * Available icons by their canonical names. + * If you need another icon then use ` component. + */ export const IconsOverview = () => { + let section = ""; + let separation = <>; return ( - {Object.keys(canonicalIcons).map((iconName) => { - return - diff --git a/src/configuration/_palettes.scss b/src/configuration/_palettes.scss index 9c3d025ca..6d2c1de5e 100644 --- a/src/configuration/_palettes.scss +++ b/src/configuration/_palettes.scss @@ -13,7 +13,7 @@ $eccgui-color-palette-light: ( ), "semantic": ( "info": eccgui-create-color-tints(#e5f4fb #aecfe3 #77aaca #4086b2 #096199), - "success": eccgui-create-color-tints(#e8f5e9 #b2c6b4 #7c967e #466749 #2f5e3a), + "success": eccgui-create-color-tints(#e8f5e9 #b1d4b7 #7ab286 #429154 #0b6f22), "warning": eccgui-create-color-tints(#fff3e0 #fad2b3 #f5b287 #f0915a #eb702d), "danger": eccgui-create-color-tints(#fff5f6 #edbfc0 #db8989 #c95253 #b71c1c), ), @@ -24,6 +24,7 @@ $eccgui-color-palette-light: ( "pink": eccgui-create-color-tints(#fde4f1 #e6b4ce #d08aae #bb5f8e #711c4d), "violet": eccgui-create-color-tints(#f4e3f4 #d8b0d8 #b377b3 #904490 #6e1f6e), "indigo": eccgui-create-color-tints(#efe4fb #b89ee0 #8f72c5 #6547aa #3b1e8f), + "petrol": eccgui-create-color-tints(#e7eef2 #b0c8d4 #7aa2b5 #437c97 #0c5678), "cyan": eccgui-create-color-tints(#dff9fc #86d6e5 #5abfd4 #2da9c4 #006a8f), "teal": eccgui-create-color-tints(#dff4ef #a3ddd3 #6dc0b2 #479d8d #104c42), "lime": eccgui-create-color-tints(#e4f3ea #d2edd6 #9dcd99 #688a55 #5a7b2c), diff --git a/src/extensions/react-flow/_config.scss b/src/extensions/react-flow/_config.scss index 15f3a9d9b..296cfadc6 100644 --- a/src/extensions/react-flow/_config.scss +++ b/src/extensions/react-flow/_config.scss @@ -7,9 +7,14 @@ $reactflow-node-color: $eccgui-color-workspace-text !default; $reactflow-node-font-size: $eccgui-size-typo-caption !default; $reactflow-node-border-width: 2 * $button-border-width !default; $reactflow-node-border-radius: $button-border-radius !default; -$reactflow-edge-stroke-opacity-default: 0.8 !default; -$reactflow-edge-stroke-opacity-hover: 0.9 !default; -$reactflow-edge-stroke-opacity-selected: 1 !default; +$reactflow-edge-rendering: geometricprecision !default; +$reactflow-edge-stroke-width-default: 2px !default; +$reactflow-edge-stroke-width-hover: 2px !default; +$reactflow-edge-stroke-width-selected: 2px !default; +$reactflow-edge-stroke-opacity-default: $eccgui-opacity-muted !default; +$reactflow-edge-stroke-opacity-hover: $eccgui-opacity-narrow !default; +$reactflow-edge-stroke-opacity-selected: $eccgui-opacity-regular !default; +$reactflow-edge-stroke-opacity-interaction-ratio: $eccgui-opacity-ghostly !default; $reactflow-edge-stroke-color-default: #{eccgui-color-var("identity", "text", "700")} !default; $reactflow-edge-stroke-color-hover: $reactflow-edge-stroke-color-default !default; $reactflow-edge-stroke-color-selected: $eccgui-color-accent !default; diff --git a/src/extensions/react-flow/_react-flow_v12.scss b/src/extensions/react-flow/_react-flow_v12.scss index 2a57eabde..857acd992 100644 --- a/src/extensions/react-flow/_react-flow_v12.scss +++ b/src/extensions/react-flow/_react-flow_v12.scss @@ -67,7 +67,7 @@ position: absolute; } -.react-flow .react-flow__edges svg { +.react-flow .react-flow__edges svg:not(.#{$eccgui}-icon) { position: absolute; overflow: visible; pointer-events: none; @@ -179,31 +179,27 @@ svg.react-flow__connectionline { pointer-events: none; background-color: $reactflow-background-color; border: solid 1px $eccgui-color-separation-divider; - - pattern path { - opacity: $eccgui-opacity-ghostly; - stroke: #{eccgui-color-var("identity", "text", "300")}; - } } .react-flow__background-pattern, -.react-flow__background pattern path:first-child { - opacity: $eccgui-opacity-ghostly; - stroke: #{eccgui-color-var("identity", "text", "500")}; +.react-flow__background pattern *:first-child:not(.react-flow__background-pattern) { + opacity: $eccgui-opacity-muted; + stroke: $eccgui-color-separation-divider; } .react-flow__background-pattern.dots, -.react-flow__background pattern circle:first-child { - opacity: $eccgui-opacity-muted; - fill: #{eccgui-color-var("identity", "text", "700")}; +.react-flow__background pattern circle:first-child:not(.react-flow__background-pattern) { + fill: #{eccgui-color-var("identity", "text", "500")}; } .react-flow__background-pattern.cross { - stroke: #{eccgui-color-var("identity", "text", "300")}; + opacity: $eccgui-opacity-disabled; + stroke: #{eccgui-color-var("identity", "text", "500")}; + stroke-width: 0.3; } .react-flow__background-pattern.lines { - stroke: #{eccgui-color-var("identity", "text", "300")}; + stroke-width: 0.4; } .react-flow__attribution { diff --git a/src/extensions/react-flow/edges/EdgeLabel.tsx b/src/extensions/react-flow/edges/EdgeLabel.tsx index 1faf5fa03..767146a21 100644 --- a/src/extensions/react-flow/edges/EdgeLabel.tsx +++ b/src/extensions/react-flow/edges/EdgeLabel.tsx @@ -28,7 +28,7 @@ export interface EdgeLabelProps extends React.HTMLAttributes { */ fullWidth?: boolean; /** - * Label is diaplayed without a box that comes with borders and background color. + * Label is displayed without a box that comes with borders and background color. */ loose?: boolean; /** diff --git a/src/extensions/react-flow/edges/_edges.scss b/src/extensions/react-flow/edges/_edges.scss index 25783eed0..9583398b6 100644 --- a/src/extensions/react-flow/edges/_edges.scss +++ b/src/extensions/react-flow/edges/_edges.scss @@ -10,7 +10,7 @@ path[class*="react-flow__edge"], rect[class*="react-flow__edge"] { stroke-opacity: $reactflow-edge-stroke-opacity-default; - shape-rendering: optimizespeed; + shape-rendering: $reactflow-edge-rendering; } text[class*="react-flow__edge"] { @@ -60,11 +60,15 @@ path.react-flow__edge-path { stroke: currentcolor; stroke-opacity: $reactflow-edge-stroke-opacity-default; - stroke-width: 2; + stroke-width: $reactflow-edge-stroke-width-default; + + .react-flow__edge:hover & { + stroke-width: $reactflow-edge-stroke-width-hover; + } .react-flow__edge.selected & { stroke: currentcolor; - stroke-width: 2; + stroke-width: $reactflow-edge-stroke-width-selected; } } @@ -78,11 +82,11 @@ path.react-flow__edge-interaction { } .react-flow__edge:hover & { - stroke-opacity: $reactflow-edge-stroke-opacity-hover * 0.2; + stroke-opacity: $reactflow-edge-stroke-opacity-hover * $reactflow-edge-stroke-opacity-interaction-ratio; } .react-flow__edge.selected & { - stroke-opacity: $reactflow-edge-stroke-opacity-selected * 0.2; + stroke-opacity: $reactflow-edge-stroke-opacity-selected * $reactflow-edge-stroke-opacity-interaction-ratio; } } @@ -96,11 +100,11 @@ path.react-flow__edge-path-glow { } .react-flow__edge:hover & { - stroke-opacity: $reactflow-edge-stroke-opacity-hover * 0.2; + stroke-opacity: $reactflow-edge-stroke-opacity-hover * $reactflow-edge-stroke-opacity-interaction-ratio; } .react-flow__edge.selected & { - stroke-opacity: $reactflow-edge-stroke-opacity-selected * 0.2; + stroke-opacity: $reactflow-edge-stroke-opacity-selected * $reactflow-edge-stroke-opacity-interaction-ratio; } .react-flow__edge.animated & { @@ -271,6 +275,10 @@ path.react-flow__edge-path-highlight { // Custom label +.#{$eccgui}-graphviz__edge-labelobject { + overflow: visible; +} + .#{$eccgui}-graphviz__edge-label { --#{$eccgui}-reactflow-edge-label-color: currentcolor; --#{$eccgui}-reactflow-edge-label-color-background: #{$card-background-color}; diff --git a/src/extensions/react-flow/edges/stories/EdgeDefault.stories.tsx b/src/extensions/react-flow/edges/stories/EdgeDefault.stories.tsx index 64dd15932..1fc450b77 100644 --- a/src/extensions/react-flow/edges/stories/EdgeDefault.stories.tsx +++ b/src/extensions/react-flow/edges/stories/EdgeDefault.stories.tsx @@ -2,13 +2,13 @@ import React, { useCallback, useEffect, useState } from "react"; import { ArrowHeadType, Elements, getMarkerEnd, ReactFlowProvider } from "react-flow-renderer"; import { Meta, StoryFn } from "@storybook/react"; -import { EdgeLabel, EdgeLabelObject, ReactFlow } from "./../../../../../index"; -import { EdgeDefault, EdgeDefaultDataProps as EdgeData } from "./../EdgeDefault"; +import { EdgeDefaultProps, EdgeLabel, EdgeLabelObject, ReactFlowExtended } from "./../../../../../index"; import { edgeTypes } from "./../../../../cmem/react-flow/configuration/workflow"; +import { EdgeDefault, EdgeDefaultDataProps as EdgeData } from "./../EdgeDefault"; const EdgeDefaultDataProps = (data: EdgeData) => { // this is only a mock to get it as sub element in the table - return <>; + return <>{data.intent}; }; export default { @@ -23,7 +23,7 @@ export default { }, } as Meta; -const EdgeDefaultExample = (args: any) => { +const EdgeDefaultExample = (args: EdgeDefaultProps) => { const [reactflowInstance, setReactflowInstance] = useState(null); const [elements, setElements] = useState([] as Elements); @@ -66,7 +66,7 @@ const EdgeDefaultExample = (args: any) => { return ( - >({ nodeContentRef.current.style.height = `${nextHeight}px`; } } - }, [resizeDirections, originalSize]) + }, [resizeDirections, originalSize, width, height]) const onResizeStop = React.useCallback((_0, _1, _2, d) => { const nextWidth = validateWidth((width ?? originalSize.current.width ?? 0) + d.width); @@ -767,7 +767,7 @@ export function NodeContent>({ width: nextWidth, }); } - }, [onNodeResize]) + }, [onNodeResize, width, height, originalSize]); const resizableSize = React.useMemo(() => ({ height: height ?? "auto", width: width ?? "auto" }), [height, width]); const enableResize = React.useMemo(() => resizeDirections!.bottom && resizeDirections!.right ? { bottomRight: true } : resizeDirections, [resizeDirections]); diff --git a/yarn.lock b/yarn.lock index 2d050d83d..022500e5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1924,50 +1924,50 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.5.tgz#d7d027c2db5c64c20a973b7f3e57b49956d6c335" - integrity sha512-xY6b0XiL0Nav3ReresUarwl2oIz1gTnxGbGpho9/rbUWsLH0f1OD/VT84xs8c7VmH7MChnLb0pag6PhZhAdDiA== +"@jest/console@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.2.0.tgz#c52fcd5b58fdd2e8eb66b2fd8ae56f2f64d05b28" + integrity sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ== dependencies: - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@types/node" "*" chalk "^4.1.2" - jest-message-util "30.0.5" - jest-util "30.0.5" + jest-message-util "30.2.0" + jest-util "30.2.0" slash "^3.0.0" -"@jest/core@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.5.tgz#b5778922d2928f676636e3ec199829554e61e452" - integrity sha512-fKD0OulvRsXF1hmaFgHhVJzczWzA1RXMMo9LTPuFXo9q/alDbME3JIyWYqovWsUBWSoBcsHaGPSLF9rz4l9Qeg== +"@jest/core@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.2.0.tgz#813d59faa5abd5510964a8b3a7b17cc77b775275" + integrity sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ== dependencies: - "@jest/console" "30.0.5" + "@jest/console" "30.2.0" "@jest/pattern" "30.0.1" - "@jest/reporters" "30.0.5" - "@jest/test-result" "30.0.5" - "@jest/transform" "30.0.5" - "@jest/types" "30.0.5" + "@jest/reporters" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" ansi-escapes "^4.3.2" chalk "^4.1.2" ci-info "^4.2.0" exit-x "^0.2.2" graceful-fs "^4.2.11" - jest-changed-files "30.0.5" - jest-config "30.0.5" - jest-haste-map "30.0.5" - jest-message-util "30.0.5" + jest-changed-files "30.2.0" + jest-config "30.2.0" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" jest-regex-util "30.0.1" - jest-resolve "30.0.5" - jest-resolve-dependencies "30.0.5" - jest-runner "30.0.5" - jest-runtime "30.0.5" - jest-snapshot "30.0.5" - jest-util "30.0.5" - jest-validate "30.0.5" - jest-watcher "30.0.5" + jest-resolve "30.2.0" + jest-resolve-dependencies "30.2.0" + jest-runner "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" + jest-watcher "30.2.0" micromatch "^4.0.8" - pretty-format "30.0.5" + pretty-format "30.2.0" slash "^3.0.0" "@jest/diff-sequences@30.0.1": @@ -1975,35 +1975,35 @@ resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== -"@jest/environment-jsdom-abstract@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.5.tgz#7299cca59b3e84547ca3d1bbd4e7d36b4b44d426" - integrity sha512-gpWwiVxZunkoglP8DCnT3As9x5O8H6gveAOpvaJd2ATAoSh7ZSSCWbr9LQtUMvr8WD3VjG9YnDhsmkCK5WN1rQ== +"@jest/environment-jsdom-abstract@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz#1313f9b3b509c31298c241203161b36622865181" + integrity sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ== dependencies: - "@jest/environment" "30.0.5" - "@jest/fake-timers" "30.0.5" - "@jest/types" "30.0.5" + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" "@types/jsdom" "^21.1.7" "@types/node" "*" - jest-mock "30.0.5" - jest-util "30.0.5" + jest-mock "30.2.0" + jest-util "30.2.0" -"@jest/environment@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.5.tgz#eaaae0403c7d3f8414053c2224acc3011e1c3a1b" - integrity sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA== +"@jest/environment@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.2.0.tgz#1e673cdb8b93ded707cf6631b8353011460831fa" + integrity sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g== dependencies: - "@jest/fake-timers" "30.0.5" - "@jest/types" "30.0.5" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" - jest-mock "30.0.5" + jest-mock "30.2.0" -"@jest/expect-utils@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.5.tgz#9d42e4b8bc80367db30abc6c42b2cb14073f66fc" - integrity sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew== +"@jest/expect-utils@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.2.0.tgz#4f95413d4748454fdb17404bf1141827d15e6011" + integrity sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA== dependencies: - "@jest/get-type" "30.0.1" + "@jest/get-type" "30.1.0" "@jest/expect-utils@^29.7.0": version "29.7.0" @@ -2012,40 +2012,40 @@ dependencies: jest-get-type "^29.6.3" -"@jest/expect@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.5.tgz#2bbd101df4869f5d171c3cfee881f810f1525005" - integrity sha512-6udac8KKrtTtC+AXZ2iUN/R7dp7Ydry+Fo6FPFnDG54wjVMnb6vW/XNlf7Xj8UDjAE3aAVAsR4KFyKk3TCXmTA== +"@jest/expect@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.2.0.tgz#9a5968499bb8add2bbb09136f69f7df5ddbf3185" + integrity sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA== dependencies: - expect "30.0.5" - jest-snapshot "30.0.5" + expect "30.2.0" + jest-snapshot "30.2.0" -"@jest/fake-timers@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.5.tgz#c028a9465a44b7744cb2368196bed89ce13c7054" - integrity sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw== +"@jest/fake-timers@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.2.0.tgz#0941ddc28a339b9819542495b5408622dc9e94ec" + integrity sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw== dependencies: - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@sinonjs/fake-timers" "^13.0.0" "@types/node" "*" - jest-message-util "30.0.5" - jest-mock "30.0.5" - jest-util "30.0.5" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" -"@jest/get-type@30.0.1": - version "30.0.1" - resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52" - integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== +"@jest/get-type@30.1.0": + version "30.1.0" + resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.1.0.tgz#4fcb4dc2ebcf0811be1c04fd1cb79c2dba431cbc" + integrity sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA== -"@jest/globals@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.5.tgz#ca70e0ac08ab40417cf8cd92bcb76116c2ccca63" - integrity sha512-7oEJT19WW4oe6HR7oLRvHxwlJk2gev0U9px3ufs8sX9PoD1Eza68KF0/tlN7X0dq/WVsBScXQGgCldA1V9Y/jA== +"@jest/globals@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.2.0.tgz#2f4b696d5862664b89c4ee2e49ae24d2bb7e0988" + integrity sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw== dependencies: - "@jest/environment" "30.0.5" - "@jest/expect" "30.0.5" - "@jest/types" "30.0.5" - jest-mock "30.0.5" + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/types" "30.2.0" + jest-mock "30.2.0" "@jest/pattern@30.0.1": version "30.0.1" @@ -2055,16 +2055,16 @@ "@types/node" "*" jest-regex-util "30.0.1" -"@jest/reporters@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.5.tgz#b83585e6448d390a8d92a641c567f1655976d5c6" - integrity sha512-mafft7VBX4jzED1FwGC1o/9QUM2xebzavImZMeqnsklgcyxBto8mV4HzNSzUrryJ+8R9MFOM3HgYuDradWR+4g== +"@jest/reporters@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.2.0.tgz#a36b28fcbaf0c4595250b108e6f20e363348fd91" + integrity sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "30.0.5" - "@jest/test-result" "30.0.5" - "@jest/transform" "30.0.5" - "@jest/types" "30.0.5" + "@jest/console" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" "@jridgewell/trace-mapping" "^0.3.25" "@types/node" "*" chalk "^4.1.2" @@ -2077,9 +2077,9 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^5.0.0" istanbul-reports "^3.1.3" - jest-message-util "30.0.5" - jest-util "30.0.5" - jest-worker "30.0.5" + jest-message-util "30.2.0" + jest-util "30.2.0" + jest-worker "30.2.0" slash "^3.0.0" string-length "^4.0.2" v8-to-istanbul "^9.0.1" @@ -2098,12 +2098,12 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/snapshot-utils@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.5.tgz#e23a0e786f174e8cff7f150c1cfbdc9cb7cc81a4" - integrity sha512-XcCQ5qWHLvi29UUrowgDFvV4t7ETxX91CbDczMnoqXPOIcZOxyNdSjm6kV5XMc8+HkxfRegU/MUmnTbJRzGrUQ== +"@jest/snapshot-utils@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz#387858eb90c2f98f67bff327435a532ac5309fbe" + integrity sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug== dependencies: - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" chalk "^4.1.2" graceful-fs "^4.2.11" natural-compare "^1.4.0" @@ -2117,42 +2117,42 @@ callsites "^3.1.0" graceful-fs "^4.2.11" -"@jest/test-result@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.5.tgz#064c5210c24d5ea192fb02ceddad3be1cfa557c8" - integrity sha512-wPyztnK0gbDMQAJZ43tdMro+qblDHH1Ru/ylzUo21TBKqt88ZqnKKK2m30LKmLLoKtR2lxdpCC/P3g1vfKcawQ== +"@jest/test-result@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.2.0.tgz#9c0124377fb7996cdffb86eda3dbc56eacab363d" + integrity sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg== dependencies: - "@jest/console" "30.0.5" - "@jest/types" "30.0.5" + "@jest/console" "30.2.0" + "@jest/types" "30.2.0" "@types/istanbul-lib-coverage" "^2.0.6" collect-v8-coverage "^1.0.2" -"@jest/test-sequencer@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.5.tgz#c6dba8fc3c386dd793c087626e8508ff1ead19f4" - integrity sha512-Aea/G1egWoIIozmDD7PBXUOxkekXl7ueGzrsGGi1SbeKgQqCYCIf+wfbflEbf2LiPxL8j2JZGLyrzZagjvW4YQ== +"@jest/test-sequencer@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz#bf0066bc72e176d58f5dfa7f212b6e7eee44f221" + integrity sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q== dependencies: - "@jest/test-result" "30.0.5" + "@jest/test-result" "30.2.0" graceful-fs "^4.2.11" - jest-haste-map "30.0.5" + jest-haste-map "30.2.0" slash "^3.0.0" -"@jest/transform@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.5.tgz#f8ca2e9f7466b77b406807d3bef1f6790dd384e4" - integrity sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg== +"@jest/transform@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.2.0.tgz#54bef1a4510dcbd58d5d4de4fe2980a63077ef2a" + integrity sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA== dependencies: "@babel/core" "^7.27.4" - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@jridgewell/trace-mapping" "^0.3.25" - babel-plugin-istanbul "^7.0.0" + babel-plugin-istanbul "^7.0.1" chalk "^4.1.2" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.11" - jest-haste-map "30.0.5" + jest-haste-map "30.2.0" jest-regex-util "30.0.1" - jest-util "30.0.5" + jest-util "30.2.0" micromatch "^4.0.8" pirates "^4.0.7" slash "^3.0.0" @@ -2179,10 +2179,10 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@30.0.5": - version "30.0.5" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.5.tgz#29a33a4c036e3904f1cfd94f6fe77f89d2e1cc05" - integrity sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ== +"@jest/types@30.2.0": + version "30.2.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.2.0.tgz#1c678a7924b8f59eafd4c77d56b6d0ba976d62b8" + integrity sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg== dependencies: "@jest/pattern" "30.0.1" "@jest/schemas" "30.0.5" @@ -3079,6 +3079,11 @@ dependencies: "@types/unist" "*" +"@types/he@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/he/-/he-1.2.3.tgz#c33ca3096f30cbd5d68d78211572de3f9adff75a" + integrity sha512-q67/qwlxblDzEDvzHhVkwc1gzVWxaNxeyHUBF4xElrvjL11O+Ytze+1fGpBHlr/H9myiBUaUXNnNPmBHxxfAcA== + "@types/hoist-non-react-statics@^3.3.0": version "3.3.6" resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz#6bba74383cdab98e8db4e20ce5b4a6b98caed010" @@ -3946,15 +3951,15 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-jest@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.5.tgz#7cc7dd03d0d613125d458521f635b8c2361e89cc" - integrity sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg== +babel-jest@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.2.0.tgz#fd44a1ec9552be35ead881f7381faa7d8f3b95ac" + integrity sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw== dependencies: - "@jest/transform" "30.0.5" + "@jest/transform" "30.2.0" "@types/babel__core" "^7.20.5" - babel-plugin-istanbul "^7.0.0" - babel-preset-jest "30.0.1" + babel-plugin-istanbul "^7.0.1" + babel-preset-jest "30.2.0" chalk "^4.1.2" graceful-fs "^4.2.11" slash "^3.0.0" @@ -3991,10 +3996,10 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz#629a178f63b83dc9ecee46fd20266283b1f11280" - integrity sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw== +babel-plugin-istanbul@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz#d8b518c8ea199364cf84ccc82de89740236daf92" + integrity sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" @@ -4002,13 +4007,11 @@ babel-plugin-istanbul@^7.0.0: istanbul-lib-instrument "^6.0.2" test-exclude "^6.0.0" -babel-plugin-jest-hoist@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz#f271b2066d2c1fb26a863adb8e13f85b06247125" - integrity sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ== +babel-plugin-jest-hoist@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz#94c250d36b43f95900f3a219241e0f4648191ce2" + integrity sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.27.3" "@types/babel__core" "^7.20.5" babel-plugin-jest-hoist@^29.6.3: @@ -4066,7 +4069,7 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" -babel-preset-current-node-syntax@^1.1.0: +babel-preset-current-node-syntax@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz#20730d6cdc7dda5d89401cab10ac6a32067acde6" integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== @@ -4087,13 +4090,13 @@ babel-preset-current-node-syntax@^1.1.0: "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" -babel-preset-jest@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz#7d28db9531bce264e846c8483d54236244b8ae88" - integrity sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw== +babel-preset-jest@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz#04717843e561347781d6d7f69c81e6bcc3ed11ce" + integrity sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ== dependencies: - babel-plugin-jest-hoist "30.0.1" - babel-preset-current-node-syntax "^1.1.0" + babel-plugin-jest-hoist "30.2.0" + babel-preset-current-node-syntax "^1.2.0" babel-preset-jest@^29.6.3: version "29.6.3" @@ -5731,17 +5734,17 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.5.tgz#c23bf193c5e422a742bfd2990ad990811de41a5a" - integrity sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ== +expect@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-30.2.0.tgz#d4013bed267013c14bc1199cec8aa57cee9b5869" + integrity sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw== dependencies: - "@jest/expect-utils" "30.0.5" - "@jest/get-type" "30.0.1" - jest-matcher-utils "30.0.5" - jest-message-util "30.0.5" - jest-mock "30.0.5" - jest-util "30.0.5" + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" + jest-util "30.2.0" expect@^29.0.0: version "29.7.0" @@ -7257,96 +7260,96 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jest-changed-files@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.5.tgz#ec448f83bd9caa894dd7da8707f207c356a19924" - integrity sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A== +jest-changed-files@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.2.0.tgz#602266e478ed554e1e1469944faa7efd37cee61c" + integrity sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ== dependencies: execa "^5.1.1" - jest-util "30.0.5" + jest-util "30.2.0" p-limit "^3.1.0" -jest-circus@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.5.tgz#9b4d44feb56c7ffe14411ad7fc08af188c5d4da7" - integrity sha512-h/sjXEs4GS+NFFfqBDYT7y5Msfxh04EwWLhQi0F8kuWpe+J/7tICSlswU8qvBqumR3kFgHbfu7vU6qruWWBPug== +jest-circus@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.2.0.tgz#98b8198b958748a2f322354311023d1d02e7603f" + integrity sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg== dependencies: - "@jest/environment" "30.0.5" - "@jest/expect" "30.0.5" - "@jest/test-result" "30.0.5" - "@jest/types" "30.0.5" + "@jest/environment" "30.2.0" + "@jest/expect" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" chalk "^4.1.2" co "^4.6.0" dedent "^1.6.0" is-generator-fn "^2.1.0" - jest-each "30.0.5" - jest-matcher-utils "30.0.5" - jest-message-util "30.0.5" - jest-runtime "30.0.5" - jest-snapshot "30.0.5" - jest-util "30.0.5" + jest-each "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-runtime "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" p-limit "^3.1.0" - pretty-format "30.0.5" + pretty-format "30.2.0" pure-rand "^7.0.0" slash "^3.0.0" stack-utils "^2.0.6" -jest-cli@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.5.tgz#c3fbfdabd1a5c428429476f915a1ba6d0774cc50" - integrity sha512-Sa45PGMkBZzF94HMrlX4kUyPOwUpdZasaliKN3mifvDmkhLYqLLg8HQTzn6gq7vJGahFYMQjXgyJWfYImKZzOw== +jest-cli@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.2.0.tgz#1780f8e9d66bf84a10b369aea60aeda7697dcc67" + integrity sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA== dependencies: - "@jest/core" "30.0.5" - "@jest/test-result" "30.0.5" - "@jest/types" "30.0.5" + "@jest/core" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" chalk "^4.1.2" exit-x "^0.2.2" import-local "^3.2.0" - jest-config "30.0.5" - jest-util "30.0.5" - jest-validate "30.0.5" + jest-config "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" yargs "^17.7.2" -jest-config@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.5.tgz#567cf39b595229b786506a496c22e222d5e8d480" - integrity sha512-aIVh+JNOOpzUgzUnPn5FLtyVnqc3TQHVMupYtyeURSb//iLColiMIR8TxCIDKyx9ZgjKnXGucuW68hCxgbrwmA== +jest-config@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.2.0.tgz#29df8c50e2ad801cc59c406b50176c18c362a90b" + integrity sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA== dependencies: "@babel/core" "^7.27.4" - "@jest/get-type" "30.0.1" + "@jest/get-type" "30.1.0" "@jest/pattern" "30.0.1" - "@jest/test-sequencer" "30.0.5" - "@jest/types" "30.0.5" - babel-jest "30.0.5" + "@jest/test-sequencer" "30.2.0" + "@jest/types" "30.2.0" + babel-jest "30.2.0" chalk "^4.1.2" ci-info "^4.2.0" deepmerge "^4.3.1" glob "^10.3.10" graceful-fs "^4.2.11" - jest-circus "30.0.5" - jest-docblock "30.0.1" - jest-environment-node "30.0.5" + jest-circus "30.2.0" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" jest-regex-util "30.0.1" - jest-resolve "30.0.5" - jest-runner "30.0.5" - jest-util "30.0.5" - jest-validate "30.0.5" + jest-resolve "30.2.0" + jest-runner "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" micromatch "^4.0.8" parse-json "^5.2.0" - pretty-format "30.0.5" + pretty-format "30.2.0" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.5.tgz#b40f81e0c0d13e5b81c4d62b0d0dfa6a524ee0fd" - integrity sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A== +jest-diff@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.2.0.tgz#e3ec3a6ea5c5747f605c9e874f83d756cba36825" + integrity sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A== dependencies: "@jest/diff-sequences" "30.0.1" - "@jest/get-type" "30.0.1" + "@jest/get-type" "30.1.0" chalk "^4.1.2" - pretty-format "30.0.5" + pretty-format "30.2.0" jest-diff@^29.7.0: version "29.7.0" @@ -7358,66 +7361,66 @@ jest-diff@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-docblock@30.0.1: - version "30.0.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.0.1.tgz#545ff59f2fa88996bd470dba7d3798a8421180b1" - integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== +jest-docblock@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.2.0.tgz#42cd98d69f887e531c7352309542b1ce4ee10256" + integrity sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA== dependencies: detect-newline "^3.1.0" -jest-each@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.5.tgz#5962264ff246cd757ba44db096c1bc5b4835173e" - integrity sha512-dKjRsx1uZ96TVyejD3/aAWcNKy6ajMaN531CwWIsrazIqIoXI9TnnpPlkrEYku/8rkS3dh2rbH+kMOyiEIv0xQ== +jest-each@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.2.0.tgz#39e623ae71641c2ac3ee69b3ba3d258fce8e768d" + integrity sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ== dependencies: - "@jest/get-type" "30.0.1" - "@jest/types" "30.0.5" + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" chalk "^4.1.2" - jest-util "30.0.5" - pretty-format "30.0.5" + jest-util "30.2.0" + pretty-format "30.2.0" -jest-environment-jsdom@^30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.5.tgz#36351cc8a14fcd54945da0beb029af493d7d5764" - integrity sha512-BmnDEoAH+jEjkPrvE9DTKS2r3jYSJWlN/r46h0/DBUxKrkgt2jAZ5Nj4wXLAcV1KWkRpcFqA5zri9SWzJZ1cCg== +jest-environment-jsdom@^30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz#e95e0921ed22be974f1d8a324766d12b1844cb2c" + integrity sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ== dependencies: - "@jest/environment" "30.0.5" - "@jest/environment-jsdom-abstract" "30.0.5" + "@jest/environment" "30.2.0" + "@jest/environment-jsdom-abstract" "30.2.0" "@types/jsdom" "^21.1.7" "@types/node" "*" jsdom "^26.1.0" -jest-environment-node@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.5.tgz#6a98dd80e0384ead67ed05643381395f6cda93c9" - integrity sha512-ppYizXdLMSvciGsRsMEnv/5EFpvOdXBaXRBzFUDPWrsfmog4kYrOGWXarLllz6AXan6ZAA/kYokgDWuos1IKDA== +jest-environment-node@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.2.0.tgz#3def7980ebd2fd86e74efd4d2e681f55ab38da0f" + integrity sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA== dependencies: - "@jest/environment" "30.0.5" - "@jest/fake-timers" "30.0.5" - "@jest/types" "30.0.5" + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" - jest-mock "30.0.5" - jest-util "30.0.5" - jest-validate "30.0.5" + jest-mock "30.2.0" + jest-util "30.2.0" + jest-validate "30.2.0" jest-get-type@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.5.tgz#fdd0daa322b02eb34267854cff2859fae21e92a6" - integrity sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg== +jest-haste-map@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.2.0.tgz#808e3889f288603ac70ff0ac047598345a66022e" + integrity sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw== dependencies: - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@types/node" "*" anymatch "^3.1.3" fb-watchman "^2.0.2" graceful-fs "^4.2.11" jest-regex-util "30.0.1" - jest-util "30.0.5" - jest-worker "30.0.5" + jest-util "30.2.0" + jest-worker "30.2.0" micromatch "^4.0.8" walker "^1.0.8" optionalDependencies: @@ -7442,23 +7445,23 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.5.tgz#00cfd2b323f48d8f4416b0a3e05fcf4c51f18864" - integrity sha512-3Uxr5uP8jmHMcsOtYMRB/zf1gXN3yUIc+iPorhNETG54gErFIiUhLvyY/OggYpSMOEYqsmRxmuU4ZOoX5jpRFg== +jest-leak-detector@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz#292fdca7b7c9cf594e1e570ace140b01d8beb736" + integrity sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ== dependencies: - "@jest/get-type" "30.0.1" - pretty-format "30.0.5" + "@jest/get-type" "30.1.0" + pretty-format "30.2.0" -jest-matcher-utils@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz#dff3334be58faea4a5e1becc228656fbbfc2467d" - integrity sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ== +jest-matcher-utils@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz#69a0d4c271066559ec8b0d8174829adc3f23a783" + integrity sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg== dependencies: - "@jest/get-type" "30.0.1" + "@jest/get-type" "30.1.0" chalk "^4.1.2" - jest-diff "30.0.5" - pretty-format "30.0.5" + jest-diff "30.2.0" + pretty-format "30.2.0" jest-matcher-utils@^29.7.0: version "29.7.0" @@ -7470,18 +7473,18 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-message-util@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.5.tgz#dd12ffec91dd3fa6a59cbd538a513d8e239e070c" - integrity sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA== +jest-message-util@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.2.0.tgz#fc97bf90d11f118b31e6131e2b67fc4f39f92152" + integrity sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw== dependencies: "@babel/code-frame" "^7.27.1" - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@types/stack-utils" "^2.0.3" chalk "^4.1.2" graceful-fs "^4.2.11" micromatch "^4.0.8" - pretty-format "30.0.5" + pretty-format "30.2.0" slash "^3.0.0" stack-utils "^2.0.6" @@ -7500,14 +7503,14 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.5.tgz#ef437e89212560dd395198115550085038570bdd" - integrity sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ== +jest-mock@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.2.0.tgz#69f991614eeb4060189459d3584f710845bff45e" + integrity sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw== dependencies: - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@types/node" "*" - jest-util "30.0.5" + jest-util "30.2.0" jest-pnp-resolver@^1.2.3: version "1.2.3" @@ -7524,117 +7527,117 @@ jest-regex-util@^29.6.3: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.5.tgz#53be4c51d296c84a0e75608e7b77b6fe92dbac29" - integrity sha512-/xMvBR4MpwkrHW4ikZIWRttBBRZgWK4d6xt3xW1iRDSKt4tXzYkMkyPfBnSCgv96cpkrctfXs6gexeqMYqdEpw== +jest-resolve-dependencies@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz#3370e2c0b49cc560f6a7e8ec3a59dd99525e1a55" + integrity sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w== dependencies: jest-regex-util "30.0.1" - jest-snapshot "30.0.5" + jest-snapshot "30.2.0" -jest-resolve@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.5.tgz#f52f91600070b7073db465dc553eee5471ea8e06" - integrity sha512-d+DjBQ1tIhdz91B79mywH5yYu76bZuE96sSbxj8MkjWVx5WNdt1deEFRONVL4UkKLSrAbMkdhb24XN691yDRHg== +jest-resolve@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.2.0.tgz#2e2009cbd61e8f1f003355d5ec87225412cebcd7" + integrity sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A== dependencies: chalk "^4.1.2" graceful-fs "^4.2.11" - jest-haste-map "30.0.5" + jest-haste-map "30.2.0" jest-pnp-resolver "^1.2.3" - jest-util "30.0.5" - jest-validate "30.0.5" + jest-util "30.2.0" + jest-validate "30.2.0" slash "^3.0.0" unrs-resolver "^1.7.11" -jest-runner@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.5.tgz#5cbaaf85964246da4f65d697f186846f23cd9b5a" - integrity sha512-JcCOucZmgp+YuGgLAXHNy7ualBx4wYSgJVWrYMRBnb79j9PD0Jxh0EHvR5Cx/r0Ce+ZBC4hCdz2AzFFLl9hCiw== - dependencies: - "@jest/console" "30.0.5" - "@jest/environment" "30.0.5" - "@jest/test-result" "30.0.5" - "@jest/transform" "30.0.5" - "@jest/types" "30.0.5" +jest-runner@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.2.0.tgz#c62b4c3130afa661789705e13a07bdbcec26a114" + integrity sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ== + dependencies: + "@jest/console" "30.2.0" + "@jest/environment" "30.2.0" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" chalk "^4.1.2" emittery "^0.13.1" exit-x "^0.2.2" graceful-fs "^4.2.11" - jest-docblock "30.0.1" - jest-environment-node "30.0.5" - jest-haste-map "30.0.5" - jest-leak-detector "30.0.5" - jest-message-util "30.0.5" - jest-resolve "30.0.5" - jest-runtime "30.0.5" - jest-util "30.0.5" - jest-watcher "30.0.5" - jest-worker "30.0.5" + jest-docblock "30.2.0" + jest-environment-node "30.2.0" + jest-haste-map "30.2.0" + jest-leak-detector "30.2.0" + jest-message-util "30.2.0" + jest-resolve "30.2.0" + jest-runtime "30.2.0" + jest-util "30.2.0" + jest-watcher "30.2.0" + jest-worker "30.2.0" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.5.tgz#d6a7e22687264240d1786d6f7682ac6a2872e552" - integrity sha512-7oySNDkqpe4xpX5PPiJTe5vEa+Ak/NnNz2bGYZrA1ftG3RL3EFlHaUkA1Cjx+R8IhK0Vg43RML5mJedGTPNz3A== +jest-runtime@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.2.0.tgz#395ea792cde048db1b0cd1a92dc9cb9f1921bf8a" + integrity sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg== dependencies: - "@jest/environment" "30.0.5" - "@jest/fake-timers" "30.0.5" - "@jest/globals" "30.0.5" + "@jest/environment" "30.2.0" + "@jest/fake-timers" "30.2.0" + "@jest/globals" "30.2.0" "@jest/source-map" "30.0.1" - "@jest/test-result" "30.0.5" - "@jest/transform" "30.0.5" - "@jest/types" "30.0.5" + "@jest/test-result" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" chalk "^4.1.2" cjs-module-lexer "^2.1.0" collect-v8-coverage "^1.0.2" glob "^10.3.10" graceful-fs "^4.2.11" - jest-haste-map "30.0.5" - jest-message-util "30.0.5" - jest-mock "30.0.5" + jest-haste-map "30.2.0" + jest-message-util "30.2.0" + jest-mock "30.2.0" jest-regex-util "30.0.1" - jest-resolve "30.0.5" - jest-snapshot "30.0.5" - jest-util "30.0.5" + jest-resolve "30.2.0" + jest-snapshot "30.2.0" + jest-util "30.2.0" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.5.tgz#6600716eef2e6d8ea1dd788ae4385f3a2791b11f" - integrity sha512-T00dWU/Ek3LqTp4+DcW6PraVxjk28WY5Ua/s+3zUKSERZSNyxTqhDXCWKG5p2HAJ+crVQ3WJ2P9YVHpj1tkW+g== +jest-snapshot@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.2.0.tgz#266fbbb4b95fc4665ce6f32f1f38eeb39f4e26d0" + integrity sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA== dependencies: "@babel/core" "^7.27.4" "@babel/generator" "^7.27.5" "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/plugin-syntax-typescript" "^7.27.1" "@babel/types" "^7.27.3" - "@jest/expect-utils" "30.0.5" - "@jest/get-type" "30.0.1" - "@jest/snapshot-utils" "30.0.5" - "@jest/transform" "30.0.5" - "@jest/types" "30.0.5" - babel-preset-current-node-syntax "^1.1.0" + "@jest/expect-utils" "30.2.0" + "@jest/get-type" "30.1.0" + "@jest/snapshot-utils" "30.2.0" + "@jest/transform" "30.2.0" + "@jest/types" "30.2.0" + babel-preset-current-node-syntax "^1.2.0" chalk "^4.1.2" - expect "30.0.5" + expect "30.2.0" graceful-fs "^4.2.11" - jest-diff "30.0.5" - jest-matcher-utils "30.0.5" - jest-message-util "30.0.5" - jest-util "30.0.5" - pretty-format "30.0.5" + jest-diff "30.2.0" + jest-matcher-utils "30.2.0" + jest-message-util "30.2.0" + jest-util "30.2.0" + pretty-format "30.2.0" semver "^7.7.2" synckit "^0.11.8" -jest-util@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.5.tgz#035d380c660ad5f1748dff71c4105338e05f8669" - integrity sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g== +jest-util@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.2.0.tgz#5142adbcad6f4e53c2776c067a4db3c14f913705" + integrity sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA== dependencies: - "@jest/types" "30.0.5" + "@jest/types" "30.2.0" "@types/node" "*" chalk "^4.1.2" ci-info "^4.2.0" @@ -7653,40 +7656,40 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.5.tgz#d26fd218b8d566bff48fd98880b8ea94fd0d8456" - integrity sha512-ouTm6VFHaS2boyl+k4u+Qip4TSH7Uld5tyD8psQ8abGgt2uYYB8VwVfAHWHjHc0NWmGGbwO5h0sCPOGHHevefw== +jest-validate@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.2.0.tgz#273eaaed4c0963b934b5b31e96289edda6e0a2ef" + integrity sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw== dependencies: - "@jest/get-type" "30.0.1" - "@jest/types" "30.0.5" + "@jest/get-type" "30.1.0" + "@jest/types" "30.2.0" camelcase "^6.3.0" chalk "^4.1.2" leven "^3.1.0" - pretty-format "30.0.5" + pretty-format "30.2.0" -jest-watcher@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.5.tgz#90db6e3f582b88085bde58f7555cbdd3a1beb10d" - integrity sha512-z9slj/0vOwBDBjN3L4z4ZYaA+pG56d6p3kTUhFRYGvXbXMWhXmb/FIxREZCD06DYUwDKKnj2T80+Pb71CQ0KEg== +jest-watcher@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.2.0.tgz#f9c055de48e18c979e7756a3917e596e2d69b07b" + integrity sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg== dependencies: - "@jest/test-result" "30.0.5" - "@jest/types" "30.0.5" + "@jest/test-result" "30.2.0" + "@jest/types" "30.2.0" "@types/node" "*" ansi-escapes "^4.3.2" chalk "^4.1.2" emittery "^0.13.1" - jest-util "30.0.5" + jest-util "30.2.0" string-length "^4.0.2" -jest-worker@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.5.tgz#0b85cbab10610303e8d84e214f94d8f052c3cd04" - integrity sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ== +jest-worker@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.2.0.tgz#fd5c2a36ff6058ec8f74366ec89538cc99539d26" + integrity sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g== dependencies: "@types/node" "*" "@ungap/structured-clone" "^1.3.0" - jest-util "30.0.5" + jest-util "30.2.0" merge-stream "^2.0.0" supports-color "^8.1.1" @@ -7709,15 +7712,15 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.5.tgz#ee62729fb77829790d67c660d852350fbde315ce" - integrity sha512-y2mfcJywuTUkvLm2Lp1/pFX8kTgMO5yyQGq/Sk/n2mN7XWYp4JsCZ/QXW34M8YScgk8bPZlREH04f6blPnoHnQ== +jest@^30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-30.2.0.tgz#9f0a71e734af968f26952b5ae4b724af82681630" + integrity sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A== dependencies: - "@jest/core" "30.0.5" - "@jest/types" "30.0.5" + "@jest/core" "30.2.0" + "@jest/types" "30.2.0" import-local "^3.2.0" - jest-cli "30.0.5" + jest-cli "30.2.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -9507,10 +9510,10 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@30.0.5: - version "30.0.5" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.5.tgz#e001649d472800396c1209684483e18a4d250360" - integrity sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw== +pretty-format@30.2.0: + version "30.2.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.2.0.tgz#2d44fe6134529aed18506f6d11509d8a62775ebe" + integrity sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA== dependencies: "@jest/schemas" "30.0.5" ansi-styles "^5.2.0"