From 30e103130bba90821dde8ca01779425d01026ea4 Mon Sep 17 00:00:00 2001 From: Adam Obuchowicz Date: Thu, 13 Feb 2025 12:27:04 +0100 Subject: [PATCH] Filename input in Cloud File Browser for write component. (#12228) Fixes #12112 https://github.com/user-attachments/assets/4611fbf4-ed6a-433f-ae63-975909cbf235 --- CHANGELOG.md | 3 + app/common/package.json | 2 +- app/gui/package.json | 2 +- .../widgets/WidgetCloudBrowser.vue | 25 +- .../GraphEditor/widgets/WidgetSelection.vue | 26 +- .../components/widgets/FileBrowserWidget.vue | 137 ++++++---- .../providers/interactionHandler.ts | 14 +- app/ydoc-server/package.json | 2 +- app/ydoc-shared/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 237 ++++++++---------- 11 files changed, 246 insertions(+), 206 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67c4e05107fe..151a8aa40c86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ - [Added buttons for editing top-level markdown elements in the documentation panel][12217]. - [Removed `#` from default colum name][12222] +- [Cloud File Browser will display input for file name in components writing to + (new) files.][12228] [11889]: https://github.com/enso-org/enso/pull/11889 [11836]: https://github.com/enso-org/enso/pull/11836 @@ -36,6 +38,7 @@ [12208]: https://github.com/enso-org/enso/pull/12208 [12190]: https://github.com/enso-org/enso/pull/12190 [12222]: https://github.com/enso-org/enso/pull/12222 +[12228]: https://github.com/enso-org/enso/pull/12228 [12217]: https://github.com/enso-org/enso/pull/12217 #### Enso Standard Library diff --git a/app/common/package.json b/app/common/package.json index 73322f15bcf4..fdd5227dd804 100644 --- a/app/common/package.json +++ b/app/common/package.json @@ -31,6 +31,6 @@ "@types/node": "^20.11.21", "lib0": "^0.2.99", "react": "^18.3.1", - "vitest": "3.0.3" + "vitest": "3.0.5" } } diff --git a/app/gui/package.json b/app/gui/package.json index 52786d674a1c..366afba2a1da 100644 --- a/app/gui/package.json +++ b/app/gui/package.json @@ -209,7 +209,7 @@ "vite": "^6.0.9", "vite-plugin-vue-devtools": "7.6.8", "vite-plugin-wasm": "^3.4.1", - "vitest": "3.0.3", + "vitest": "3.0.5", "vue-react-wrapper": "^0.3.1", "vue-tsc": "^2.2.0", "yaml": "^2.7.0", diff --git a/app/gui/src/project-view/components/GraphEditor/widgets/WidgetCloudBrowser.vue b/app/gui/src/project-view/components/GraphEditor/widgets/WidgetCloudBrowser.vue index f9c31d25378a..7576fa2b9e1d 100644 --- a/app/gui/src/project-view/components/GraphEditor/widgets/WidgetCloudBrowser.vue +++ b/app/gui/src/project-view/components/GraphEditor/widgets/WidgetCloudBrowser.vue @@ -12,19 +12,26 @@ import { computed, h } from 'vue' const props = defineProps(widgetProps(widgetDefinition)) +const writeMode = computed( + () => props.input[ArgumentInfoKey]?.info?.reprType.includes(WRITABLE_FILE_TYPE) ?? false, +) const item: CustomDropdownItem = { label: 'Choose file from cloud...', onClick: ({ setActivity, close }) => { setActivity( - h(FileBrowserWidget, { - onPathSelected: (path: string) => { - props.onUpdate({ - portUpdate: { value: Ast.TextLiteral.new(path), origin: props.input.portId }, - directInteraction: true, - }) - close() - }, - }), + computed(() => + h(FileBrowserWidget, { + writeMode: writeMode.value, + onPathAccepted: (path: string) => { + props.onUpdate({ + portUpdate: { value: Ast.TextLiteral.new(path), origin: props.input.portId }, + directInteraction: true, + }) + close() + }, + }), + ), + true, ) }, } diff --git a/app/gui/src/project-view/components/GraphEditor/widgets/WidgetSelection.vue b/app/gui/src/project-view/components/GraphEditor/widgets/WidgetSelection.vue index 50b88ed39446..65c562ad0497 100644 --- a/app/gui/src/project-view/components/GraphEditor/widgets/WidgetSelection.vue +++ b/app/gui/src/project-view/components/GraphEditor/widgets/WidgetSelection.vue @@ -32,9 +32,10 @@ import { arrayEquals } from '@/util/data/array' import type { Opt } from '@/util/data/opt' import { ProjectPath } from '@/util/projectPath' import { qnLastSegment, tryQualifiedName } from '@/util/qualifiedName' +import { ToValue } from '@/util/reactivity' import { autoUpdate, offset, shift, size, useFloating } from '@floating-ui/vue' import type { Ref, RendererNode, VNode } from 'vue' -import { computed, proxyRefs, ref, shallowRef, watch } from 'vue' +import { computed, proxyRefs, ref, shallowRef, toValue, watch } from 'vue' const props = defineProps(widgetProps(widgetDefinition)) const suggestions = useSuggestionDbStore() @@ -51,7 +52,8 @@ const editedWidget = ref() const editedValue = ref | string | undefined>() const isHovered = ref(false) /** See @{link Actions.setActivity} */ -const activity = shallowRef() +const activity = shallowRef>() +const keepActivityAlive = ref(false) // How much wider a dropdown can be than a port it is attached to, when a long text is present. // Any text beyond that limit will receive an ellipsis and sliding animation on hover. @@ -336,8 +338,9 @@ function toggleDropdownWidget() { } const dropdownActions: Actions = { - setActivity: (newActivity) => { + setActivity: (newActivity, keepAlive = false) => { activity.value = newActivity + keepActivityAlive.value = keepAlive }, close: dropDownInteraction.end.bind(dropDownInteraction), } @@ -465,8 +468,11 @@ export interface Actions { * * For example, the {@link WidgetCloudBrowser} installs a custom entry that, when clicked, * opens a file browser where the dropdown was. + * @param keepAlive - when set, the `activity` instance will be kept between drop-down closing + * and opening. The activity component must not change it type (when being a ref) and provide + * `name` option explicitly. */ - setActivity: (activity: VNode) => void + setActivity: (activity: ToValue, keepAlive?: boolean) => void close: () => void } @@ -513,9 +519,15 @@ declare module '@/providers/widgetRegistry' { :style="activityStyles" > -
- -
+ + + + + +
diff --git a/app/gui/src/project-view/components/widgets/FileBrowserWidget.vue b/app/gui/src/project-view/components/widgets/FileBrowserWidget.vue index 0e1639714101..0341adba719c 100644 --- a/app/gui/src/project-view/components/widgets/FileBrowserWidget.vue +++ b/app/gui/src/project-view/components/widgets/FileBrowserWidget.vue @@ -1,3 +1,9 @@ + + @@ -286,4 +307,32 @@ Promise.all([currentUser.promise.value, currentOrganization.promise.value]).then .list-leave-active { position: absolute; } + +.fileNameBar { + width: 100%; + display: flex; + flex-direction: row; + padding: var(--border-width) 0 0 0; + gap: var(--border-width); +} + +.fileNameInput { + border-radius: var(--border-radius-inner); + height: calc(var(--border-radius-inner) * 2); + padding: 0 8px; + background-color: var(--color-frame-selected-bg); + flex-grow: 1; + appearance: textfield; + -moz-appearance: textfield; + user-select: all; +} + +.fileNameAcceptButton { + --color-menu-entry-hover-bg: color-mix(in oklab, var(--color-frame-selected-bg), black 10%); + border-radius: var(--border-radius-inner); + height: calc(var(--border-radius-inner) * 2); + margin: 0px; + padding: 4px 12px; + background-color: var(--color-frame-selected-bg); +} diff --git a/app/gui/src/project-view/providers/interactionHandler.ts b/app/gui/src/project-view/providers/interactionHandler.ts index 3f81127a1bf5..31cbb9a2d13d 100644 --- a/app/gui/src/project-view/providers/interactionHandler.ts +++ b/app/gui/src/project-view/providers/interactionHandler.ts @@ -68,7 +68,12 @@ export class InteractionHandler { return hasCurrent } - /** TODO: Add docs */ + /** + * Handle pointer event in capture. Calls `pointerdown` handler of currently active handler. + * + * Because usually the handlers check for clicks outside the active panel, even if event is handled, + * it is NOT stopped, and its default action is NOT prevented. + */ handlePointerEvent( event: PointerEvent, handlerName: Interaction[HandlerName] extends InteractionEventHandler | undefined ? HandlerName @@ -77,12 +82,7 @@ export class InteractionHandler { if (!this.currentInteraction.value) return false const handler = this.currentInteraction.value[handlerName] if (!handler) return false - const handled = handler.bind(this.currentInteraction.value)(event) !== false - if (handled) { - event.stopImmediatePropagation() - event.preventDefault() - } - return handled + return handler.bind(this.currentInteraction.value)(event) !== false } } diff --git a/app/ydoc-server/package.json b/app/ydoc-server/package.json index 73c8cd39748e..6ba62e1c15b1 100644 --- a/app/ydoc-server/package.json +++ b/app/ydoc-server/package.json @@ -38,6 +38,6 @@ "@types/ws": "^8.5.13", "typescript": "^5.7.2", "vite-plugin-wasm": "^3.4.1", - "vitest": "3.0.3" + "vitest": "3.0.5" } } diff --git a/app/ydoc-shared/package.json b/app/ydoc-shared/package.json index f01e52e88283..a160260589f9 100644 --- a/app/ydoc-shared/package.json +++ b/app/ydoc-shared/package.json @@ -51,6 +51,6 @@ "typescript": "^5.7.2", "vite-node": "3.0.3", "vite-plugin-wasm": "^3.4.1", - "vitest": "3.0.3" + "vitest": "3.0.5" } } diff --git a/package.json b/package.json index dd4997523ced..6a1beb26238b 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "prettier": "^3.4.2", "prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-tailwindcss": "^0.5.14", - "vitest": "3.0.3" + "vitest": "3.0.5" }, "dependencies": { "@bazel/bazelisk": "^1.22.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f5bd7683709a..abd9cd98a1e1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,8 +80,8 @@ importers: specifier: ^0.5.14 version: 0.5.14(@ianvs/prettier-plugin-sort-imports@4.3.0(@vue/compiler-sfc@3.5.13)(prettier@3.4.2))(prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.2)(vue-tsc@2.2.0(typescript@5.7.2)))(prettier@3.4.2) vitest: - specifier: 3.0.3 - version: 3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) + specifier: 3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) app/common: dependencies: @@ -104,8 +104,8 @@ importers: specifier: ^18.3.1 version: 18.3.1 vitest: - specifier: 3.0.3 - version: 3.0.3(@types/node@20.17.11)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) + specifier: 3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@20.17.11)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) app/gui: dependencies: @@ -156,7 +156,7 @@ importers: version: 6.36.1 '@fast-check/vitest': specifier: ^0.0.8 - version: 0.0.8(vitest@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0)) + version: 0.0.8(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0)) '@floating-ui/vue': specifier: ^1.1.5 version: 1.1.5(vue@3.5.13(typescript@5.7.2)) @@ -582,8 +582,8 @@ importers: specifier: ^3.4.1 version: 3.4.1(vite@6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0)) vitest: - specifier: 3.0.3 - version: 3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) + specifier: 3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) vue-react-wrapper: specifier: ^0.3.1 version: 0.3.1(vue@3.5.13(typescript@5.7.2)) @@ -752,7 +752,7 @@ importers: devDependencies: '@fast-check/vitest': specifier: ^0.0.8 - version: 0.0.8(vitest@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0)) + version: 0.0.8(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0)) '@types/debug': specifier: ^4.1.12 version: 4.1.12 @@ -769,8 +769,8 @@ importers: specifier: ^3.4.1 version: 3.4.1(vite@6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0)) vitest: - specifier: 3.0.3 - version: 3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) + specifier: 3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) app/ydoc-server-nodejs: dependencies: @@ -869,7 +869,7 @@ importers: devDependencies: '@fast-check/vitest': specifier: ^0.0.8 - version: 0.0.8(vitest@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0)) + version: 0.0.8(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0)) '@tsconfig/node20': specifier: ^20.1.4 version: 20.1.4 @@ -889,8 +889,8 @@ importers: specifier: ^3.4.1 version: 3.4.1(vite@6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0)) vitest: - specifier: 3.0.3 - version: 3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) + specifier: 3.0.5 + version: 3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) lib/js/runner: dependencies: @@ -3463,11 +3463,11 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@3.0.3': - resolution: {integrity: sha512-SbRCHU4qr91xguu+dH3RUdI5dC86zm8aZWydbp961aIR7G8OYNN6ZiayFuf9WAngRbFOfdrLHCGgXTj3GtoMRQ==} + '@vitest/expect@3.0.5': + resolution: {integrity: sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==} - '@vitest/mocker@3.0.3': - resolution: {integrity: sha512-XT2XBc4AN9UdaxJAeIlcSZ0ILi/GzmG5G8XSly4gaiqIvPV3HMTSIDZWJVX6QRJ0PX1m+W8Cy0K9ByXNb/bPIA==} + '@vitest/mocker@3.0.5': + resolution: {integrity: sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -3483,20 +3483,20 @@ packages: '@vitest/pretty-format@2.1.8': resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - '@vitest/pretty-format@3.0.3': - resolution: {integrity: sha512-gCrM9F7STYdsDoNjGgYXKPq4SkSxwwIU5nkaQvdUxiQ0EcNlez+PdKOVIsUJvh9P9IeIFmjn4IIREWblOBpP2Q==} + '@vitest/pretty-format@3.0.5': + resolution: {integrity: sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==} - '@vitest/runner@3.0.3': - resolution: {integrity: sha512-Rgi2kOAk5ZxWZlwPguRJFOBmWs6uvvyAAR9k3MvjRvYrG7xYvKChZcmnnpJCS98311CBDMqsW9MzzRFsj2gX3g==} + '@vitest/runner@3.0.5': + resolution: {integrity: sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==} - '@vitest/snapshot@3.0.3': - resolution: {integrity: sha512-kNRcHlI4txBGztuJfPEJ68VezlPAXLRT1u5UCx219TU3kOG2DplNxhWLwDf2h6emwmTPogzLnGVwP6epDaJN6Q==} + '@vitest/snapshot@3.0.5': + resolution: {integrity: sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@3.0.3': - resolution: {integrity: sha512-7/dgux8ZBbF7lEIKNnEqQlyRaER9nkAL9eTmdKJkDO3hS8p59ATGwKOCUDHcBLKr7h/oi/6hP+7djQk8049T2A==} + '@vitest/spy@3.0.5': + resolution: {integrity: sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==} '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -3504,8 +3504,8 @@ packages: '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - '@vitest/utils@3.0.3': - resolution: {integrity: sha512-f+s8CvyzPtMFY1eZKkIHGhPsQgYo5qCm6O8KZoim9qm1/jT64qBgGpO5tHscNH6BzRHM+edLNOP+3vO8+8pE/A==} + '@vitest/utils@3.0.5': + resolution: {integrity: sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==} '@volar/language-core@2.4.11': resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} @@ -7697,6 +7697,11 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true + vite-node@3.0.5: + resolution: {integrity: sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + vite-plugin-inspect@0.8.9: resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==} engines: {node: '>=14'} @@ -7763,60 +7768,23 @@ packages: yaml: optional: true - vite@6.0.7: - resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vitest@3.0.3: - resolution: {integrity: sha512-dWdwTFUW9rcnL0LyF2F+IfvNQWB0w9DERySCk8VMG75F8k25C7LsZoh6XfCjPvcR8Nb+Lqi9JKr6vnzH7HSrpQ==} + vitest@3.0.5: + resolution: {integrity: sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.3 - '@vitest/ui': 3.0.3 + '@vitest/browser': 3.0.5 + '@vitest/ui': 3.0.5 happy-dom: '*' jsdom: ^24.1.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/debug': + optional: true '@types/node': optional: true '@vitest/browser': @@ -9203,10 +9171,10 @@ snapshots: '@fal-works/esbuild-plugin-global-externals@2.1.2': {} - '@fast-check/vitest@0.0.8(vitest@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0))': + '@fast-check/vitest@0.0.8(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0))': dependencies: fast-check: 3.23.2 - vitest: 3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) + vitest: 3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0) '@floating-ui/core@1.6.8': dependencies: @@ -11581,28 +11549,28 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/expect@3.0.3': + '@vitest/expect@3.0.5': dependencies: - '@vitest/spy': 3.0.3 - '@vitest/utils': 3.0.3 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.3(vite@6.0.7(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0))': + '@vitest/mocker@3.0.5(vite@6.0.11(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0))': dependencies: - '@vitest/spy': 3.0.3 + '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.0.7(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0) - '@vitest/mocker@3.0.3(vite@6.0.7(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0))': + '@vitest/mocker@3.0.5(vite@6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0))': dependencies: - '@vitest/spy': 3.0.3 + '@vitest/spy': 3.0.5 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.0.7(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -11612,18 +11580,18 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@3.0.3': + '@vitest/pretty-format@3.0.5': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.3': + '@vitest/runner@3.0.5': dependencies: - '@vitest/utils': 3.0.3 + '@vitest/utils': 3.0.5 pathe: 2.0.2 - '@vitest/snapshot@3.0.3': + '@vitest/snapshot@3.0.5': dependencies: - '@vitest/pretty-format': 3.0.3 + '@vitest/pretty-format': 3.0.5 magic-string: 0.30.17 pathe: 2.0.2 @@ -11631,7 +11599,7 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@3.0.3': + '@vitest/spy@3.0.5': dependencies: tinyspy: 3.0.2 @@ -11648,9 +11616,9 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 - '@vitest/utils@3.0.3': + '@vitest/utils@3.0.5': dependencies: - '@vitest/pretty-format': 3.0.3 + '@vitest/pretty-format': 3.0.5 loupe: 3.1.2 tinyrainbow: 2.0.0 @@ -16491,7 +16459,28 @@ snapshots: - tsx - yaml - vite-node@3.0.3(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0): + vite-node@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.2 + vite: 6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-node@3.0.5(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 @@ -16512,7 +16501,7 @@ snapshots: - tsx - yaml - vite-node@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0): + vite-node@3.0.5(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 @@ -16606,37 +16595,15 @@ snapshots: jiti: 1.21.7 yaml: 2.7.0 - vite@6.0.7(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0): + vitest@3.0.5(@types/debug@4.1.12)(@types/node@20.17.11)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0): dependencies: - esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.29.1 - optionalDependencies: - '@types/node': 20.17.11 - fsevents: 2.3.3 - jiti: 1.21.7 - yaml: 2.7.0 - - vite@6.0.7(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0): - dependencies: - esbuild: 0.24.2 - postcss: 8.4.49 - rollup: 4.29.1 - optionalDependencies: - '@types/node': 22.10.4 - fsevents: 2.3.3 - jiti: 1.21.7 - yaml: 2.7.0 - - vitest@3.0.3(@types/node@20.17.11)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0): - dependencies: - '@vitest/expect': 3.0.3 - '@vitest/mocker': 3.0.3(vite@6.0.7(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.3 - '@vitest/runner': 3.0.3 - '@vitest/snapshot': 3.0.3 - '@vitest/spy': 3.0.3 - '@vitest/utils': 3.0.3 + '@vitest/expect': 3.0.5 + '@vitest/mocker': 3.0.5(vite@6.0.11(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.5 + '@vitest/runner': 3.0.5 + '@vitest/snapshot': 3.0.5 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 @@ -16647,10 +16614,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.0.7(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0) - vite-node: 3.0.3(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0) + vite-node: 3.0.5(@types/node@20.17.11)(jiti@1.21.7)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: + '@types/debug': 4.1.12 '@types/node': 20.17.11 jsdom: 24.1.3 transitivePeerDependencies: @@ -16667,15 +16635,15 @@ snapshots: - tsx - yaml - vitest@3.0.3(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0): + vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.4)(jiti@1.21.7)(jsdom@24.1.3)(yaml@2.7.0): dependencies: - '@vitest/expect': 3.0.3 - '@vitest/mocker': 3.0.3(vite@6.0.7(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.3 - '@vitest/runner': 3.0.3 - '@vitest/snapshot': 3.0.3 - '@vitest/spy': 3.0.3 - '@vitest/utils': 3.0.3 + '@vitest/expect': 3.0.5 + '@vitest/mocker': 3.0.5(vite@6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.5 + '@vitest/runner': 3.0.5 + '@vitest/snapshot': 3.0.5 + '@vitest/spy': 3.0.5 + '@vitest/utils': 3.0.5 chai: 5.1.2 debug: 4.4.0 expect-type: 1.1.0 @@ -16686,10 +16654,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.0.7(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) - vite-node: 3.0.3(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) + vite-node: 3.0.5(@types/node@22.10.4)(jiti@1.21.7)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: + '@types/debug': 4.1.12 '@types/node': 22.10.4 jsdom: 24.1.3 transitivePeerDependencies: