From 8e98c68de4b98c84cb8f77b748b228090c0258d9 Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Thu, 13 Nov 2025 21:12:31 +0100 Subject: [PATCH] got it to work --- extension-playwright/icons/icon-gray-128.png | Bin 0 -> 3899 bytes extension-playwright/icons/icon-gray-16.png | Bin 0 -> 530 bytes extension-playwright/icons/icon-gray-32.png | Bin 0 -> 913 bytes extension-playwright/icons/icon-gray-48.png | Bin 0 -> 1370 bytes extension-playwright/icons/icon-green-128.png | Bin 0 -> 6790 bytes extension-playwright/icons/icon-green-16.png | Bin 0 -> 776 bytes extension-playwright/icons/icon-green-32.png | Bin 0 -> 1466 bytes extension-playwright/icons/icon-green-48.png | Bin 0 -> 2290 bytes extension-playwright/manifest.json | 20 +- extension-playwright/package.json | 57 +- extension-playwright/src/background.ts | 50 +- extension-playwright/vite.config.mts | 23 +- extension-playwright/vite.sw.config.mts | 21 +- playwriter/scripts/extension-connect.ts | 31 + playwriter/scripts/extension-server.ts | 4 +- playwriter/src/extension/cdpRelay.ts | 6 +- .../src/extension/extensionContextFactory.ts | 2 + pnpm-lock.yaml | 630 +++++------------- 18 files changed, 328 insertions(+), 516 deletions(-) create mode 100644 extension-playwright/icons/icon-gray-128.png create mode 100644 extension-playwright/icons/icon-gray-16.png create mode 100644 extension-playwright/icons/icon-gray-32.png create mode 100644 extension-playwright/icons/icon-gray-48.png create mode 100644 extension-playwright/icons/icon-green-128.png create mode 100644 extension-playwright/icons/icon-green-16.png create mode 100644 extension-playwright/icons/icon-green-32.png create mode 100644 extension-playwright/icons/icon-green-48.png create mode 100644 playwriter/scripts/extension-connect.ts diff --git a/extension-playwright/icons/icon-gray-128.png b/extension-playwright/icons/icon-gray-128.png new file mode 100644 index 0000000000000000000000000000000000000000..b8918116b84cd7cab791e3fefc9e54d89e69485c GIT binary patch literal 3899 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 UBQezml<62eUHx3vIVCg!0P60AM*si- literal 0 HcmV?d00001 diff --git a/extension-playwright/icons/icon-gray-48.png b/extension-playwright/icons/icon-gray-48.png new file mode 100644 index 0000000000000000000000000000000000000000..6720fe5618d1be82b5db846e77b881fd0bd93bba GIT binary patch literal 1370 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 literal 0 HcmV?d00001 diff --git a/extension-playwright/icons/icon-green-16.png b/extension-playwright/icons/icon-green-16.png new file mode 100644 index 0000000000000000000000000000000000000000..9d412f5cdba2acd236f38cb5cdd8655c7aab4aa2 GIT binary patch literal 776 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=IjczVPIh72=EDU1u76Pml4btHJE2u8{;ogBcn50*D1_- znYYPGKl7zthRa;_g&V~ryJW=MrIeNQiI;c3jDDJ)nkB3G;? z)+nX3#IWAmg1<&cVWN^;kvdI zgY3j>q;(sul(Gy2>qJb}nWhFg_FAd67|Mx<3Ft01(hP7BN|fNu;TNbCl5CdMoo1#T z!XlfBzkm23z@{bm zQRM5VZJz}{i%y^LWdakIhqbl!Z^qIer%#+Zsm;JDGIh?>&^IAhubA4{m>fKo#md6Q z+Me}YZ1%9%TdE^*z=yk=&0&E*#tgJ8C(lA-MuWuV(s zOI#yLQW8s2t&)pUffR$0fsv`Mp`os!afqRXm5Gs+k(suEft7&)r}nox6b-rgDVb@N za193LAx4H)CWcmqmJkijPqlzak3j=&LrG?CYH>+oZUI~m$P!B{6ALS2Q-~gksWzar O&fw|l=d#Wzp$PyNJo=dc literal 0 HcmV?d00001 diff --git a/extension-playwright/icons/icon-green-32.png b/extension-playwright/icons/icon-green-32.png new file mode 100644 index 0000000000000000000000000000000000000000..ec35b3efa56c0dd19dd45bc06a7e83697fd4ef70 GIT binary patch literal 1466 zcmY+EcTkge7{}j&ByU0%nS_x*AbY(Dgba|Cgc$-7_Rug=0YwlZ3MhgI2#6v$Kr32A zRBWwMJA|IC_T&()#R7oZtpG4@Pt{HUz&Z#3o*4l^)dc{Q($9vL z1p$CVae^*MYj5BrXJHC)#0s)xKuXIIA#+j8eFAw}A}*gmsd8iW%JU-v@N0>ToviR- z^{_GShwSiy2*|C~ld+rW+r?q*Vba3fwvyZq>a&&86| zgl!@ZOdcL-M2Y&P;VJ4m83S#?@Dj9~Xf=V)!sQV8X9Xo8qGk!LB}~{P_r;f!=$n~X z9vxGKBh--GT0B(R;10F$yA_dNqy*AxeZ3=R8VD9IM4Dn48nnxR*dr$!N z$-F`oZfR`OQURfk>|X6fZla3yk^3}auRs|-gX*%3iZ?Os zNKORs;v>);PgE|JyoD<1l!**6WHA@7rD5{%q|L6_D!j`kqU$D4Mwt-G(HmAK2@_&` z)Is#X0Q(HSnx#(3a99c)kqW}nL6d+0OM_#oajkr61Do8zqjYj9ItdP*gFsfG8`z|F zE~S-2hJw&w76MU(+|D6yWs|7U&d4$px)QsMOWDRDZ)6hD@gSIqglB@V46u<+s`Moy zl0bMaV!bZ`Oaj-lNMJGuONJxMQLTJeFdGTaK)^CViU9*=A??db5xCT|NNarXPATvT zUxF+M3(EpQ69Q4}ytufyGqy=)|8Tp_iFyNov%EpwwwXOGlhCc16Ckza>Gb`vdlR$u z?hCesxrLpJOFCz43h$orKX2HqsqHrF z?26)9%fh_P`tD8$tm5*ciP20swaz}@C%Lhanrm@0OZ)6uI6h=vII2Pv+&pHG)BhE#ZFs zp%<>EUu5+5=KhWE@S<`Hsp-nOd*zR>9l#n+8@-8~S|W!hbf~`+yI0>ms7rS`ZdB^( zcu{rxRhkPedrtNj6ciOs>beKrct1u^RuBKtt6lXDjk^2g1IRQM;gi=HcYq@DmpO8w zCdKvKD~wqFtjKH{2a4Ml~-o6J3tCa zWkQKWDDg{@C{+GZl{A14K`IDB@ZZ<`4=66lFZ{IfBLK;hq!N|CL?u!F3#cFQ?8g$| qd{i(O7Mse=ImM+PnGYgLmA^ve_n!!N6YIL20iv~f&8cwXmVW^9LHGUu literal 0 HcmV?d00001 diff --git a/extension-playwright/icons/icon-green-48.png b/extension-playwright/icons/icon-green-48.png new file mode 100644 index 0000000000000000000000000000000000000000..eef19db55488eaaee9eb7e0645905e7602388a6a GIT binary patch literal 2290 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 D5b_#T literal 0 HcmV?d00001 diff --git a/extension-playwright/manifest.json b/extension-playwright/manifest.json index b962ba5..b6141d9 100644 --- a/extension-playwright/manifest.json +++ b/extension-playwright/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 3, - "name": "Playwright MCP Bridge", + "name": "Playwriter", "version": "0.0.47", - "description": "Click to attach debugger to current tab", + "description": "Playwriter MCP", "permissions": [ "debugger", "activeTab", @@ -16,12 +16,18 @@ "type": "module" }, "action": { - "default_title": "Click to attach debugger" + "default_title": "Click to attach debugger", + "default_icon": { + "16": "icons/icon-gray-16.png", + "32": "icons/icon-gray-32.png", + "48": "icons/icon-gray-48.png", + "128": "icons/icon-gray-128.png" + } }, "icons": { - "16": "icons/icon-16.png", - "32": "icons/icon-32.png", - "48": "icons/icon-48.png", - "128": "icons/icon-128.png" + "16": "icons/icon-gray-16.png", + "32": "icons/icon-gray-32.png", + "48": "icons/icon-gray-48.png", + "128": "icons/icon-gray-128.png" } } diff --git a/extension-playwright/package.json b/extension-playwright/package.json index 961e818..633930d 100644 --- a/extension-playwright/package.json +++ b/extension-playwright/package.json @@ -1,30 +1,31 @@ { - "name": "@playwright/mcp-extension", - "version": "0.0.46", - "description": "Playwright MCP Browser Extension", - "private": true, - "repository": { - "type": "git", - "url": "git+https://github.com/microsoft/playwright-mcp.git" - }, - "homepage": "https://playwright.dev", - "engines": { - "node": ">=18" - }, - "author": { - "name": "Microsoft Corporation" - }, - "license": "Apache-2.0", - "scripts": { - "build": "tsc --project . && vite build --config vite.sw.config.mts", - "watch": "tsc --watch --project . & vite build --watch --config vite.sw.config.mts", - "test": "playwright test", - "clean": "rm -rf dist" - }, - "devDependencies": { - "@types/chrome": "^0.0.315", - "typescript": "^5.8.2", - "vite": "^5.4.21", - "vite-plugin-static-copy": "^3.1.1" - } + "name": "@playwright/mcp-extension", + "version": "0.0.46", + "description": "Playwright MCP Browser Extension", + "private": true, + "repository": { + "type": "git", + "url": "git+https://github.com/microsoft/playwright-mcp.git" + }, + "homepage": "https://playwright.dev", + "engines": { + "node": ">=18" + }, + "author": { + "name": "Microsoft Corporation" + }, + "license": "Apache-2.0", + "scripts": { + "build": "tsc --project . && vite build --config vite.sw.config.mts", + "watch": "concurrently \"tsc --watch --project .\" \"vite build --watch --config vite.sw.config.mts\"", + "test": "playwright test", + "clean": "rm -rf dist" + }, + "devDependencies": { + "@types/chrome": "^0.0.315", + "typescript": "^5.8.2", + "concurrently": "^8.2.2", + "vite": "^5.4.21", + "vite-plugin-static-copy": "^3.1.1" + } } diff --git a/extension-playwright/src/background.ts b/extension-playwright/src/background.ts index bf5833e..3e5121b 100644 --- a/extension-playwright/src/background.ts +++ b/extension-playwright/src/background.ts @@ -17,7 +17,7 @@ import { RelayConnection, debugLog } from './relayConnection'; // Relay URL - fixed port for MCP bridge -const RELAY_URL = 'ws://localhost:9988'; +const RELAY_URL = 'ws://localhost:9988/extension/550e8400-e29b-41d4-a716-446655440000'; class SimplifiedExtension { private _connection: RelayConnection | undefined; @@ -83,12 +83,12 @@ class SimplifiedExtension { } catch (error: any) { debugLog(`Failed to connect: ${error.message}`); await this._updateIcon(tabId, 'disconnected'); - + // Show error notification chrome.action.setBadgeText({ tabId, text: '!' }); chrome.action.setBadgeBackgroundColor({ tabId, color: '#f44336' }); chrome.action.setTitle({ tabId, title: `Error: ${error.message}` }); - + // Clear error after 3 seconds setTimeout(() => { if (this._connectedTabId !== tabId) { @@ -101,14 +101,14 @@ class SimplifiedExtension { private async _disconnect(): Promise { debugLog('Disconnecting'); - + const tabId = this._connectedTabId; - + this._connection?.close('User disconnected'); this._connection = undefined; - + await this._setConnectedTabId(null); - + if (tabId) { await this._updateIcon(tabId, 'disconnected'); } @@ -133,19 +133,45 @@ class SimplifiedExtension { try { switch (state) { case 'connected': - await chrome.action.setBadgeText({ tabId, text: '✓' }); - await chrome.action.setBadgeBackgroundColor({ tabId, color: '#4CAF50' }); + await chrome.action.setIcon({ + tabId, + path: { + '16': '/icons/icon-green-16.png', + '32': '/icons/icon-green-32.png', + '48': '/icons/icon-green-48.png', + '128': '/icons/icon-green-128.png' + } + }); + await chrome.action.setBadgeText({ tabId, text: '' }); await chrome.action.setTitle({ tabId, title: 'Connected - Click to disconnect' }); break; - + case 'connecting': + await chrome.action.setIcon({ + tabId, + path: { + '16': '/icons/icon-gray-16.png', + '32': '/icons/icon-gray-32.png', + '48': '/icons/icon-gray-48.png', + '128': '/icons/icon-gray-128.png' + } + }); await chrome.action.setBadgeText({ tabId, text: '...' }); await chrome.action.setBadgeBackgroundColor({ tabId, color: '#FF9800' }); await chrome.action.setTitle({ tabId, title: 'Connecting...' }); break; - + case 'disconnected': default: + await chrome.action.setIcon({ + tabId, + path: { + '16': '/icons/icon-gray-16.png', + '32': '/icons/icon-gray-32.png', + '48': '/icons/icon-gray-48.png', + '128': '/icons/icon-gray-128.png' + } + }); await chrome.action.setBadgeText({ tabId, text: '' }); await chrome.action.setTitle({ tabId, title: 'Click to attach debugger' }); break; @@ -160,7 +186,7 @@ class SimplifiedExtension { if (this._connectedTabId !== tabId) { return; } - + debugLog(`Connected tab ${tabId} was closed`); this._connection?.close('Browser tab closed'); this._connection = undefined; diff --git a/extension-playwright/vite.config.mts b/extension-playwright/vite.config.mts index 89ec56c..399ed52 100644 --- a/extension-playwright/vite.config.mts +++ b/extension-playwright/vite.config.mts @@ -14,28 +14,17 @@ * limitations under the License. */ -import { resolve } from 'path'; +import { fileURLToPath } from 'url'; +import { dirname, resolve } from 'path'; import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; -import { viteStaticCopy } from 'vite-plugin-static-copy'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); // https://vitejs.dev/config/ export default defineConfig({ - plugins: [ - react(), - viteStaticCopy({ - targets: [ - { - src: '../../icons/*', - dest: 'icons' - }, - { - src: '../../manifest.json', - dest: '.' - } - ] - }) - ], + plugins: [react()], root: resolve(__dirname, 'src/ui'), build: { outDir: resolve(__dirname, 'dist/'), diff --git a/extension-playwright/vite.sw.config.mts b/extension-playwright/vite.sw.config.mts index a383e4b..8821f53 100644 --- a/extension-playwright/vite.sw.config.mts +++ b/extension-playwright/vite.sw.config.mts @@ -14,10 +14,29 @@ * limitations under the License. */ -import { resolve } from 'path'; +import { fileURLToPath } from 'url'; +import { dirname, resolve } from 'path'; import { defineConfig } from 'vite'; +import { viteStaticCopy } from 'vite-plugin-static-copy'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); export default defineConfig({ + plugins: [ + viteStaticCopy({ + targets: [ + { + src: resolve(__dirname, 'icons/*'), + dest: 'icons' + }, + { + src: resolve(__dirname, 'manifest.json'), + dest: '.' + } + ] + }) + ], build: { lib: { entry: resolve(__dirname, 'src/background.ts'), diff --git a/playwriter/scripts/extension-connect.ts b/playwriter/scripts/extension-connect.ts new file mode 100644 index 0000000..b948e22 --- /dev/null +++ b/playwriter/scripts/extension-connect.ts @@ -0,0 +1,31 @@ +import playwright from 'playwright-core'; + +async function main() { + const uuid = process.env.CDP_UUID || '550e8400-e29b-41d4-a716-446655440000'; + const cdpEndpoint = `ws://localhost:9988/cdp/${uuid}` + const browser = await playwright.chromium.connectOverCDP(cdpEndpoint); + + const contexts = browser.contexts(); + console.log(`Found ${contexts.length} browser context(s)`); + + for (const context of contexts) { + const pages = context.pages(); + console.log(`Context has ${pages.length} page(s):`); + + for (const page of pages) { + const url = page.url(); + console.log(`\nPage URL: ${url}`); + + const html = await page.content(); + const lines = html.split('\n').slice(0, 3); + console.log('First 3 lines of HTML:'); + lines.forEach((line, i) => { + console.log(` ${i + 1}: ${line}`); + }); + } + } + + await browser.close(); +} + +main() diff --git a/playwriter/scripts/extension-server.ts b/playwriter/scripts/extension-server.ts index 9072c42..361d84a 100644 --- a/playwriter/scripts/extension-server.ts +++ b/playwriter/scripts/extension-server.ts @@ -5,6 +5,6 @@ async function main() { const { browserContext, close } = await createExtensionContext( controller.signal, ) - - } + +main() diff --git a/playwriter/src/extension/cdpRelay.ts b/playwriter/src/extension/cdpRelay.ts index 24a685b..d38308a 100644 --- a/playwriter/src/extension/cdpRelay.ts +++ b/playwriter/src/extension/cdpRelay.ts @@ -75,7 +75,7 @@ export class CDPRelayServer { this._wsHost = httpAddressToString(server.address()).replace(/^http/, 'ws'); - const uuid = crypto.randomUUID(); + const uuid = process.env.CDP_UUID || crypto.randomUUID(); this._cdpPath = `/cdp/${uuid}`; this._extensionPath = `/extension/${uuid}`; @@ -227,7 +227,9 @@ export class CDPRelayServer { if (sessionId) break; // Simulate auto-attach behavior with real target info - const { targetInfo } = await this._extensionConnection!.send('attachToTab', { }); + if (!this._extensionConnection) + throw new Error('Extension not connected. Please ensure the Chrome extension is installed and connected to the extension endpoint before connecting Playwright.'); + const { targetInfo } = await this._extensionConnection.send('attachToTab', { }); this._connectedTabInfo = { targetInfo, sessionId: `pw-tab-${this._nextSessionId++}`, diff --git a/playwriter/src/extension/extensionContextFactory.ts b/playwriter/src/extension/extensionContextFactory.ts index 73265f9..3d5c287 100644 --- a/playwriter/src/extension/extensionContextFactory.ts +++ b/playwriter/src/extension/extensionContextFactory.ts @@ -40,6 +40,8 @@ export async function createExtensionContext(abortSignal: AbortSignal, ): Promis // TODO simply call fetch. it was creatign a full fledged browser just to fetch an url previously. CRAZY // await cdpRelayServer.ensureExtensionConnectionForMCPContext(clientInfo, abortSignal, toolName); + // await waitForExtension() + return {} const browser = await playwright.chromium.connectOverCDP(cdpRelayServer.cdpEndpoint()); return { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9e6674..3dd9aea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,21 +32,9 @@ importers: '@types/chrome': specifier: ^0.0.315 version: 0.0.315 - '@types/react': - specifier: ^18.2.66 - version: 18.3.26 - '@types/react-dom': - specifier: ^18.2.22 - version: 18.3.7(@types/react@18.3.26) - '@vitejs/plugin-react': - specifier: ^4.0.0 - version: 4.7.0(vite@5.4.21(@types/node@24.10.1)) - react: - specifier: ^18.2.0 - version: 18.3.1 - react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + concurrently: + specifier: ^8.2.2 + version: 8.2.2 typescript: specifier: ^5.8.2 version: 5.9.3 @@ -92,93 +80,10 @@ importers: packages: - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.28.5': - resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.28.5': - resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.28.4': resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - '@changesets/apply-release-plan@7.0.13': resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} @@ -537,22 +442,9 @@ packages: '@types/node': optional: true - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -583,9 +475,6 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rollup/rollup-android-arm-eabi@4.53.2': resolution: {integrity: sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==} cpu: [arm] @@ -699,18 +588,6 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -738,23 +615,6 @@ packages: '@types/node@24.10.1': resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} - peerDependencies: - '@types/react': ^18.0.0 - - '@types/react@18.3.26': - resolution: {integrity: sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==} - - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/expect@4.0.8': resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} @@ -812,6 +672,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -827,10 +691,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - baseline-browser-mapping@2.8.28: - resolution: {integrity: sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==} - hasBin: true - better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -847,11 +707,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -868,13 +723,14 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} - chai@6.2.1: resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} engines: {node: '>=18'} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} @@ -886,6 +742,22 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concurrently@8.2.2: + resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==} + engines: {node: ^14.13.0 || >=16.0.0} + hasBin: true + content-disposition@1.0.0: resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} engines: {node: '>= 0.6'} @@ -894,9 +766,6 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.2.2: resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} engines: {node: '>=6.6.0'} @@ -913,8 +782,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -944,8 +814,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.250: - resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} @@ -1088,9 +958,9 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} @@ -1118,6 +988,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -1161,6 +1035,10 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -1183,26 +1061,13 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -1216,12 +1081,8 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -1274,9 +1135,6 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - node-releases@2.0.27: - resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -1408,19 +1266,6 @@ packages: resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} engines: {node: '>= 0.10'} - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} - engines: {node: '>=0.10.0'} - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -1429,6 +1274,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -1456,19 +1305,15 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -1493,6 +1338,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shell-quote@1.8.3: + resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + engines: {node: '>= 0.4'} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -1528,6 +1377,9 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + spawn-command@0.0.2: + resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} + spawndamnit@3.0.1: resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} @@ -1548,6 +1400,10 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1556,6 +1412,14 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -1586,6 +1450,13 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsx@4.20.6: resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} @@ -1611,12 +1482,6 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - user-agents@1.1.669: resolution: {integrity: sha512-pbIzG+AOqCaIpySKJ4IAm1l0VyE4jMnK4y1thV8lm8PYxI+7X5uWcppOK7zY79TCKKTAnJH3/4gaVIZHsjrmJA==} @@ -1750,6 +1615,10 @@ packages: engines: {node: '>=8'} hasBin: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -1765,8 +1634,17 @@ packages: utf-8-validate: optional: true - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} zod-to-json-schema@3.24.6: resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} @@ -1781,120 +1659,8 @@ packages: snapshots: - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.28.5': {} - - '@babel/core@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.28.5': - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.28.5 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.27.1': {} - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - - '@babel/parser@7.28.5': - dependencies: - '@babel/types': 7.28.5 - - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.28.4': {} - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - - '@babel/traverse@7.28.5': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/types': 7.28.5 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 @@ -2193,25 +1959,8 @@ snapshots: optionalDependencies: '@types/node': 24.10.1 - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.28.4 @@ -2260,8 +2009,6 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rollup/rollup-android-arm-eabi@4.53.2': optional: true @@ -2330,27 +2077,6 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.28.5 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.28.5 - '@babel/types': 7.28.5 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.28.5 - '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -2379,29 +2105,6 @@ snapshots: dependencies: undici-types: 7.16.0 - '@types/prop-types@15.7.15': {} - - '@types/react-dom@18.3.7(@types/react@18.3.26)': - dependencies: - '@types/react': 18.3.26 - - '@types/react@18.3.26': - dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.1.3 - - '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@24.10.1))': - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 5.4.21(@types/node@24.10.1) - transitivePeerDependencies: - - supports-color - '@vitest/expect@4.0.8': dependencies: '@standard-schema/spec': 1.0.0 @@ -2472,6 +2175,10 @@ snapshots: ansi-regex@5.0.1: {} + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -2485,8 +2192,6 @@ snapshots: assertion-error@2.0.1: {} - baseline-browser-mapping@2.8.28: {} - better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -2511,14 +2216,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.0: - dependencies: - baseline-browser-mapping: 2.8.28 - caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.250 - node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) - bytes@3.1.2: {} cac@6.7.14: {} @@ -2533,10 +2230,13 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001754: {} - chai@6.2.1: {} + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chardet@2.1.1: {} chokidar@3.6.0: @@ -2553,14 +2253,36 @@ snapshots: ci-info@3.9.0: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concurrently@8.2.2: + dependencies: + chalk: 4.1.2 + date-fns: 2.30.0 + lodash: 4.17.21 + rxjs: 7.8.2 + shell-quote: 1.8.3 + spawn-command: 0.0.2 + supports-color: 8.1.1 + tree-kill: 1.2.2 + yargs: 17.7.2 + content-disposition@1.0.0: dependencies: safe-buffer: 5.2.1 content-type@1.0.5: {} - convert-source-map@2.0.0: {} - cookie-signature@1.2.2: {} cookie@0.7.2: {} @@ -2576,7 +2298,9 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - csstype@3.1.3: {} + date-fns@2.30.0: + dependencies: + '@babel/runtime': 7.28.4 debug@4.4.3: dependencies: @@ -2598,7 +2322,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.250: {} + emoji-regex@8.0.0: {} encodeurl@2.0.0: {} @@ -2795,7 +2519,7 @@ snapshots: function-bind@1.1.2: {} - gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} get-intrinsic@1.3.0: dependencies: @@ -2836,6 +2560,8 @@ snapshots: graceful-fs@4.2.11: {} + has-flag@4.0.0: {} + has-symbols@1.1.0: {} hasown@2.0.2: @@ -2872,6 +2598,8 @@ snapshots: is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -2888,19 +2616,13 @@ snapshots: isexe@2.0.0: {} - js-tokens@4.0.0: {} - js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - jsesc@3.1.0: {} - json-schema-traverse@1.0.0: {} - json5@2.2.3: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 @@ -2913,13 +2635,7 @@ snapshots: lodash.startcase@4.4.0: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 + lodash@4.17.21: {} magic-string@0.30.21: dependencies: @@ -2954,8 +2670,6 @@ snapshots: negotiator@1.0.0: {} - node-releases@2.0.27: {} - normalize-path@3.0.0: {} object-assign@4.1.1: {} @@ -3050,18 +2764,6 @@ snapshots: iconv-lite: 0.7.0 unpipe: 1.0.0 - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-refresh@0.17.0: {} - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -3073,6 +2775,8 @@ snapshots: dependencies: picomatch: 2.3.1 + require-directory@2.1.1: {} + require-from-string@2.0.2: {} resolve-from@5.0.0: {} @@ -3123,16 +2827,14 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - semver@6.3.1: {} - semver@7.7.3: {} send@1.2.0: @@ -3168,6 +2870,8 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote@1.8.3: {} + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -3210,6 +2914,8 @@ snapshots: source-map-js@1.2.1: {} + spawn-command@0.0.2: {} + spawndamnit@3.0.1: dependencies: cross-spawn: 7.0.6 @@ -3225,12 +2931,26 @@ snapshots: std-env@3.10.0: {} + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 strip-bom@3.0.0: {} + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + term-size@2.2.1: {} tinybench@2.9.0: {} @@ -3252,6 +2972,10 @@ snapshots: totalist@3.0.1: {} + tree-kill@1.2.2: {} + + tslib@2.8.1: {} + tsx@4.20.6: dependencies: esbuild: 0.25.12 @@ -3273,12 +2997,6 @@ snapshots: unpipe@1.0.0: {} - update-browserslist-db@1.1.4(browserslist@4.28.0): - dependencies: - browserslist: 4.28.0 - escalade: 3.2.0 - picocolors: 1.1.1 - user-agents@1.1.669: dependencies: lodash.clonedeep: 4.5.0 @@ -3384,11 +3102,29 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrappy@1.0.2: {} ws@8.18.3: {} - yallist@3.1.1: {} + y18n@5.0.8: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: