diff --git a/.changeset/plenty-hoops-brake.md b/.changeset/plenty-hoops-brake.md new file mode 100644 index 0000000000..15118dc118 --- /dev/null +++ b/.changeset/plenty-hoops-brake.md @@ -0,0 +1,5 @@ +--- +"@lynx-js/web-elements": patch +--- + +feat: x-input && x-textarea add attribute input-filter, which can filter input value. diff --git a/package.json b/package.json index a6d2595f7a..e4967e84c2 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@svitejs/changesets-changelog-github-compact": "^1.2.0", "@tsconfig/node20": "^20.1.5", "@tsconfig/strictest": "^2.0.5", - "@types/node": "^22.15.29", + "@types/node": "^22.15.30", "@vitest/coverage-v8": "^3.2.2", "@vitest/eslint-plugin": "^1.2.1", "@vitest/ui": "^3.2.2", diff --git a/packages/react/transform/turbo.json b/packages/react/transform/turbo.json index 842aa21d33..5fa2e30b88 100644 --- a/packages/react/transform/turbo.json +++ b/packages/react/transform/turbo.json @@ -12,7 +12,6 @@ }, "build": { "dependsOn": [ - "build:debug", "build:wasm" ] } diff --git a/packages/web-platform/web-elements/src/XInput/XInputEvents.ts b/packages/web-platform/web-elements/src/XInput/XInputEvents.ts index fc692b0627..04a677435b 100644 --- a/packages/web-platform/web-elements/src/XInput/XInputEvents.ts +++ b/packages/web-platform/web-elements/src/XInput/XInputEvents.ts @@ -15,7 +15,7 @@ import { registerEventEnableStatusChangeHandler } from '@lynx-js/web-elements-re export class XInputEvents implements InstanceType> { - static observedAttributes = ['send-composing-input']; + static observedAttributes = ['send-composing-input', 'input-filter']; #dom: HTMLElement; #sendComposingInput = false; @@ -29,8 +29,9 @@ export class XInputEvents '#form', ); + @registerAttributeHandler('input-filter', true) @registerEventEnableStatusChangeHandler('input') - #handleEnableInputEvent(status: boolean) { + #handleEnableInputEvent(status: boolean | string | null) { const input = this.#getInputElement(); if (status) { input.addEventListener( @@ -74,16 +75,20 @@ export class XInputEvents #teleportInput = (event: InputEvent) => { const input = this.#getInputElement(); - const value = input.value; + const inputFilter = this.#dom.getAttribute('input-filter'); + const filterValue = inputFilter + ? input.value.replace(new RegExp(inputFilter, 'g'), '') + : input.value; const isComposing = event.isComposing; + input.value = filterValue; if (isComposing && !this.#sendComposingInput) return; this.#dom.dispatchEvent( new CustomEvent('input', { ...commonComponentEventSetting, detail: { - value, + value: filterValue, /** @deprecated */ - textLength: value.length, + textLength: filterValue.length, /** @deprecated */ cursor: input.selectionStart, isComposing, @@ -96,16 +101,20 @@ export class XInputEvents #teleportCompositionendInput = () => { const input = this.#getInputElement(); - const value = input.value; + const inputFilter = this.#dom.getAttribute('input-filter'); + const filterValue = inputFilter + ? input.value.replace(new RegExp(inputFilter, 'g'), '') + : input.value; + input.value = filterValue; // if #sendComposingInput set true, #teleportInput will send detail if (!this.#sendComposingInput) { this.#dom.dispatchEvent( new CustomEvent('input', { ...commonComponentEventSetting, detail: { - value, + value: filterValue, /** @deprecated */ - textLength: value.length, + textLength: filterValue.length, /** @deprecated */ cursor: input.selectionStart, isComposing: false, diff --git a/packages/web-platform/web-elements/src/XTextarea/XTextareaEvents.ts b/packages/web-platform/web-elements/src/XTextarea/XTextareaEvents.ts index 6c65574d4c..b7ebbe80f1 100644 --- a/packages/web-platform/web-elements/src/XTextarea/XTextareaEvents.ts +++ b/packages/web-platform/web-elements/src/XTextarea/XTextareaEvents.ts @@ -15,7 +15,7 @@ import { registerEventEnableStatusChangeHandler } from '@lynx-js/web-elements-re export class XTextareaEvents implements InstanceType> { - static observedAttributes = ['send-composing-input']; + static observedAttributes = ['send-composing-input', 'input-filter']; #dom: HTMLElement; #sendComposingInput = false; @@ -29,8 +29,9 @@ export class XTextareaEvents '#form', ); + @registerAttributeHandler('input-filter', true) @registerEventEnableStatusChangeHandler('input') - #handleEnableConfirmEvent(status: boolean) { + #handleEnableConfirmEvent(status: string | boolean | null) { const textareaElement = this.#getTextareaElement(); if (status) { textareaElement.addEventListener( @@ -74,16 +75,20 @@ export class XTextareaEvents #teleportInput = (event: InputEvent) => { const input = this.#getTextareaElement(); - const value = input.value; + const inputFilter = this.#dom.getAttribute('input-filter'); + const filterValue = inputFilter + ? input.value.replace(new RegExp(inputFilter, 'g'), '') + : input.value; const isComposing = event.isComposing; + input.value = filterValue; if (isComposing && !this.#sendComposingInput) return; this.#dom.dispatchEvent( new CustomEvent('input', { ...commonComponentEventSetting, detail: { - value, + value: filterValue, /** @deprecated */ - textLength: value.length, + textLength: filterValue.length, /** @deprecated */ cursor: input.selectionStart, isComposing, @@ -96,16 +101,20 @@ export class XTextareaEvents #teleportCompositionendInput = () => { const input = this.#getTextareaElement(); - const value = input.value; + const inputFilter = this.#dom.getAttribute('input-filter'); + const filterValue = inputFilter + ? input.value.replace(new RegExp(inputFilter, 'g'), '') + : input.value; + input.value = filterValue; // if #sendComposingInput set true, #teleportInput will send detail if (!this.#sendComposingInput) { this.#dom.dispatchEvent( new CustomEvent('input', { ...commonComponentEventSetting, detail: { - value, + value: filterValue, /** @deprecated */ - textLength: value.length, + textLength: filterValue.length, /** @deprecated */ cursor: input.selectionStart, isComposing: false, diff --git a/packages/web-platform/web-tests/tests/react.spec.ts b/packages/web-platform/web-tests/tests/react.spec.ts index 1fcc40eb2b..3e1dfefa11 100644 --- a/packages/web-platform/web-tests/tests/react.spec.ts +++ b/packages/web-platform/web-tests/tests/react.spec.ts @@ -2261,6 +2261,18 @@ test.describe('reactlynx3 tests', () => { expect(result).toBe('2-5'); }, ); + test( + 'basic-element-x-input-input-filter', + async ({ page }, { title }) => { + await goto(page, title); + await page.locator('input').press('Enter'); + await wait(200); + await page.locator('input').fill('foobar!@#)'); + await wait(200); + const result = await page.locator('.result').first().innerText(); + expect(result).toBe('foobar'); + }, + ); }); test.describe('x-overlay-ng', () => { test('basic-element-x-overlay-ng-demo', async ({ page }, { title }) => { @@ -3578,6 +3590,19 @@ test.describe('reactlynx3 tests', () => { expect(result).toBe('2-5'); }, ); + + test( + 'basic-element-x-textarea-input-filter', + async ({ page }, { title }) => { + await goto(page, title); + await page.locator('textarea').press('Enter'); + await wait(200); + await page.locator('textarea').fill('foobar!@#)'); + await wait(200); + const result = await page.locator('.result').first().innerText(); + expect(result).toBe('foobar'); + }, + ); }); test.describe('x-audio-tt', () => { test('basic-element-x-audio-tt-play', async ({ page }, { title }) => { diff --git a/packages/web-platform/web-tests/tests/react/basic-element-x-input-input-filter/index.jsx b/packages/web-platform/web-tests/tests/react/basic-element-x-input-input-filter/index.jsx new file mode 100644 index 0000000000..d31ac2f960 --- /dev/null +++ b/packages/web-platform/web-tests/tests/react/basic-element-x-input-input-filter/index.jsx @@ -0,0 +1,37 @@ +// Copyright 2023 The Lynx Authors. All rights reserved. +// Licensed under the Apache License Version 2.0 that can be found in the +// LICENSE file in the root directory of this source tree. +import { root, useState } from '@lynx-js/react'; + +function App() { + const value = 'bindinput'; + const [result, setResult] = useState(); + + const onInput = ({ detail }) => { + const { value, cursor, textLength } = detail; + + if (value.length !== textLength) { + throw new Error( + `input length not match. expect ${textLength}, got ${value.length}`, + ); + } + + setResult(value); + }; + + return ( + + + + {result} + + + ); +} + +root.render(); diff --git a/packages/web-platform/web-tests/tests/react/basic-element-x-textarea-input-filter/index.jsx b/packages/web-platform/web-tests/tests/react/basic-element-x-textarea-input-filter/index.jsx new file mode 100644 index 0000000000..c3136b730e --- /dev/null +++ b/packages/web-platform/web-tests/tests/react/basic-element-x-textarea-input-filter/index.jsx @@ -0,0 +1,37 @@ +// Copyright 2023 The Lynx Authors. All rights reserved. +// Licensed under the Apache License Version 2.0 that can be found in the +// LICENSE file in the root directory of this source tree. +import { useState, root, useEffect } from '@lynx-js/react'; + +function App() { + const value = 'bindinput'; + const [result, setResult] = useState(); + + const onInput = ({ detail }) => { + const { value, cursor, textLength } = detail; + + if (value.length !== textLength) { + throw new Error( + `input length not match. expect ${textLength}, got ${value.length}`, + ); + } + + setResult(value); + }; + + return ( + + + + {result} + + + ); +} + +root.render(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8399ae5ba5..eea91ce0f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,16 +46,16 @@ importers: version: 2.29.4 '@codspeed/vitest-plugin': specifier: ^4.0.1 - version: 4.0.1(vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6))(vitest@3.2.2) + version: 4.0.1(vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6))(vitest@3.2.2) '@eslint/js': specifier: ^9.28.0 version: 9.28.0 '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rslib/core': specifier: ^0.9.2 - version: 0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.29))(typescript@5.8.3) + version: 0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.30))(typescript@5.8.3) '@rspack/core': specifier: 1.3.15 version: 1.3.15(@swc/helpers@0.5.17) @@ -69,8 +69,8 @@ importers: specifier: ^2.0.5 version: 2.0.5 '@types/node': - specifier: ^22.15.29 - version: 22.15.29 + specifier: ^22.15.30 + version: 22.15.30 '@vitest/coverage-v8': specifier: ^3.2.2 version: 3.2.2(vitest@3.2.2) @@ -133,7 +133,7 @@ importers: version: 8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) vitest: specifier: ^3.2.2 - version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) examples/react: dependencies: @@ -170,7 +170,7 @@ importers: version: 3.3.0 '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@types/react': specifier: ^18.3.23 version: 18.3.23 @@ -203,7 +203,7 @@ importers: version: 18.3.23 '@vitejs/plugin-react': specifier: 4.5.1 - version: 4.5.1(vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6)) + version: 4.5.1(vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6)) '@vitest/coverage-v8': specifier: ^3.2.2 version: 3.2.2(vitest@3.2.2) @@ -218,7 +218,7 @@ importers: version: 29.7.0 vitest: specifier: ^3.2.2 - version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) packages/react/testing-library: devDependencies: @@ -291,7 +291,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rollup/plugin-typescript': specifier: ^12.1.2 version: 12.1.2(patch_hash=926ba262ec682d27369f1a8648a0dfb657fb5f1b28539ca3628d292276c91c3d)(rollup@4.34.9)(tslib@2.8.1)(typescript@5.8.3) @@ -342,7 +342,7 @@ importers: version: 2.1.0(typescript@5.8.3)(typia@9.3.1(@samchon/openapi@4.3.2)(typescript@5.8.3)) vitest: specifier: ^3.2.2 - version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) webpack: specifier: ^5.99.9 version: 5.99.9 @@ -376,7 +376,7 @@ importers: version: link:../core '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rsbuild/core': specifier: catalog:rsbuild version: 1.3.21 @@ -428,7 +428,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rollup/plugin-typescript': specifier: ^12.1.2 version: 12.1.2(patch_hash=926ba262ec682d27369f1a8648a0dfb657fb5f1b28539ca3628d292276c91c3d)(rollup@4.34.9)(tslib@2.8.1)(typescript@5.8.3) @@ -480,7 +480,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rsbuild/core': specifier: catalog:rsbuild version: 1.3.21 @@ -544,7 +544,7 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@types/ws': specifier: ^8.18.1 version: 8.18.1 @@ -618,7 +618,7 @@ importers: version: 0.4.1 vitest: specifier: ^3.2.2 - version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) webpack: specifier: ^5.99.9 version: 5.99.9 @@ -772,7 +772,7 @@ importers: version: 5.8.3 vitest: specifier: ^3.2.2 - version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + version: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) packages/web-platform/web-style-transformer: {} @@ -877,7 +877,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rspack/core': specifier: 1.3.15 version: 1.3.15(@swc/helpers@0.5.17) @@ -911,7 +911,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rspack/core': specifier: 1.3.15 version: 1.3.15(@swc/helpers@0.5.17) @@ -941,7 +941,7 @@ importers: version: link:../test-tools '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rspack/core': specifier: 1.3.15 version: 1.3.15(@swc/helpers@0.5.17) @@ -978,7 +978,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rspack/core': specifier: 1.3.15 version: 1.3.15(@swc/helpers@0.5.17) @@ -1003,7 +1003,7 @@ importers: version: link:../test-tools '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) webpack: specifier: ^5.99.9 version: 5.99.9 @@ -1037,7 +1037,7 @@ importers: version: link:../../tools/vitest-setup '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@types/css-tree': specifier: ^2.3.10 version: 2.3.10 @@ -1085,7 +1085,7 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) webpack: specifier: ^5.99.9 version: 5.99.9 @@ -1094,7 +1094,7 @@ importers: devDependencies: '@microsoft/api-extractor': specifier: 'catalog:' - version: 7.52.8(@types/node@22.15.29) + version: 7.52.8(@types/node@22.15.30) '@rspack/core': specifier: 1.3.15 version: 1.3.15(@swc/helpers@0.5.17) @@ -1146,10 +1146,10 @@ importers: version: link:../packages/webpack/webpack-runtime-globals '@microsoft/api-documenter': specifier: ~7.23.38 - version: 7.23.38(@types/node@22.15.29) + version: 7.23.38(@types/node@22.15.30) '@microsoft/api-extractor-model': specifier: ^7.30.6 - version: 7.30.6(@types/node@22.15.29) + version: 7.30.6(@types/node@22.15.30) '@rsbuild/plugin-sass': specifier: 1.3.2 version: 1.3.2(@rsbuild/core@1.3.21) @@ -3032,8 +3032,8 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@22.15.29': - resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + '@types/node@22.15.30': + resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==} '@types/object.groupby@1.0.4': resolution: {integrity: sha512-n5gXvoz1nuDLLLMgTl82b5VCkSlqt2zfBkSWxoCmMS/j+hN6W7BuPlpOm68B/RRluy2bYo67KOtMQ28cySqeYw==} @@ -8709,11 +8709,11 @@ snapshots: transitivePeerDependencies: - debug - '@codspeed/vitest-plugin@4.0.1(vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6))(vitest@3.2.2)': + '@codspeed/vitest-plugin@4.0.1(vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6))(vitest@3.2.2)': dependencies: '@codspeed/core': 4.0.1 - vite: 5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6) - vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + vite: 5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6) + vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) transitivePeerDependencies: - debug @@ -9054,7 +9054,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -9189,43 +9189,43 @@ snapshots: '@types/react': 19.1.6 react: 19.1.0 - '@microsoft/api-documenter@7.23.38(@types/node@22.15.29)': + '@microsoft/api-documenter@7.23.38(@types/node@22.15.30)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@22.15.29) + '@microsoft/api-extractor-model': 7.28.13(@types/node@22.15.30) '@microsoft/tsdoc': 0.14.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.15.29) - '@rushstack/terminal': 0.10.0(@types/node@22.15.29) - '@rushstack/ts-command-line': 4.19.1(@types/node@22.15.29) + '@rushstack/node-core-library': 4.0.2(@types/node@22.15.30) + '@rushstack/terminal': 0.10.0(@types/node@22.15.30) + '@rushstack/ts-command-line': 4.19.1(@types/node@22.15.30) js-yaml: 3.13.1 resolve: 1.22.8 transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor-model@7.28.13(@types/node@22.15.29)': + '@microsoft/api-extractor-model@7.28.13(@types/node@22.15.30)': dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.15.29) + '@rushstack/node-core-library': 4.0.2(@types/node@22.15.30) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor-model@7.30.6(@types/node@22.15.29)': + '@microsoft/api-extractor-model@7.30.6(@types/node@22.15.30)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.29) + '@rushstack/node-core-library': 5.13.1(@types/node@22.15.30) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.8(@types/node@22.15.29)': + '@microsoft/api-extractor@7.52.8(@types/node@22.15.30)': dependencies: - '@microsoft/api-extractor-model': 7.30.6(@types/node@22.15.29) + '@microsoft/api-extractor-model': 7.30.6(@types/node@22.15.30) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.29) + '@rushstack/node-core-library': 5.13.1(@types/node@22.15.30) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.3(@types/node@22.15.29) - '@rushstack/ts-command-line': 5.0.1(@types/node@22.15.29) + '@rushstack/terminal': 0.15.3(@types/node@22.15.30) + '@rushstack/ts-command-line': 5.0.1(@types/node@22.15.30) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -9666,13 +9666,13 @@ snapshots: - supports-color - webpack - '@rslib/core@0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.29))(typescript@5.8.3)': + '@rslib/core@0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.30))(typescript@5.8.3)': dependencies: '@rsbuild/core': 1.4.0-beta.2 - rsbuild-plugin-dts: 0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.29))(@rsbuild/core@1.4.0-beta.2)(typescript@5.8.3) + rsbuild-plugin-dts: 0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.30))(@rsbuild/core@1.4.0-beta.2)(typescript@5.8.3) tinyglobby: 0.2.14 optionalDependencies: - '@microsoft/api-extractor': 7.52.8(@types/node@22.15.29) + '@microsoft/api-extractor': 7.52.8(@types/node@22.15.30) typescript: 5.8.3 '@rspack/binding-darwin-arm64@1.3.15': @@ -9961,7 +9961,7 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@rushstack/node-core-library@4.0.2(@types/node@22.15.29)': + '@rushstack/node-core-library@4.0.2(@types/node@22.15.30)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -9970,9 +9970,9 @@ snapshots: semver: 7.5.4 z-schema: 5.0.5 optionalDependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 - '@rushstack/node-core-library@5.13.1(@types/node@22.15.29)': + '@rushstack/node-core-library@5.13.1(@types/node@22.15.30)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -9983,39 +9983,39 @@ snapshots: resolve: 1.22.8 semver: 7.5.4 optionalDependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@22.15.29)': + '@rushstack/terminal@0.10.0(@types/node@22.15.30)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@22.15.29) + '@rushstack/node-core-library': 4.0.2(@types/node@22.15.30) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 - '@rushstack/terminal@0.15.3(@types/node@22.15.29)': + '@rushstack/terminal@0.15.3(@types/node@22.15.30)': dependencies: - '@rushstack/node-core-library': 5.13.1(@types/node@22.15.29) + '@rushstack/node-core-library': 5.13.1(@types/node@22.15.30) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 - '@rushstack/ts-command-line@4.19.1(@types/node@22.15.29)': + '@rushstack/ts-command-line@4.19.1(@types/node@22.15.30)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@22.15.29) + '@rushstack/terminal': 0.10.0(@types/node@22.15.30) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@rushstack/ts-command-line@5.0.1(@types/node@22.15.29)': + '@rushstack/ts-command-line@5.0.1(@types/node@22.15.30)': dependencies: - '@rushstack/terminal': 0.15.3(@types/node@22.15.29) + '@rushstack/terminal': 0.15.3(@types/node@22.15.30) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -10218,11 +10218,11 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/chai@5.2.2': dependencies: @@ -10231,17 +10231,17 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.5 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/cookie@0.4.1': {} '@types/cors@2.8.17': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/css-tree@2.3.10': {} @@ -10271,7 +10271,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -10286,11 +10286,11 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/hast@3.0.4': dependencies: @@ -10302,7 +10302,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/istanbul-lib-coverage@2.0.6': {} @@ -10316,7 +10316,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -10326,11 +10326,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/loader-utils@2.0.6': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/webpack': 4.41.40 '@types/mdast@3.0.15': @@ -10349,11 +10349,11 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/node@12.20.55': {} - '@types/node@22.15.29': + '@types/node@22.15.30': dependencies: undici-types: 6.21.0 @@ -10383,7 +10383,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/serve-index@1.9.4': dependencies: @@ -10392,12 +10392,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/source-list-map@0.1.6': {} @@ -10421,13 +10421,13 @@ snapshots: '@types/webpack-sources@3.2.3': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/source-list-map': 0.1.6 source-map: 0.7.4 '@types/webpack@4.41.40': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -10436,7 +10436,7 @@ snapshots: '@types/webpack@5.28.5': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 tapable: 2.2.2 webpack: 5.99.9 transitivePeerDependencies: @@ -10447,7 +10447,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@types/yargs-parser@21.0.3': {} @@ -10607,7 +10607,7 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.7.2': optional: true - '@vitejs/plugin-react@4.5.1(vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6))': + '@vitejs/plugin-react@4.5.1(vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6))': dependencies: '@babel/core': 7.26.10 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) @@ -10615,7 +10615,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.9 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6) + vite: 5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6) transitivePeerDependencies: - supports-color @@ -10634,7 +10634,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) transitivePeerDependencies: - supports-color @@ -10644,7 +10644,7 @@ snapshots: eslint: 9.28.0(jiti@2.4.2) optionalDependencies: typescript: 5.8.3 - vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) transitivePeerDependencies: - supports-color @@ -10656,13 +10656,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.2(vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6))': + '@vitest/mocker@3.2.2(vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6))': dependencies: '@vitest/spy': 3.2.2 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6) + vite: 5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6) '@vitest/pretty-format@3.2.2': dependencies: @@ -10692,7 +10692,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) + vitest: 3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6) '@vitest/utils@3.2.2': dependencies: @@ -11760,7 +11760,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.15.29 + '@types/node': 22.15.30 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -13226,7 +13226,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.29 + '@types/node': 22.15.30 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -13287,7 +13287,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.29 + '@types/node': 22.15.30 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -13295,13 +13295,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -15020,7 +15020,7 @@ snapshots: rrweb-cssom@0.8.0: {} - rsbuild-plugin-dts@0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.29))(@rsbuild/core@1.4.0-beta.2)(typescript@5.8.3): + rsbuild-plugin-dts@0.9.2(@microsoft/api-extractor@7.52.8(@types/node@22.15.30))(@rsbuild/core@1.4.0-beta.2)(typescript@5.8.3): dependencies: '@ast-grep/napi': 0.37.0 '@rsbuild/core': 1.4.0-beta.2 @@ -15029,7 +15029,7 @@ snapshots: tinyglobby: 0.2.14 tsconfig-paths: 4.2.0 optionalDependencies: - '@microsoft/api-extractor': 7.52.8(@types/node@22.15.29) + '@microsoft/api-extractor': 7.52.8(@types/node@22.15.30) typescript: 5.8.3 rsbuild-plugin-publint@0.3.2(@rsbuild/core@1.3.21): @@ -16113,13 +16113,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6): + vite-node@3.2.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6) + vite: 5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6) transitivePeerDependencies: - '@types/node' - less @@ -16131,22 +16131,22 @@ snapshots: - supports-color - terser - vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6): + vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6): dependencies: esbuild: 0.21.5 postcss: 8.5.4 rollup: 4.34.9 optionalDependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.30 fsevents: 2.3.3 sass-embedded: 1.89.0 terser: 5.31.6 - vitest@3.2.2(@types/debug@4.1.12)(@types/node@22.15.29)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6): + vitest@3.2.2(@types/debug@4.1.12)(@types/node@22.15.30)(@vitest/ui@3.2.2)(jsdom@26.1.0)(sass-embedded@1.89.0)(terser@5.31.6): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.2 - '@vitest/mocker': 3.2.2(vite@5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6)) + '@vitest/mocker': 3.2.2(vite@5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6)) '@vitest/pretty-format': 3.2.2 '@vitest/runner': 3.2.2 '@vitest/snapshot': 3.2.2 @@ -16164,12 +16164,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.0 tinyrainbow: 2.0.0 - vite: 5.4.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6) - vite-node: 3.2.2(@types/node@22.15.29)(sass-embedded@1.89.0)(terser@5.31.6) + vite: 5.4.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6) + vite-node: 3.2.2(@types/node@22.15.30)(sass-embedded@1.89.0)(terser@5.31.6) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.15.29 + '@types/node': 22.15.30 '@vitest/ui': 3.2.2(vitest@3.2.2) jsdom: 26.1.0 transitivePeerDependencies: