From 1179223bcc6f42a67ddd5763b0b99ede27c311df Mon Sep 17 00:00:00 2001 From: Aleksey Ko Date: Mon, 23 Dec 2024 21:22:03 +0300 Subject: [PATCH] feat: web-socket component --- .../Module.bsl" | 14 +- .../\320\256\320\242WebSocket/Template.bin" | Bin 0 -> 3487 bytes .../\320\256\320\242WebSocket.mdo" | 9 + .../src/Configuration/Configuration.mdo | 1 + ...template.sh => build-v8unpack-template.sh} | 0 tools/build-websocket-template.sh | 13 + tools/web-socket/.gitignore | 24 ++ tools/web-socket/index.html | 16 + tools/web-socket/package.json | 19 + tools/web-socket/src/V8Proxy.ts | 102 +++++ tools/web-socket/src/main.ts | 36 ++ tools/web-socket/src/vite-env.d.ts | 1 + tools/web-socket/tsconfig.json | 23 ++ tools/web-socket/vite.config.ts | 6 + tools/web-socket/yarn.lock | 377 ++++++++++++++++++ 15 files changed, 634 insertions(+), 7 deletions(-) create mode 100644 "exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/Template.bin" create mode 100644 "exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/\320\256\320\242WebSocket.mdo" rename tools/{build-template.sh => build-v8unpack-template.sh} (100%) create mode 100755 tools/build-websocket-template.sh create mode 100644 tools/web-socket/.gitignore create mode 100644 tools/web-socket/index.html create mode 100644 tools/web-socket/package.json create mode 100644 tools/web-socket/src/V8Proxy.ts create mode 100644 tools/web-socket/src/main.ts create mode 100644 tools/web-socket/src/vite-env.d.ts create mode 100644 tools/web-socket/tsconfig.json create mode 100644 tools/web-socket/vite.config.ts create mode 100644 tools/web-socket/yarn.lock diff --git "a/exts/smoke/src/CommonModules/\320\224\320\242\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274/Module.bsl" "b/exts/smoke/src/CommonModules/\320\224\320\242\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274/Module.bsl" index f7cd6065a..4b37a2b50 100644 --- "a/exts/smoke/src/CommonModules/\320\224\320\242\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274/Module.bsl" +++ "b/exts/smoke/src/CommonModules/\320\224\320\242\320\236\321\202\320\272\321\200\321\213\321\202\320\270\320\265\320\244\320\276\321\200\320\274/Module.bsl" @@ -303,13 +303,13 @@ Если Форма.Открыта() Тогда Попытка - Если ЭтоУправляемаяФорма Тогда - Форма.ОбновитьОтображениеДанных(); - Иначе - Форма.Обновить(); - КонецЕсли; - Исключение - ВызватьИсключение; + Если ЭтоУправляемаяФорма Тогда + Форма.ОбновитьОтображениеДанных(); + Иначе + Форма.Обновить(); + КонецЕсли; + Исключение + ВызватьИсключение; КонецПопытки; Форма.Модифицированность = Ложь; diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/Template.bin" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/Template.bin" new file mode 100644 index 0000000000000000000000000000000000000000..5b531dc32ee07dda41fb4b5f1b29bb93df5534d9 GIT binary patch literal 3487 zcmV;Q4Pf$6O9KQH00ICA0A{L}S?U008}$qT0GKQQ015yc0BLSyWq2-VbZu-^R0#kB zps8tRps8tRb$AN^0R+OYXdeWDR%Rd78eMPOIP$%}!VwlJwP98F?rnPw5>*#yd>q+aP{ABhNQk_$1Qdr_QjUS`QmV9I5XnuQIv&hv*M$LS|(>t zPVsM)1nHbPJax{Vzz7ebvnQj`>5{8p6fOcGxnj<*pMH7v(iuIkr_x}_nX``h!zvTX z8HHJ@cnY8oaikV3;_Eo%&-4o&#c8bKAbBRkAmQwVH!exZP{b=WLYbJe%%VKuKuTm% zW+I-)>Df9Eqc7}g`h|zei})-~`3I4$xKJA(=iV@qQBIZ1&N#3cWv{;Ifh|w-B^SXo z;gh2=1?gt-Jg?p#M6Al^b&%wIq6&AC-SAtcG~Kr~-8b-r0%o%jKVpvDET>uGyy7R0 zGeHQS%1aR!P8{;Bdp!2`w56OM1hN#gY0aXrD4cd=A{JR|)0n0qo` zp&DiLnOKFa05}UG$8`l)xk&w4CWzr9M<7(i>W`d@%{5OzRhf95B;+Y_y8(38A$9xI zbyFf;Kjjaj_qhsC`m3qrV$B7S>}*@}5XeKiAgS>5J~8Hmi#UmJ0ghV(CI~3JAc}Z& znMGW>iKl}3B^nCgyt}ykpL2Yi;M(!MEz$9DN)oqlz062K%2m;A#SAw~=2Im&?pxvd zrQSyh)?!sJ*tYPEqDIn-!6@gj*PG*G5Wjk3jTx6p5NXDR;NnA;#G!$053w!`Vre_Q z(sqgq$|ZjWyB&ehVC&L(CA`KfbK*2i@`yW=9%hhc>1LVbeVl9=D`(Ofl%UaP#y=b? zib@N(qg&V~>G4%*EBMTg#(t?B)RaHtDqH~A0@g%@TNEyF{V)ln9DOxv6gk=u;hLUW z#L~M1f+FUUjp@;4zMOJUr@TNVa)kT#jh~KPwGi3E2#xAo2*7vV1mS%)n~jz^aG&x~ zFj{32V!;}nRpUCYujx+>B;&=LgP?{PIF#MWmJAvs%wadcrP?5tOp)@hY6teo32lK2 z4j~R;JIgEzqmkDwjaV>l{8_S_+X4(871bK|R=HfjDA3?R56eqBqj-l>1%+Y`59aNt}IKwgf=zy`t z-@cI;{M;?A_PTAgRMFJkqL7jbn$U;_bU{P9rZaj+r*uv?bVZlO@b0vT(VNY$5O~

Ag|hJ~XS_ z3h^!%3FG#8B{G$T8AKFiN3s>}rexb`K7(L4f#8(pN%Cr)#nEUyNj)=8^#)D0%i!xr z<1G_7GkU-p%4KHw+cybMX08O0UQL07DA>vVzqDK;Ae47rnZayK&qx6y< zy`+i~G=UR{r(DR%7PozJ<9Qwl7>W91E6|#B)FT~f>v4|^#PM-(R6zujo7-Ee_uQ}v z8Ce{}X3=A_Ft$_k32Q!~=A#YL@R>2PK8Vk{$7gK}yXG^i`OGvQYmA1|l##oGINkL) z-IZot^P1MYrka$owEq^B$+UHIRzWrslJ;d`ffGyq1it4&t@y@mkf{U z*jQmhf(ER;c^9x&XT$3?TGwOuBX^;Vh{j3xW0sz*lZQsk?_xFQG%y@7$|}_)`7QAF ztkHRYcY1r!2eFAy5N)m@A?F8Rcr|omr+D-la>?`%mR=h}6M@8urxNvc2!R^fND!xi z*nEOA;UMl6bRpZwWj^!>8bidiPQRL42RXtaiUUX74R-b6{PNZAY0G z8>61d5iuPE0Wm=-1rE}XC)eSEV=)xfc7zTB*&H28QO3K2fLAlXyj14_?`-%f^P;wI zRKW>qUz4?N%b|&)7HX0fE@XzwY|RHr+G>;ub|xx{pb7(0&4BDXG(8NR7P=B2{DH$c(th$FdtXS|kgX?s0lq zGz%8J8u<__QxS)O+;&_|>>=$fkovTSopPbaptzVDjvf{q;g4{-~1h zDcg?&5z0{26QANG&vM1)Nj43VPiA|S9VG-mBM>y&QhdzW9?8+R4O-gHOKLr?ZrM|O z-|ezCx-Nv_3C70YjWCbKk@3E=@+877SM-X4X`477dPJH#=9+|A%Pn8EUNON zThIPo6xwUSb<{dgsQ>lK?bZ9JV*6R)Z==~V7?eu|fnRa+ie-eSH|{%MN`}Xt(K;x+R-TZptn_Supc0UUlW-URutzxjbK3eHO-3jyX0@?q8blz$D0RyrpQ5V!aun{E03USC~$E4;YWhMGc}4p62Rd@=sV zzo1MC6pS^YXv&oRS`Ib&`#>$ckjDv0pTnHcmDy_{f{ngLVJpjojs4_Q`X?ueAs?~i zXHElyzKl~6op1<~bkV>Mo<%i;mc;$}1^>5;T5+%`h1ahl$G0t-@=}!P)HqU8awY(49~*4~XPRYD8>M<0pIeiu zzEGm)>|=8_(}#hc#hq@G#al3D4)@p2HMIft(lQ2HkhZ`EF}#RR^Evtbx0f*ab>o@) zFzvUWws<3K^wTyg;3vf&t12+1-(4TIC+cfnko4F)UT-!R5pjNd`I%2&uU5J?|H$PE zIP+gJ@eqheUwW~3rdZ?dm_RD86>yp6iW6u3GSB14L5EcKPExE6}h zdPaf+z?$Q-gr^N2mO>@bdLnkng__qF{r+&x$u~xR=;Hs#xm3-yM_6;W7RnJ4uM|2o zb7_BGD+2SE{uElFgWeSx@tO92V}bDuQY)O%q7z8I3yR&GaznIB)V}cJyQy|aoM9`$ z1~RHDF$%50^ZEkY1zw>!*KYkD9=%4Eu0w_$vGoEDeI+mWKV8?e`7w4b?uog5qetrm z(N5JjX!N{EknNngrK87925iU8Z5=&crntmhiiFAP;*Rp7Km`D0^GbTY^TSD7%wa&2 zl_O+n&`CD8GDb%`(aPkSzyZj+$d#;mat8&I*AL>`YfBZjZV5WDiU{MJTi?OE)EjB$ zv&Q(nwzTah>y3`>>N_Vm3`H44+Xt^~qh0uR0LidR|Ma=JCwunf^trj9`{Z<*MH_vE zHj3AyIATt)S~+K@&*4=MgB>d13o}pmy5rN4RGWk|2b--)u$hdWrdi6LA}vGX5po@8 zID{TNY3Xq}coF&kP)h*<9s?8r0ssgAW~!H2>HuaN^$Y+2m@EJQ3IG@Y000000RR91 zq=5hc003!jWMz0RXmo9CRa6B41E8sCXLWcB009KTuV^0xfmUW8P)h{{000000RRC2 NPyhe`ISl{+000f|yuAPb literal 0 HcmV?d00001 diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/\320\256\320\242WebSocket.mdo" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/\320\256\320\242WebSocket.mdo" new file mode 100644 index 000000000..b138cf36f --- /dev/null +++ "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242WebSocket/\320\256\320\242WebSocket.mdo" @@ -0,0 +1,9 @@ + + + ЮТWebSocket + + ru + Web socket + + BinaryData + diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo index ccdaa039f..883be4019 100644 --- a/exts/yaxunit/src/Configuration/Configuration.mdo +++ b/exts/yaxunit/src/Configuration/Configuration.mdo @@ -56,6 +56,7 @@ CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru CommonTemplate.ЮТRegEx1CAddin CommonTemplate.ЮТV8UnpackWS + CommonTemplate.ЮТWebSocket CommonTemplate.ЮТYaxUnitAddIn CommonTemplate.ЮТИнформацияОбОшибке CommonTemplate.ЮТОписаниеМетаданных diff --git a/tools/build-template.sh b/tools/build-v8unpack-template.sh similarity index 100% rename from tools/build-template.sh rename to tools/build-v8unpack-template.sh diff --git a/tools/build-websocket-template.sh b/tools/build-websocket-template.sh new file mode 100755 index 000000000..70371ed44 --- /dev/null +++ b/tools/build-websocket-template.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +CURRENT_PATH=$(pwd) +SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" + +cd ${SCRIPTPATH}/web-socket + +yarn install && yarn build +cd dist + +zip -r -9 ../web-socket.zip ./ +mv ../web-socket.zip ../../../exts/yaxunit/src/CommonTemplates/ЮТWebSocket/Template.bin +cd ${CURRENT_PATH} \ No newline at end of file diff --git a/tools/web-socket/.gitignore b/tools/web-socket/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/tools/web-socket/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/tools/web-socket/index.html b/tools/web-socket/index.html new file mode 100644 index 000000000..26d87260e --- /dev/null +++ b/tools/web-socket/index.html @@ -0,0 +1,16 @@ + + + + + + + + + +

+ + + + + + \ No newline at end of file diff --git a/tools/web-socket/package.json b/tools/web-socket/package.json new file mode 100644 index 000000000..ef711a842 --- /dev/null +++ b/tools/web-socket/package.json @@ -0,0 +1,19 @@ +{ + "name": "web-socket", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "typescript": "~5.6.2", + "vite": "^6.0.3", + "vite-plugin-singlefile": "^2.1.0" + }, + "dependencies": { + "websocket-ts": "^2.1.5" + } +} diff --git a/tools/web-socket/src/V8Proxy.ts b/tools/web-socket/src/V8Proxy.ts new file mode 100644 index 000000000..b22d0fa84 --- /dev/null +++ b/tools/web-socket/src/V8Proxy.ts @@ -0,0 +1,102 @@ +class FetchResponse { + _value: any + + constructor(value: any) { + this._value = value + } + + /** + * text + */ + public text() { + return String(this._value) + } + + /** + * name + */ + public json() { + return JSON.parse(this._value) + } + + /** + * blob + */ + public blob() { + let sliceSize = 1024; + let byteCharacters = atob(this._value); + let bytesLength = byteCharacters.length; + let slicesCount = Math.ceil(bytesLength / sliceSize); + let byteArrays = new Array(slicesCount); + + for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) { + let begin = sliceIndex * sliceSize; + let end = Math.min(begin + sliceSize, bytesLength); + + let bytes = new Array(end - begin); + for (let offset = begin, i = 0; offset < end; ++i, ++offset) { + bytes[i] = (byteCharacters[offset] as string).charCodeAt(0); + } + byteArrays[sliceIndex] = new Uint8Array(bytes); + } + return new Blob(byteArrays); + } + } + + const V8Proxy = { + + fetch: (eventName: string, value: any = undefined) => { + + let v8uuid = String(Math.floor(Math.random() * 1000000)) + let v8type = 'undefined' + + switch (typeof (value)) { + case 'string': + v8type = 'string' + break + case 'boolean': + v8type = 'bool' + break + case 'number': + v8type = 'number' + break + case 'object': + v8type = 'json' + break + case 'bigint': + v8type = 'blob' + break + } + + return new Promise((resolve) => { + console.debug(`V8Proxy.fetch(V8Proxy.fetch(${v8uuid}): ${eventName} ${v8type} ${String(value)}`) + + let res = document.getElementById('V8WebAppEventResponseForwarder') as HTMLButtonElement + const handle = function () { + if (res.getAttribute('v8uuid') === v8uuid) { + res.removeEventListener('click', handle) + + console.debug(`V8Proxy.fetch(${v8uuid} resolve: ${res.value}`) + + resolve(new FetchResponse(res.value)) + } + } + res.addEventListener('click', handle) + + let req = document.getElementById('V8WebAppEventRequestForwarder') as HTMLButtonElement + req.setAttribute('v8eventname', eventName) + req.setAttribute('v8uuid', v8uuid) + req.setAttribute('v8type', v8type) + req.value = JSON.stringify(value) + req.click(); + }) + }, + sendResponse: (v8uuid: string, value: string) => { + let res = document.getElementById('V8WebAppEventResponseForwarder') as HTMLButtonElement + res.setAttribute('v8uuid', v8uuid) + res.value = value; + res.click(); + } + } + + export default V8Proxy \ No newline at end of file diff --git a/tools/web-socket/src/main.ts b/tools/web-socket/src/main.ts new file mode 100644 index 000000000..56618d0de --- /dev/null +++ b/tools/web-socket/src/main.ts @@ -0,0 +1,36 @@ +import { + WebsocketBuilder, ArrayQueue, + ConstantBackoff, WebsocketEvent, Websocket +} from 'websocket-ts' +import V8Proxy from './V8Proxy' + +let ws: Websocket; + +function connect(endPoint: string) { + ws = new WebsocketBuilder(endPoint) + .withBuffer(new ArrayQueue()) // buffer messages when disconnected + .withBackoff(new ConstantBackoff(1000)) // retry every 1s + .onOpen(() => fire('open')) + .onReconnect(() => fire('reconnect')) + .onClose(() => fire('close')) + .onError(() => fire('error')) + .onMessage((_, ev) => fire('message', ev.data)) + .build(); + // Add event listeners + ws.addEventListener(WebsocketEvent.open, () => fire("open")); + ws.addEventListener(WebsocketEvent.close, () => console.log("closed!")); + ws.addEventListener(WebsocketEvent.message, (...args) => console.log('message', ...args)); + ws.addEventListener(WebsocketEvent.error, (...args) => console.log('error', ...args)); + + ws.send('pending') +} + +function send (data: any){ + ws.send(data) +} +function fire(eventName: string, data?: any) { + V8Proxy.fetch('socket.' + eventName, data) +} + +(window as any).connect = connect; +(window as any).send = send; diff --git a/tools/web-socket/src/vite-env.d.ts b/tools/web-socket/src/vite-env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/tools/web-socket/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tools/web-socket/tsconfig.json b/tools/web-socket/tsconfig.json new file mode 100644 index 000000000..33acc8ec7 --- /dev/null +++ b/tools/web-socket/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2015", + "useDefineForClassFields": true, + "module": "ESNext", + // "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tools/web-socket/vite.config.ts b/tools/web-socket/vite.config.ts new file mode 100644 index 000000000..aebe20622 --- /dev/null +++ b/tools/web-socket/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "vite" +import { viteSingleFile } from "vite-plugin-singlefile" + +export default defineConfig({ + plugins: [viteSingleFile()], +}) \ No newline at end of file diff --git a/tools/web-socket/yarn.lock b/tools/web-socket/yarn.lock new file mode 100644 index 000000000..dc89a4adf --- /dev/null +++ b/tools/web-socket/yarn.lock @@ -0,0 +1,377 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@esbuild/aix-ppc64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c" + integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw== + +"@esbuild/android-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0" + integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w== + +"@esbuild/android-arm@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810" + integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew== + +"@esbuild/android-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705" + integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ== + +"@esbuild/darwin-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd" + integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw== + +"@esbuild/darwin-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107" + integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA== + +"@esbuild/freebsd-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7" + integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA== + +"@esbuild/freebsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93" + integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ== + +"@esbuild/linux-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75" + integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g== + +"@esbuild/linux-arm@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d" + integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw== + +"@esbuild/linux-ia32@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb" + integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA== + +"@esbuild/linux-loong64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c" + integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g== + +"@esbuild/linux-mips64el@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3" + integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA== + +"@esbuild/linux-ppc64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e" + integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ== + +"@esbuild/linux-riscv64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25" + integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw== + +"@esbuild/linux-s390x@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319" + integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g== + +"@esbuild/linux-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef" + integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA== + +"@esbuild/netbsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c" + integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg== + +"@esbuild/openbsd-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2" + integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg== + +"@esbuild/openbsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf" + integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q== + +"@esbuild/sunos-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4" + integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA== + +"@esbuild/win32-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b" + integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA== + +"@esbuild/win32-ia32@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103" + integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw== + +"@esbuild/win32-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz#168ab1c7e1c318b922637fad8f339d48b01e1244" + integrity sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA== + +"@rollup/rollup-android-arm-eabi@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz#9bd38df6a29afb7f0336d988bc8112af0c8816c0" + integrity sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw== + +"@rollup/rollup-android-arm64@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz#bd1a98390e15b76eeef907175a37c5f0f9e4d214" + integrity sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew== + +"@rollup/rollup-darwin-arm64@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz#bc6fa8a2cc77b5f367424e5e994e3537524e6879" + integrity sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw== + +"@rollup/rollup-darwin-x64@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz#76059c91f06b17406347b127df10f065283b2e61" + integrity sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng== + +"@rollup/rollup-freebsd-arm64@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz#83178315c0be4b4c8c1fd835e1952d2dc1eb4e6e" + integrity sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw== + +"@rollup/rollup-freebsd-x64@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz#1ef24fa0576bf7899a0a0a649156606dbd7a0d46" + integrity sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w== + +"@rollup/rollup-linux-arm-gnueabihf@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz#443a6f5681bf4611caae42988994a6d8ee676216" + integrity sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A== + +"@rollup/rollup-linux-arm-musleabihf@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz#9738b27184102228637a683e5f35b22ea352394f" + integrity sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ== + +"@rollup/rollup-linux-arm64-gnu@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz#b5e9d5e30ff36a19bedd29c715ba18a1889ff269" + integrity sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA== + +"@rollup/rollup-linux-arm64-musl@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz#1d8f68f0829b57f746ec03432ad046f1af014a98" + integrity sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA== + +"@rollup/rollup-linux-loongarch64-gnu@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz#07027feb883408e74a3002c8e50caaedd288ae38" + integrity sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz#544ce1b0847a9c1240425e86f33daceac7ec4e12" + integrity sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w== + +"@rollup/rollup-linux-riscv64-gnu@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz#64be13d51852ec1e2dfbd25d997ed5f42f35ea6d" + integrity sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ== + +"@rollup/rollup-linux-s390x-gnu@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz#31f51e1e05c6264552d03875d9e2e673f0fd86e3" + integrity sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g== + +"@rollup/rollup-linux-x64-gnu@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz#f4c95b26f4ad69ebdb64b42f0ae4da2a0f617958" + integrity sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ== + +"@rollup/rollup-linux-x64-musl@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz#ab7be89192f72beb9ea6e2386186fefde4f69d82" + integrity sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA== + +"@rollup/rollup-win32-arm64-msvc@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz#7f12efb8240b238346951559998802722944421e" + integrity sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig== + +"@rollup/rollup-win32-ia32-msvc@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz#353d14d6eee943004d129796e4feddd3aa260921" + integrity sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng== + +"@rollup/rollup-win32-x64-msvc@4.29.1": + version "4.29.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz#c82f04a09ba481e13857d6f2516e072aaa51b7f4" + integrity sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg== + +"@types/estree@1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +esbuild@0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.0.tgz#f2d470596885fcb2e91c21eb3da3b3c89c0b55e7" + integrity sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ== + optionalDependencies: + "@esbuild/aix-ppc64" "0.24.0" + "@esbuild/android-arm" "0.24.0" + "@esbuild/android-arm64" "0.24.0" + "@esbuild/android-x64" "0.24.0" + "@esbuild/darwin-arm64" "0.24.0" + "@esbuild/darwin-x64" "0.24.0" + "@esbuild/freebsd-arm64" "0.24.0" + "@esbuild/freebsd-x64" "0.24.0" + "@esbuild/linux-arm" "0.24.0" + "@esbuild/linux-arm64" "0.24.0" + "@esbuild/linux-ia32" "0.24.0" + "@esbuild/linux-loong64" "0.24.0" + "@esbuild/linux-mips64el" "0.24.0" + "@esbuild/linux-ppc64" "0.24.0" + "@esbuild/linux-riscv64" "0.24.0" + "@esbuild/linux-s390x" "0.24.0" + "@esbuild/linux-x64" "0.24.0" + "@esbuild/netbsd-x64" "0.24.0" + "@esbuild/openbsd-arm64" "0.24.0" + "@esbuild/openbsd-x64" "0.24.0" + "@esbuild/sunos-x64" "0.24.0" + "@esbuild/win32-arm64" "0.24.0" + "@esbuild/win32-ia32" "0.24.0" + "@esbuild/win32-x64" "0.24.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +nanoid@^3.3.7: + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss@^8.4.49: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +rollup@^4.23.0: + version "4.29.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.29.1.tgz#a9aaaece817e5f778489e5bf82e379cc8a5c05bc" + integrity sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.29.1" + "@rollup/rollup-android-arm64" "4.29.1" + "@rollup/rollup-darwin-arm64" "4.29.1" + "@rollup/rollup-darwin-x64" "4.29.1" + "@rollup/rollup-freebsd-arm64" "4.29.1" + "@rollup/rollup-freebsd-x64" "4.29.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.29.1" + "@rollup/rollup-linux-arm-musleabihf" "4.29.1" + "@rollup/rollup-linux-arm64-gnu" "4.29.1" + "@rollup/rollup-linux-arm64-musl" "4.29.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.29.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.29.1" + "@rollup/rollup-linux-riscv64-gnu" "4.29.1" + "@rollup/rollup-linux-s390x-gnu" "4.29.1" + "@rollup/rollup-linux-x64-gnu" "4.29.1" + "@rollup/rollup-linux-x64-musl" "4.29.1" + "@rollup/rollup-win32-arm64-msvc" "4.29.1" + "@rollup/rollup-win32-ia32-msvc" "4.29.1" + "@rollup/rollup-win32-x64-msvc" "4.29.1" + fsevents "~2.3.2" + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +typescript@~5.6.2: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +vite-plugin-singlefile@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vite-plugin-singlefile/-/vite-plugin-singlefile-2.1.0.tgz#b22da5b005da05fd2742a3145e70c9a4ef7b5960" + integrity sha512-7tJo+UgZABlKpY/nubth/wxJ4+pUGREPnEwNOknxwl2MM0zTvF14KTU4Ln1lc140gjLLV5mjDrvuoquU7OZqCg== + dependencies: + micromatch "^4.0.8" + +vite@^6.0.3: + version "6.0.5" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.0.5.tgz#1d0fbdb3ffe61e944089abeddb7d2c509420acfd" + integrity sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g== + dependencies: + esbuild "0.24.0" + postcss "^8.4.49" + rollup "^4.23.0" + optionalDependencies: + fsevents "~2.3.3" + +websocket-ts@^2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/websocket-ts/-/websocket-ts-2.1.5.tgz#b6b51f0afca89d6bc7ff71c9e74540f19ae0262c" + integrity sha512-rCNl9w6Hsir1azFm/pbjBEFzLD/gi7Th5ZgOxMifB6STUfTSovYAzryWw0TRvSZ1+Qu1Z5Plw4z42UfTNA9idA==